51基本汇编语言程序设计.ppt
文本预览下载声明
汇编语言程序设计 计算机系 第5章基本汇编语言程序设计 第5章 基本汇编语言程序设计 5.1 顺序程序设计 5.2 分支程序设计 5.3 循环程序设计 本章要点及习题分析 5.1顺序程序设计(e) 5.1 顺序程序设计 指令按程序中的书写顺序逐条执行,称为顺序程序。除非编程解决非常简单的问题,顺序程序并不多见,但是顺序程序往往是复杂程序结构的一部分,如分支结构的一个分支,循环结构的循环体等。 例5.1 例5.1:设有3个字变量x,y和z,求出三者之和,结果存入字变量w。 DATAS SEGMENT X dw 5 Y dw 6 Z dw 7 W dw ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX 【例5-3】 将一个字节压缩BCD码转换为两个ASCII码。 分析:一个字节的压缩BCD码就是用一个字节的二进制数表示两位十进制数,如十进制数96表示成压缩BCD码就是96H,转换成ASCII码就是把压缩BCD码表示的十进制数的高位和低位分开,并以ASCII码表示,即转换成39H和36H。 DATA SEGMENT BCDBUF DB 96H ;定义1个字节的压缩BCD码 ASCBUF DB 2 DUP(?) ;定义2个字节的结果单元 DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA START: MOV AX,DATA MOV DS,AX MOV AL,BCDBUF ;取出BCD码 MOV BL,AL ;送BL暂存 MOV CL,4 SHR AL,CL ;高4位变成低4位,高4位补0(96H→09H) ADD AL,30H ;变成ASCII码(39H) MOV ASCBUF,AL;存储第1个ASCII码 AND BL,0FH ;屏蔽掉高4位,只保留低4位(96H→06H) ADD BL,30H ;变成BCD码(36H) MOV ASCBUF+1,BL ;存储第2个码 MOV AH,4CH INT 21H CODE ENDS END START 【例5-4】 利用直接查表法完成将键盘输入的一位10进制数(0~9)转换成对应的平方值并存放在SQRBUF单元中。 分析:0~9的平方值分别为0、1、4、9、16、25、36、49、64、81。把平方值放在一起形成一个平方值表,根据输入的值和对应平方值所在单元地址之间的关系(表首地址加上输入的值),查出相应的平方值。 DATA SEGMENT SQUTAB DB 0,1,4,9,16,25,36,49, 64,81 SQUBUF DB ? DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET SQUTAB ;平方表首地址 MOV AH,1 INT 21H ;由键盘输入—个数,得到其ASCII码 SUB AL,30H ;由ASCII码得到相应的数 XLAT ;查表 MOV SQUBUF,AL ;存储结果 MOV AH,4CH INT 21H CODE ENDS END START 5.2分支程序设计 4.2 分支程序设计 条件转移指令Jcc和无条件转移指令JMP用于实现程序的分支结构,JMP不测试条件,Jcc可根据条件是否成立决定转移到指定位置或不转移而顺序执行后续指令。由于Jcc不支持条件表达式,而是以当前标志位的状态为条件,故Jcc之前一定要安排设置标志位的指令,如加减法、比较、测试等指令。基本分支类型分为单分支和双分支。 单分支 单分支 双分支 2.双分支程序 双分支 双分支举例:显示BX的最高位。 shl bx,1 jc one ;转分支体 mov dl,’0’ ;分支体1 jmp next ;转后续操作 One: mov dl,’1’ ;分支体2 next: mov ah,2 ;后续操作 int 21h 3.分支程序
显示全部