算术运算类课件_第1页
算术运算类课件_第2页
算术运算类课件_第3页
算术运算类课件_第4页
算术运算类课件_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、6.2 算术运算类加法指令减法指令乘法指令除法指令符号扩展6.1 状态标志CFOFZFSFPF注意:二进制数运算!1. 进位标志CF(Carry Flag)当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。3AH + 7CHB6H,没有进位:CF = 0AAH + 7CH(1)26H,有进位:CF = 12. 零标志ZF(Zero Flag)若运算结果为0,则ZF = 1;否则ZF = 03AH + 7CHB6H,结果不是0:ZF = 084H + 7CH(1)00H,结果是0:ZF = 1 注意:ZF为1表示的结果是03. 符号标志SF(S

2、ign Flag)运算结果最高位为1,则SF = 1;否则SF = 03AH + 7CHB6H=1011 0110B,最高位D71:SF = 184H + 7CH(1)00H=0000 0000B,最高位D70:SF = 0 有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态奇偶标志PF(Parity Flag)当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 03AH + 7CHB6H10110110B结果中有5个1,是奇数:PF = 0 PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作5. 溢出标志OF(Overflow Fl

3、ag)若算术运算的结果有溢出,则OF1;否则 OF03AH + 7CHB6H=182 ,产生溢出:OF = 1AAH + 7CH(1)26H=38,没有溢出:OF = 0什么是溢出处理器内部以补码表示有符号数8位表达的整数范围是:12712816位表达的范围是:3276732768如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确n位2进制数可表示的无符号数范围:0-2n-1n位2进制补码表示的带符号数范围:- 2n-1- 2n-1-1 从十进制的角度来判断,若带符号数的运算结果超出了补码表示的范围,则OF=1,否则OF=0。n位二进制带符号数的补码表示范围为-2n-1

4、-2n-1-1。从二进制的角度来判断,若两个数同号,而相加结果与之异号,或者两个数异号,相减结果与被减数符号相反,则OF=1;其他情况OF=0。5. 溢出标志OF(Overflow Flag)例6.13(1) 0000 0110B+ 0000 1001B 0000 1111B CF=0,OF=0(6+9=15),ZF=0,SF=0,PF=1例6.13例6.13(2) 0000 1101B+ 0111 1001B 1000 0110BCF=0,OF=1(13+121=134),ZF=0,SF=1,PF=0例6.13例6.13(3) 0000 1001B- 0000 0110B 0000 0011

5、B CF=0,OF=0(9-6=3),ZF=0,SF=0,PF=1例6.13(3)例6.13(4) 1000 0000B- 0000 0001B 0111 1111B CF=0,OF=1(-128-1=-129),ZF=0,SF=0,PF=0 例6.13(4)算术运算类指令四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算请注意算术运算类指令对标志的影响掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP熟悉:MUL/IMUL、DIV/IDIV理解:CBW/CWD6.2.2 加法运算ADD指令ADC指令INC指令 1. 加法指令ADDADD指

6、令的格式 ADD Dest,Src ;DestDest+Src 功能:源操作数Src和目的操作数Dest相加,结果送到Dest。 语法格式 ADD Reg/Mem,Reg/Mem/Imm例6.14:加法运算mov al,0fbh;al=0fbhadd al,07h;al=02hmov word ptr 200h,4652h;200h=4652hmov bx,1feh;bx=1fehadd al,bl;al=00hADD例6.14:加法运算ADD2. 带进位加法指令ADCADC指令的格式 ADC Dest,Src ;DestDest+Src+CF 功能:源操作数Src、目的操作数Dest以及CF

7、相加,结果送到Dest。 语法格式 ADC Reg/Mem,Reg/Mem/Imm,同ADD对标志位的影响:同ADD例6.15 双字加法mov ax,4652h;ax=4652hadd ax,0f0f0h; 4652h+0f0f0h ;ax=3742h,CF=1mov dx,0234h;dx=0234hadc dx,0f0f0h;dx=f325h,CF=0;DX.AX0234 4652HF0F0 F0F0HF325 3742HADC例6.15 双字加法ADC例6.15 双字加法ADC3. 增量指令INC(increment)INC指令的格式 INC Dest ;DestDest+1 功能:将目

8、的操作数Dest加1,结果送到Dest。 语法格式 INC Reg/Mem对标志位的影响:不影响CF,对其他状态标志位的影响同ADD。inc bxinc byte ptr bx例6.16INC6.2.3 减法运算SUB指令SBB指令DEC指令 NEG指令CMP指令6.2.3 减法指令1. 减法指令SUBSUB指令的格式 SUB Dest,Src ;DestDest-Src 功能:目的操作数Dest减去源操作数Src及CF,结果送到Dest。 语法格式 SUB Reg/Mem,Reg/Mem/Imm对标志位的影响:按状态标志的定义设置CF、OF、SF和ZF。例6.17mov al,0fbh;al

9、=0fbhsub al,07h; 0fbh-07h ;al=0f4h,CF0mov word ptr 200h,4652h;200h=4652hmov bx,1feh;bx=1fehsub al,bl;al=0f6hsub word ptr bx+2,0f0f0h;200h=5562h,CF1SUB例6.17SUB例6.17SUB2. 带借位减法指令SBBSBB指令的格式 SBB Dest,Src ;DestDest-Src-CF 功能:目的操作数Dest减去源操作数Src及CF,结果送到Dest。 语法格式 SBB Reg/Mem,Reg/Mem/Imm,同SUB对标志位的影响:同SUB例6

10、.18:双字减法mov ax,4652h;ax=4652hsub ax,0f0f0h;4652h-0f0f0h ;ax=5562h,CF=1mov dx,0234h;dx=0234hsbb dx,0f0f0h;0234h-0f0f0h-CF ;dx=1143h,CF=1;DX.AX0234 4652HF0F0 F0F0H1143 5562HSBB例6.18:双字减法SBB3. 减量指令DEC(decrement)DEC指令的格式 DEC Dest ;DestDest-1 功能:目的操作数Dest减1,结果送到Dest。 语法格式 DEC Reg/Mem对标志位的影响:不影响CF,其他同SUB。

11、dec cxdec word ptr si INC指令和DEC指令都是单操作数指令 主要用于对计数器和地址指针的调整3. 减量指令DEC(decrement)例6.194. 求补指令NEG(negative)NEG指令的格式 NEG Dest ;Dest0-Dest 功能:求补就是求相反数。 语法格式 DEC Reg/Mem对标志位的影响:以减法0-Dest的方式判断标志位。例6.20:求补运算mov ax,0ff64hneg al ;0000 0000-0110 0100=1001 1100;al=9ch,OF=0、SF=1、ZF=0、PF=1、CF=1NEG例6.20:求补运算NEG5.

12、比较指令CMP(compare)CMP指令的格式 CMP Dest,Src ;Dest-Src 功能:目的操作数Dest减去源操作数Src,不将结果送到Dest。 语法格式 CMP Reg/Mem,Reg/Mem/Imm,同SUB对标志位的影响:同SUB例6.21:比较AL与64hcmp al,64;al-64hjb below;al64,跳转到below执行sub al, 64;al64,alal-64h below:. 执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等CMP例6.21:比较AL与64hCMP 乘法指令MUL r8/m8;无符号字节乘法;AXALr8/m8MUL

13、r16/m16;无符号字乘法;DX.AXAXr16/m16IMUL r8/m8;有符号字节乘法;AXALr8/m8IMUL r16/m16;有符号字乘法;DX.AXAXr16/m16乘法指令的功能乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX乘法指令利用OF和CF判断乘积的高一半是否具有有效数值第 2 章乘法指令对标志的影响乘法指令如下影响OF和CF标志:MUL指令若乘积的高一半(AH或DX)为0,则OF=CF

14、=0;否则OF=CF=1IMUL指令若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1乘法指令对其他状态标志没有定义 对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1) 对标志没有影响:指令执行不改变标志状态第 2 章例6.22:乘法运算mov al,0b4h;al=b4h=180mov bl,11h;bl=11h=17mul bl ;ax=Obf4h=3060 =0000 1011 1111 0100B;OF=CF=1,AX高8位不为0mov al,0b4h;al=b4h=76mov bl,11h;bl=11h=17imul bl;ax=faf4h=

15、1111 1010 1111 0100B ;=1292;OF=CF=1,AX高8位含有效数字例6.22:乘法运算 除法指令DIV r8/m8;无符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数DIV r16/m16;无符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数IDIV r8/m8;有符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数IDIV r16/m16;有符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数除法指令的功能除法指令分无符号和有符号除法指令除法指令的除数显式给出,隐含使用另一个操作数

16、AX和DX作为被除数字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存入DX除法指令对标志没有定义除法指令会产生结果溢出除法错中断当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出除数为0,便溢出例6.25:除法运算mov ax,0400;ax=400h=1024mov bl,0b4;bl=b4h=180div bl;商al05h5;余数ah7ch124mov ax,0400;ax=400h=1024mov bl,0b4;bl=b4h=76idiv bl

17、;商alf3h13;余数ah24h36例6.25:除法运算 符号扩展指令CBW;AL的符号扩展至AH;如AL的最高有效位是0,则AH00;AL的最高有效位为1,则AHFFH。AL不变CWD;AX的符号扩展至DX;如AX的最高有效位是0,则DX00;AX的最高有效位为1,则DXFFFFH。AX不变什么是符号扩展符号扩展指令常用于获得倍长的数据符号扩展的概念符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,后一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小对于数据64H(表示数据100),其最高位D7为0(0110 0100),符号扩展后高8位都是0,成为0064H(仍表示数据100)对于数据FF00H(表示有符号数-256),其最高位D15为1,符号扩展后高16位都是1,成为FFFF

温馨提示

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

评论

0/150

提交评论