第5章8086汇编语言程序设计.pptx
《第5章8086汇编语言程序设计.pptx》由会员分享,可在线阅读,更多相关《第5章8086汇编语言程序设计.pptx(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章主要内容 顺序程序设计顺序程序设计1 分支程序设计分支程序设计2 循环程序设计循环程序设计3第1页/共65页汇编语言程序设计概述8086汇编语言程序采用模块化结构,通常由一个主程序模块和多个子程序(过程)模块构成。对于简单程序,只有主程序模块,没有子程序模块。汇编语言程序有3种基本结构:顺序结构分支结构循环结构第2页/共65页程序的质量标准衡量程序的质量通常有以下几个标准:程序正确、完整;程序易读性强;程序的执行速度快;程序占内存小,程序代码的行数少。第3页/共65页汇编语言程序设计的基本步骤 分析问题,抽象出描述问题的数学模型;确定解决问题的算法或算法思想;程序模块划分在解决复杂实际问题
2、时,往往需要把它分成若干功能模块,在进行功能模块划分后,必须确定各功能模块间的通信问题;绘制各功能模块流程图或结构图;分配存储空间、寄存器等工作单元;第4页/共65页汇编语言程序设计的基本步骤(续)根据流程图,编写程序;静态检查,纠正错误;上机运行调试,纠正错误,直至测试通过;整理资料,建立完整的文档。第5页/共65页5.1顺序结构程序设计顺序结构程序又称简单程序。采用这种结构的程序,按照指令书写的顺序逐条执行,程序的执行路径没有分支和循环。第6页/共65页顺序结构程序设计举例【例5-2】编程将内存数据段字节单元INDAT存放的一个数n(假设0 n 9),以十进制形式在屏幕上显示出来。例如,若
3、INSTR单元存放的是数8,则在屏幕上显示:8D。第7页/共65页【例5-2】程序代码DATA SEGMENT ;数据段定义 INDAT DB 8DATA ENDSCODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX;初始化DS第8页/共65页【例5-2】程序代码(续)MOV DL,INDAT OR DL,30H MOV AH2 INT 21H MOV DL,D MOV AH,2 INT 21HMOV AH,4CH INT 21H CODE ENDS END START第9页/共65页5.2 分支结构程序设计
4、分支结构程序利用条件转移指令或跳转表,使程序执行完某条指令后,根据指令执行后状态标志的情况选择要执行哪个程序段。分支结构程序的指令执行顺序与指令的存储顺序不一致。转移指令JMP和Jcc可以实现分支结构。第10页/共65页分支结构的三种形式第11页/共65页单分支结构程序设计举例【例5-3】编写程序段,求AX中存放的带符号数的绝对值,结果存RES单元。CMP AX,0 JGE ISPOSITIVE NEGAXISPOSITIVE:MOV RES,AX 本例采用的是单分支结构。特点是:条件成立时程序跳转;否则,顺序执行。第12页/共65页双分支结构程序设计举例【例5-4】编程判断DAT单元存放的带
5、符号数的正负。如该数为负数,则显示“DAT is a negative number!”;否则显示“DAT is a nonnegative number!”。第13页/共65页【例5-4】(续)DATA SEGMENT ;数据段定义 N DB DAT is a negative number!,$NN DB DAT is a nonnegative number!$DATA ENDSCODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX ;设置DS第14页/共65页【例5-4】(续)MOV AX,-3 CMP
6、 AX,0 JGE ISNN LEA DX,N MOV AH,9 INT 21H JMP FINISH第15页/共65页【例5-4】(续)ISNN:LEA DX,NN MOV AH,9 INT 21HFINISH:MOV AH,4CH INT 21HCODE ENDS END START第16页/共65页【例5-4】(续)【例5-4】采用的是双分支结构。采用这种结构时,特别要注意第一个分支后要利用JMP指令(程序第16行)使程序跳转到第二个分支的后面。总结:首先除第一分支外,第二分支和出口位置用标号标名第一分支结束时后要加JMP指令使程序跳转到出口位置第17页/共65页多分支结构程序设计举例【
7、例5-5】编程求分段函数Y的值。已知变量X为16位带符号数,分段函数的值要求保存到字单元Y中。函数定义如下:第18页/共65页【例5-5】(续)DATA SEGMENT ;数据段定义 X DW -128 Y DW?DATA ENDSCODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第19页/共65页【例5-5】(续)MOV AX,X CMP AX,0 JG ISPN JZ ISZN MOV Y,-1 JMP FINISHISPN:MOV Y,1 JMP FINISHISZN:MOV Y,0第20页/共65
8、页【例5-5】(续)FINISH:MOV AH,4CHINT 21HCODEENDS END START本例实现的是多分支结构。设计多分支结构程序时,应注意:要为每个分支安排出口;各分支的公共部分尽量集中,以减少程序代码;无条件转移没有范围的限制,但条件转移指令只能在-128+127字节范围内转移;调试程序时,要对每个分支进行调试。第21页/共65页总结:首先除第一分支外,其它的每个分支和出口位置用标号标名除最后一个分支外,其它分支结束时后要加JMP指令使程序跳转到出口位置多分支程序设计结构多分支程序设计结构第22页/共65页5.2 循环结构程序设计当程序处理的问题需要包含多次重复执行某些相同
9、的操作时,在程序中可使用循环结构来实现.用同一组指令,每次替换不同的数据,反复执行这一组指令。使用循环结构,可以缩短程序代码,提高编程效率。第23页/共65页循环结构程序的组成-3个部分(1)初始化部分循环的准备部分。完成地址指针、循环计数、结束条件等初值的设置。(2)循环体-2个部分循环工作部分:是循环程序的主体。循环修改部分:为了保证每一次循环重复时,参加执行的信息能发生规律的变化而建立的程序段。(3)循环控制部分根据预先设定的循环次数或条件,判断下一次循环是否要继续进行,从而保证循环正常执行。第24页/共65页循环体的组成循环工作部分:是循环程序的主体。完成程序的基本操作。循环多少次,这
10、部分语句就执行多少次。循环修改部分:修改循环工作部分的变量、地址等,保证每次循环参加执行的数据能发生有规律的变化。举例:高级语言程序段 I=1:SUM=0 DO SUM=SUM+I I=I+1WHILE I10第25页/共65页循环程序结构第26页/共65页设计循环结构程序时,要注意的问题:选用计数循环还是条件循环?采用直到型循环结构还是当型循环结构?要综合考虑循环执行的条件和循环退出的条件:可以用循环次数、计数器、标志位、变量值等多种方式来作为循环的控制条件特别注意:不要把初始化部分放到循环体中。循环体中要有能改变循环条件的语句。第27页/共65页使用LOOP,LOOPZ,LOOPNZ时均为
11、相对寻址,跳转地址必须在IP+128ip-128之间。否则可用JMP与三循环指令结合控制循环。LOP:.LOOP ANETJMP BNETANET:JMP LOPBNET:第28页/共65页循环结构程序设计举例【例5-6】编程显示以“!”结尾的字符串。如:“Welcome to MASM!”。只知道循环结束的条件是该字符串以“!”结束,不知道字符串的长度,所以,可用条件控制的方法来控制循环的次数。第29页/共65页【例5-6】(续)DATA SEGMENT MYSTR DB Welcome to MASM!DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA
12、START:MOV AX,DATA MOV DS,AX第30页/共65页【例5-6】(续)LEA SI,MYSTRNEXTCHAR:MOV DL,SIMOV AH,2INT 21HCMP DL,!JZ FINISHINC SIJMP NEXTCHAR第31页/共65页【例5-6】(续)FINISH:MOV AH,4CHINT 21HCODE ENDS END START第32页/共65页计数循环程序【例5-6】将内存数据段INSTR地址开始存放的一个由字母组成的字符串中的小写字母全部转换成大写字母(其余字符不变)后存至内存数据段OUTSTR地址处。如原字符串是“hello ASM!201106
13、01”,那么转换完后应该是“HELLO ASM!20110601”。第33页/共65页【例5-6】(续)DATA SEGMENT INSTR DB hello ASM!20110601STRLEN EQU$-INSTR OUTSTR DB STRLEN DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX第34页/共65页【例5-6】(续)LEA SI,INSTRLEA DI,OUTSTRMOV CX,STRLENNEXTCHAR:MOV AL,SICMP AL,aJB UNCHG;不是小写字母
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 汇编语言 程序设计
限制150内