汇编 算术运算指令.

上传人:我** 文档编号:117858139 上传时间:2019-12-11 格式:PPT 页数:57 大小:333KB
返回 下载 相关 举报
汇编 算术运算指令._第1页
第1页 / 共57页
汇编 算术运算指令._第2页
第2页 / 共57页
汇编 算术运算指令._第3页
第3页 / 共57页
汇编 算术运算指令._第4页
第4页 / 共57页
汇编 算术运算指令._第5页
第5页 / 共57页
点击查看更多>>
资源描述

《汇编 算术运算指令.》由会员分享,可在线阅读,更多相关《汇编 算术运算指令.(57页珍藏版)》请在金锄头文库上搜索。

1、3.3.2 数据运算类 加法指令 减法指令 乘法指令 除法指令 十进制调整指令 1 一、加法指令 加法指令: ADD DST, SRC ; (DST) (SRC) + (DST) 带进位加法指令: ADC DST, SRC ; (DST) (SRC) + (DST) + CF 加1指令: INC OPR ; (OPR) (OPR) + 1 注意: * 加法指令对条件标志位(CF/OF/ZF/SF)有影响 * 除INC指令不影响CF标志外,均对条件标志位 有影响。 2 CF:最高位向上是否有进位,如有则CF=0,否则CF=1 OF:溢出标志,如有溢出则OF=0,否则OF=1,当具有相同符号的 两

2、个数相加,结果与其相反,则溢出 SF:符号标志,结果为负则SF=1,为正则SF=0 ZF:零标志,用于判断结果是否为零,如果是零则ZF=1,不是零则 ZF=0 3 1 ADD DX , F0F0H 执行前: (DX)=4652H 则指令执行后(DX),CF,OF,ZF,SF各为多少? 执行后: (DX)=3742H ZF=0,SF=0,CF=1,OF=0 2、 ADD AX,BX 执行前: (AX)=9568H,(BX)=1000H ,(DS)=2000H (21000)=A3B4 则指令执行后(AX),CF,OF,ZF,SF各为多少? 执行后: (AX)=391CH ,CF=1,OF=1,Z

3、F=0, SF=0 4 如: 将22000H和23000H开始的4个字节相加,和送存24000H开始的 单元。(高位对应高地址,低位对应低地址) MOV AX,2000H ;置段地址 MOV DS,AX MOVES,AX MOVSI,2000H ;置被加数首址 MOVDI,3000H ;置加数首址 MOVBX,4000H ;置和首址 MOVAX,SI ;取被加数低16位 ADDAX,DI ;低16位部分和 MOVBX,AX ;存低16位部分和 MOVAX,SI+2;高16位计算 ADCAX,DI+2 MOVBX+2,AX MOVAX,0 ;取高位进位 ADCAX,0 MOVBX+4,AX 5

4、例:双精度数的加法 DX= 0002H AX= 0F365H BX= 0005H CX= 0E024H 指令序列 (1) ADD AX, CX (2) ADC DX, BX (1) 执行后, AX= 0D389H CF=1 OF=0 SF=1 ZF=0 (2) 执行后, DX= 0008H CF=0 OF=0 SF=0 ZF=0 6 交换并相加指令 格式: XADD DST,SRC 操作:( TEMP) (SRC)+(DST) (SRC) (DST) (DST) (TEMP) 注意:源操作数只能用寄存器寻址方式,目的操作数可用寄存器和 存储器寻址方式中的任何一种寻址方式。 例: XADD BL

5、,DL 执行前: (BL)=12H ,(DL)=02H 执行后: (BL)=14H, (DL)=12H 7 二、减法指令 减法指令: SUB DST, SRC ;(DST) (DST) - (SRC) 带借位减法指令: SBB DST, SRC ;(DST) (DST) - (SRC) - CF 减1指令: DEC OPR ; (OPR) (OPR) - 1 求补指令: NEG OPR ; (OPR) (OPR+1) 比较指令: CMP OPR1, OPR2 ;(OPR1) - (OPR2) 注意: * 减法指令对条件标志位(CF/OF/ZF/SF)有影响 * 除DEC指令不影响CF标志外,均

6、对条 件标志位有影响。 8 1、对OF标志位的判断,当具有不同符号的两个数相减,结果的 符号与减数符号相同则溢出,否则不溢出 2、对于求补指令,只有当操作数为0时,求补结果使得CF=0, 其他情况均为1 9 1 SUB SI+14H,0136H 执行前: (DS)=3000H,(SI)=0040H,(30054H)=4336H 则指令执行后(30054H),CF,OF,ZF,SF各为多少? 执行后: (30054)=4200H ZF=0,SF=0,CF=0,OF=0 2、 SUB DH ,BP+4 执行前: (DH)=41H,(SS)=0000H ,(BP)=00E4H (00E8)=5AH

7、则指令执行后(00E8),CF,OF,ZF,SF各为多少? 执行后: (00E8)=0E7H ,CF=1,OF=0,ZF=0, SF=1 10 例:双精度数的减法 DX= 0012H AX= 0F365H BX= 0005H CX= 0E024H 指令序列 (1) SUB AX,CX (2) SBB DX, BX (1) 执行后, AX=1341H CF=0 OF=0 SF=0 ZF=0 (2) 执行后, DX= 0006H CF=0 OF=0 SF=0 ZF=0 11 设:X,Y,Z均为双精度数,他们分别存放在X,X+2,Y,Y+2, Z,Z+2的存储单元,高地址存放高字,低地址存放低字,用

8、指令序 列实现w X+Y+24-Z MOV AX,X ; MOV DX,X+2 ; ADD AX,Y ; ADC DX,Y+2 ; ADD AX,24 ; ADC DX,0 ; SUB AX,Z ; SBB DX,Z+2 ; MOV W ,AX ; MOV W+2 DX ; X+Y +24 -Z 结果存 W 12 比较并交换指令 格式: CMPXCHG DST,SRC 操作:如(AC)=(DST) 则ZF 1,(DST) (SRC) 否则 ZF 0,(AC) (DST) 注意:源操作数只能是寄存器,目的操作数可用寄存器和存 储器寻址方式中的任何一种寻址方式。 13 三、 乘法指令 无符号数乘法

9、指令: MUL SRC ;字节操作数 AX AL (SRC) ;字操作数 DX, AX AX (SRC) 带符号数乘法指令: IMUL SRC 注意: * AL(AX)为隐含的乘数寄存器。 * AX(DX,AX)为隐含的乘积寄存器。 * SRC不能为立即数。 * 除CF和OF外,对条件标志位无定义。 14 例:AX = 16A5H,BX = 0611H (1) IMUL BL ; AX AL BL ; A5H 11H 5BH 11H=060B F9F5H ; AX = 0F9F5H CF=OF=1 说明:乘积高一半是低一半的符号扩展 CF=OF=0;否则CF=OF=1 (2) MUL BX ;

10、 DX, AX AX BX ; 16A5H 0611H=0089 5EF5H ; DX = 0089H AX = 5EF5H CF=OF=1 说明:乘积高一半为0 CF=OF=0;否则CF=OF=1 A5H对应原码的绝对值 再求补码 15 例:如(AL)=0B4H,(BL)=11H,求执行指令IMUL BL, 和MUL BL之后的乘积。 (AL)=0B4H,为无符号数的180D,带符号数的-76D (BL)=11H,为无符号数的17D,带符号数的17D 1、 IMUL BL 执行后: (AX)=0FAF4H=-1292D ,CF=OF=1 2、MUL BL 执行后: (AX)=0BF4H=30

11、60D,CF=OF=1 16 四、除法指令 无符号数除法指令: DIV SRC ; 字节操作 AL AX / (SRC) 的商 AH AX / (SRC) 的余数 字操作 AX DX, AX / (SRC) 的商 DX DX, AX / (SRC) 的余数 带符号数除法指令: IDIV SRC 注意: * AX (DX,AX)为隐含的被除数寄存器。 * AL (AX)为隐含的商寄存器。 * AH (DX)为隐含的余数寄存器。 * SRC不能为立即数。 * 对所有条件标志位均无定义。 17 例:设(AX)=0400H,(BL)=0B4H,求执行DIV BL和 IDIV BL后寄存器的变化。 (A

12、X)为无符号数的1024D,带符号数的+1024D (BL)为无符号数的180D,带符号数的-76D 1、DIV BL 执行后: (AL)=05H=5D 商 (AH)=7CH=124D 余数 2、IDIV BL 执行后: (AL)=0F3H=-13D 商 (AH)=24H=36D 18 例:算术运算综合计算: (V-(X*Y+Z-540)/X,其中X,Y,Z,V均为16位 带符号数,已分别装入X,Y,Z,V存储单元,要求计算上式结果的商存入AX, 余数存入DX。 MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,

13、DX SUB CX,540 SBB BX,0 MOV AX,V CWD SUB AX,CX SBB DX,BX IDIV X 19 五、十进制调整指令 压缩的BCD码:用4位二进制数表示1位十进制数 例:(59)10 (0101 1001)BCD 非压缩的BCD码:用8位二进制数表示1位十进制数 例:(59)10 (0000 0101 0000 1001)BCD 数字的ASCII码是一种非压缩的BCD码 DIGIT ASCII BCD 0 30H0000 0000 1 31H0000 0001 2 32H0000 0010 9 39H0000 1001 20 加法的十进制调整指令:DAA ;(AL) (AL)压缩BCD 减法的十进制调整指令:DAS ;(AL) (AL)压缩BCD 注意: * 隐含的操作寄存器为AL * 紧接在加减指令之后使用

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

当前位置:首页 > 高等教育 > 大学课件

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