第4章-3微机原理_第1页
第4章-3微机原理_第2页
第4章-3微机原理_第3页
第4章-3微机原理_第4页
第4章-3微机原理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章汇编语言程序结构4.1初步涉及汇编语言程序

4.2汇编语言伪指令

4.3汇编语言程序的上机过程

4.4DOS系统功能调用

4.5汇编语言程序设计

14.5汇编语言程序设计一、概述二、顺序程序设计三、分支程序设计四、循环程序设计五、中断功能调用的程序设计六、子程序设计汇编语言同高级语言一样,源程序的设计也有4大基本结构形式(顺序结构、分支结构、循环结构和子程序)。在实际的汇编程序设计中,单纯的一种结构程序并不多见,大多数都是多种结构的组合

24.5汇编语言程序设计一、顺序结构程序设计

顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构主要用到数据传送类指令、算术运算类指令、逻辑运算和移位类指令

3例1实验3顺序程序设计4.5汇编语言程序设计一、实验目的学习数据传送和算术运算指令的用法熟悉建立、汇编、连接、调试汇编程序的过程二、实验内容调试参考程序,指出程序运行后BUF2、BUF3、BUF4定义开始的单元存放的数据。三、实验步骤:1、进入EDIT,输入源程序,存盘退出2、编译:MASM*.ASM3、连接:LINK*.OBJ4、进入DEBUG对程序进行单步调试,观察运行结果DEBUG*.EXE4STACKSEGMENTDB200DUP(0)STACKENDSDATASEGMENTBUF1DB1,2,3,4,5,6,7,8,9BUF2DB10DUP(0)BUF3DB10DUP(0)BUF4DB10DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK5START:MOVAX,DATAMOVDS,AX MOVSI,OFFSETBUF1 MOVDI,OFFSETBUF2MOVBX,OFFSETBUF3MOVBP,OFFSETBUF4MOVCX,106AGAIN:MOVAL,[SI]MOV[DI],ALINCALMOV[BX],AL ADDAL,3MOVDS:[BP],ALINCDIINCSIINCBXINCBPLOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART74.5汇编语言程序设计二、分支结构程序设计

分支程序根据条件是真或假决定执行与否,判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志与条件转移指令Jcc联合可以实现分支控制用无条件转移指令JMP也可以实现分支控制。汇编语言中的分支通常有三种形式:

IF-THEN型:也称单分支结构IF-THEN-ELSE型:也称双分支结构DO-CASE型:也称多分支结构

84.5汇编语言程序设计掌握:分支程序设计要领

91、例4.13分支程序设计例子。编程求|X-Y|,结果存于RESULT单元中,设X和Y都为16位数。DATASEGMENTX

DW-10Y

DW20RESULTDW?DATAENDSSTACKSEGMENTSTACK

DB100DUP(?)STACKENDSCODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACKSTART:

MOVAX,DATA

MOVDS,AX

MOVAX,X

SUBAX,YJNSNONNEGNEGAXNONNEG:MOVRESULT,AXMOVAH,4CHINT21HCODEENDS

END

START104.5汇编语言程序设计三、循环程序设计1、循环程序的结构形式根据循环的层次不同,汇编循环程序分为单重循环和多重循环根据循环次数是否已知,常用的循环控制方式通常有计数控制与条件控制114.5汇编语言程序设计2、循环结构程序设计举例dataSEGMENTRESULTDW?dataENDScodeSEGMENTASSUMECS:code,DS:dataSTART: MOVAX,data MOVDS,AX (1)计数控制举例。编程计算1+2+3+…+50的和,结果送

RESULT单元

MOVAX,1 MOVRESULT,0 MOVCX,50CLCNEXT: ADCRESULT,AX INCAX

LOOPNEXT MOVAH,4CH INT21HcodeENDS ENDSTART12DATA SEGMENTPOSITION DW ?STRING DB “Thisisastringforexample.”,0DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX[例4-9]查找字母’a’在字符串STRING中第一次出现的位置,

如果未出现,置位置值为-1。(字符串长度<30)13

MOV SI,-1 ;SI用作字符串字符指针

MOV CX,30 ;字符串长度30L0: INC SI ;修改指针

CMP STRING[SI],‘a’ ;一个字符与’a’进行比较

LOOPNE L0 ;字符串未结束,未找到,继续

JNE NOTFOUND ;未找到,转“NOTFOUND” MOV POSITION,SI ;保存位置值

JMP EXITNOTFOUND:MOV POSITION,-1 ;未找到,置位置值为-1EXIT: MOV AX,4C00H INT 21HCODE ENDS END START14

字符串内找到字符’a’:循环结束时ZF=1,SI内是字符的出

现位置(从0开始);字符串内未找到字符’a’:循环结束时ZF=0,SI内是字符串

的长度减1(30-1=29)。程序使用LOOPNE指令来控制循环,既有计数控制,又有条件控制。循环结束有两种可能性:

对于LOOPZ/LOOPE,LOOPNZ/LOOPNE控制的循环,一般应在循环结束后用条件转移指令分开这两种情况,分别处理。154.5汇编语言程序设计3、多重循环程序设计举例。

实验4循环程序设计-排序程序一、实验目的掌握循环结构的程序设计方法;了解排序程序的设计思路,掌握其编程方法二、实验内容在地址为ADDR开始的单元中存放着10个无序的无符号数,要求按降序排列,大数在前,小数在后,结果仍放在原处。三、实验步骤1、进入EDIT编辑状态,输入源程序,存盘退出。2、用MASM编译程序,检查错误3、用LINK连接程序,生成.EXE文件4、进入DEBUG单步调试程序,观察程序执行过程,内外层循环如何嵌套执行,并检查程序最终执行结果是否正确。164.5汇编语言程序设计DATASEGMENTADDRDB6,2,9,1,5,0,7,8,3,4DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX MOVCX,10-1;设置计数初值

LEASI,ADDRLOP1:MOVDX,CX;设置内循环计数器

MOVDI,SI;设置内循环地址指针

MOVAL,[DI];取数送AL 174.5汇编语言程序设计LOP2:INCDICMPAL,[DI]JAENEXT;若AL>[DI]中的数,转NEXTMOVBL,ALMOVAL,[DI]MOV[DI],BL;否则,AL和[DI]数据交换NEXT:DECDXJNZLOP2;未完转LOP2MOV[SI],AL;保存比较出的第一个大数

INCSI;调整外循环地址指针

LOOPLOP1MOVAH,4CHINT21HCODEENDSENDSTART184.5汇编语言程序设计4、应用串指令编写循环程序datasegments1db100dup(66h)s2db100dup(00)dataendscodesegmentassumecs:code,ds:data,es:datastart:movax,datamovds,axmoves,ax

leasi,s1leadi,s2movcx,100cld

repmovsbmovah,4chint21hcodeendsendstart(1)MOVS传送例子。用带重复前缀的串操作指令实现194.5汇编语言程序设计六、子程序设计

子程序的设计,是程序设计中被广泛使用的一种方法。它的使用方式较多,运用十分灵活,涉及面也较广,需要掌握好基本的子程序设计方法。子程序是程序中功能相对独立的一段程序。在汇编语言中,子程序又称过程。程序中使用子程序的好处子程序作为一个功能性模块,供一个程序甚至多个程序使用:可以简化源程序结构;提高程序的可读性与可维护性;有利于代码复用;提高程序的设计效率。20由子程序定义伪指令PROC和ENDP完成格式:

子程序名

PROC[NEAR/FAR]┆;过程体

子程序名

ENDP解释:子程序名是子程序入口地址的符号表示。同标号一样,具有三种属性,即段属性、偏移地址属性以及类型属性PROC表示子程序定义开始,ENDP表示子程序定义结束

NEAR/FAR1、子程序的定义4.5汇编语言程序设计212、子程序的调用和返回过程定义后,可在主程序中用CALL指令,反复调用。过程结束,由返回指令RET返回主程序。4.5汇编语言程序设计强调:在使用时应注意的问题

SUBPPROCPUSHAX;现场保护PUSHBXPUSHCX

┇;子程序主体POPCX;恢复现场POPBXPOPAX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论