(OK)第6讲运算类指令及顺序结构设计

上传人:豆浆 文档编号:29817838 上传时间:2018-01-25 格式:PDF 页数:53 大小:2.90MB
返回 下载 相关 举报
(OK)第6讲运算类指令及顺序结构设计_第1页
第1页 / 共53页
(OK)第6讲运算类指令及顺序结构设计_第2页
第2页 / 共53页
(OK)第6讲运算类指令及顺序结构设计_第3页
第3页 / 共53页
(OK)第6讲运算类指令及顺序结构设计_第4页
第4页 / 共53页
(OK)第6讲运算类指令及顺序结构设计_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《(OK)第6讲运算类指令及顺序结构设计》由会员分享,可在线阅读,更多相关《(OK)第6讲运算类指令及顺序结构设计(53页珍藏版)》请在金锄头文库上搜索。

1、第六讲运算类指令及顺序结构设计微机原理与汇编语言程序设计陈梅主讲华东交通大学信息工程学院本讲教学重点及要求算术运算类指令的格式与应用逻辑运算类指令的格式与应用汇编语言程序设计的基本步骤顺序程序的基本结构和实例 逻辑运算逻辑运算 算术运算算术运算 加法指令ADD、ADC、INC 减法指令SUB、SBB、DEC、NEG、CMP 乘法指令MUL、IMUL 除法指令DIV、IDIV、CBW、CWD BCD码调整指令DAA、AAADAS、AAS算术运算类指令说明: 双操作数指令的两个操作数除源操作数为立即数的情况外,必须有一个是寄存器操作数。 单操作数指令不允许使用立即数和段寄存器作为操作数。 所有算术

2、运算指令都会影响标志位。总的来说有:运算结果向前产生进位或借位时,CF=1最高位向前进位和次高位向前进位不能同时产生时,OF=1如果运算结果为0,ZF=1如果运算结果最高位为1,SF=1如果运算结果中有偶数个1,PF=1功能:(DST)(SRC)+(DST)1)ADD 加法指令格式:格式:ADD DST, SRC(1) 加法指令功能:(DST)(SRC)+(DST)+CF2)ADC 带进位加法指令格式:格式:ADC DST, SRC例. 在8086模式下,实现32位无符号整数的加法,设目的操作数存放在DX和AX寄存器中,其中DX存放高位字;源操作数存放在BX、CX中,其中BX存放高位字。(DX

3、) = 0002H, (AX) = 0F365H, (BX) = 0005H, (CX) = 0E024H指令序列为:ADD AX, CXADC DX, BX 手工: 0002 F365 DX:AX+ 0005 E024 BX:CX0008 D389 DX:AX例. ADD DX,0F0F0H ;执行前(DX) = 4652H4652 0100 0110 0101 0010+ F0F0 + 1111 0000 1111 00000011 0111 0100 00101 (DX)=3742H,ZF=0,SF=0,CF=1,OF=0功能:(OPR)(OPR)+13)INC 加1指令格式:格式:IN

4、C OPR例. ;执行前(AX) = 8652HADD AX,5647H ADC AX,1234HMOV AX,0FFFFHINC AX上述每条语句执行后,SF / ZF / CF / OF = ?注意上述加法类指令中:* 除INC 指令不影响CF 标志外,均对条件标志位有影响。(2) 减法指令1)SUB 减法指令格式:格式:SUB DST, SRC功能:(DST)(DST)-(SRC)2)SBB 带借位减法指令格式:格式:SBB DST, SRC功能:(DST)(DST)-(SRC)-CF3)DEC 减1指令格式:格式:DEC OPR功能:(OPR)(OPR) - 14)NEG 求补指令格式

5、:格式:NEG OPR功能:操作数按位求反加1。(OPR)0 - (OPR)说明:针对有符号数,相当于符号取反;说明:该指令相减,但不保存结果,只是根据结果设置条件标志位,其后常接一条件转移指令,根据比较结果产生不同的程序分支。5)CMP 比较指令格式:格式:CMP OPR1, OPR2功能:(OPR1) - (OPR2)NEG 指令对CF / OF 的影响:0 操作数为01 其他情况CF =1 操作数为-128 (字节80H)或操作数为-32768 (字8000H)0 其他情况OF =注意上述减法类指令中: * 除DEC 指令不影响CF 标志外,均对条件标志位有影响。MOV AX,XMOV

6、DX,X+2ADD AX,YADC DX,Y+2ADD AX,24ADC DX,0SUB AX,ZSBB DX,Z+2MOV W,AXMOV W+2,DXX+Y+24-Z结果送W,W+2例. 设X, Y, Z均为双精度数,它们分别存放在地址为(X、X+2)、(Y、Y+2)、(Z、Z+2)的存储单元中,存放时高位字在高地址中,低位字在低地址中,写出实现下面表达式的指令:X+Y+24-ZW(3) 乘法指令1)MUL 无符号数乘法格式:格式:MUL OPR功能:字节操作AX (AL)*(OPR)字操作DX:AX (AX)*(OPR)说明:)双操作数指令,隐含操作数为AL或AX;)目的操作数隐含,为A

7、X 或DX:AX;)操作数OPR不能为立即数;)如果乘积的高一半是0,则CF=0,OF=0;否则CF=1,OF=1。2)IMUL 有符号乘指令格式:格式:IMUL OPR功能:字节操作AX (AL)*(OPR)字操作DX:AX (AX)*(OPR)说明:)双操作数指令,隐含操作数为AL或AX;)目的操作数隐含,为AX 或DX:AX;)操作数OPR不能为立即数;)如果乘积的高一半是低一半的符号扩展,则CF=0,OF=0;否则CF=1,OF=1。例:如(AL)=0B4H,(BL)=11H,求执行指令IMUL BL和MUL BL的乘积值.答:(AL)=0B4H为无符号数的180D,带有符号数的-76

8、D,(BL)=11H 为无符号数的17D, 带有符号数的17D.执行IMUL BL的结果为(AX)=0FAF4H=-1292D, CF=OF=1执行MUL BL的结果为(AX)=0BF4H=3060D, CF=OF=1例. 写出双字乘以字的指令.设双字存放在X和X+2单元中, 字存放在Y单元中,结果放在Z、Z+2、Z+4单元中。.1365null121638013 65null12 null12156 78015600 (13*12*100) + 780 (65*12)16380MOV AX, X ;将X的低位送AXMUL Y ;低位的乘法MOV Z, AX ;保存结果MOV Z+2, DXM

9、OV AX, X+2 ;将X的高位送AXMUL Y ;(X+2)*YADD Z+2, AXADC Z+4, DX(4) 除法指令1)DIV 无符号除指令格式:格式:DIV OPR功能:字节操作(AX)/(OPR) AL 商,(AX)/(OPR) AH 余数字操作(DX:AX)/(OPR) AX 商,(DX:AX)/(OPR) DX 余数说明:)双操作数指令,隐含操作数为AX 或DX:AX ;)目的操作数隐含,为AL/AH 或AX/DX;)操作数OPR不能为立即数;)被除数高位的值大于等于除数,除法溢出。例. 设(AX) = 039DH,(CH) = 3H,则DIV CH时商大于255,超过(A

10、L)所能表示的最大无符号数,溢出。2)IDIV 有符号除指令格式:格式:IDIV OPR功能:字节操作(AX)/(OPR) AL 商,(AX)/(OPR) AH 余数字操作(DX:AX)/(OPR) AX 商,(DX:AX)/(OPR) DX 余数说明:)双操作数指令,隐含操作数为AX 或DX:AX ;)目的操作数隐含,为AL/AH 或AX/DX;)操作数OPR不能为立即数;)余数和被除数同号;)被除数高位的绝对值大于等于除数绝对值,除法溢出。* 符号扩展指令3)CBW 字节 字扩展指令格式:格式:CBW功能:将AL中的字节类型数据符号扩展为AX中的字类型数据。操作:若(AL) 最高有效位为0

11、,则( AH ) = 00H若(AL) 最高有效位为1,则( AH ) = 0FFH4)CWD 字 双字扩展指令格式:格式:CWD功能:将AX中的字类型数据符号扩展为DX:AX中双字类型数据。操作:若(AX) 的最高有效位为0,则( DX ) = 0000H若(AX) 的最高有效位为1,则( DX ) = 0FFFFH例. 编程实现0F252H/20H,为无符号数除法.MOV AX, 0F252H ;被除数送AXMOV DX, 0 ;被除数高16位置0MOV BX, 20H ;除数送BXDIV BX ;相除注意:符号扩展指令隐含对AL 或AX 进行符号扩展,且不影响条件标志位。只应用于有符号数

12、的扩展,无符号数进行扩展,只需在高位补0即可。例. 计算-32768 null30 =MOV AX, 8000H ;补码CWD ;符号扩展AXMOV CX, 30IDIV CX例. 计算(A*B+C)/A,其中A、B、C均为16位有符号数,已分别装入A、B、C单元中。MOV AX, A ;取运算数AIMUL B ;实现A*B,结果放在DX:AX中MOV CX, AX ;暂存AX, DXMOV BX, DXMOV AX, C ;取运算数CCWD ;扩展运算数符号位到DXADD AX, CX ;实现A*B+CADC DX, BXIDIV A ;AX存商,DX存余数(5) BCD码调整指令压缩的BC

13、D码调整用DAA (加法调整)、DAS (减法调整)非压缩的BCD码调整用AAA (加法调整) 、AAS (减法调整)压缩的BCD 码:用4 位二进制数表示1 位十进制数例:( 59 ) 10 ( 0101 1001 ) BCD非压缩的BCD 码:用8 位二进制数表示1 位十进制数例:( 59 ) 10 ( 0000 0101 0000 1001 ) BCD1)DAA 压缩BCD码加法调整指令格式:格式:DAA功能:将AL中的数值调整为压缩BCD码: 如果AL的低4位大于9,或AF=1,则AL(AL) + 06H,AF1;如果AL的高4位大于9,或CF=1,则AL(AL) + 60H,CF 1

14、。说明:)有操作数指令,隐含操作数为AL ;)影响除OF外其他标志位。例. (AL) = 59H,(BL) = 46HADD AL, BL ; (AL) = 9FH, AF=0, CF=0DAA ; (AL) = 05H, AF=1, CF=12)AAA 非压缩BCD码加法调整指令格式:格式:AAA功能:将AL中的数值调整为未压缩BCD码: 如果AL的低4位大于9,或者AF=1,则AH(AH)+1,AL(AL)+6,AF1;清除AL的高4位; CFAF 。说明:有操作数指令,隐含操作数为AH和AL 例. (AX) = 0595H,(BL) = 09HADD AL, BL ; (AL) = 9EH, AF=1, CF=0AAA ; (AL) = 04H, (AH)=06H, AF=1, CF=1;即AX=0604H3)DAS 压缩BCD码减法调整指令格式:格式:DAS功能:将AL中的数值调整为压缩BCD码: 如果AL的低4位大于9,或AF=1,则AL(AL) 06H,AF1;如果AL的高4位大于9,或CF=1,则AL(AL) - 60H,CF 1。说明:)有操作数指令,隐含操作数为AL ;)影响除OF外其他标志位。例. (AL) = 51H,(BL) = 39HSUB AL, BL ; (AL) = 1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号