第三章算术运算(精品).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第三章算术运算(精品).ppt》由会员分享,可在线阅读,更多相关《第三章算术运算(精品).ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4算术运算类指令v实现二进制(和十进制)数据的四则运算1、加法运算:ADD ADC INC2、减法运算:SUB SBB DEC NEG CMP CMPXCHG CMPXCHG8D3、乘法运算:MUL IMUL4、除法运算:DIV IDIV5、符号扩展:CBW CWD6、十进制调整:DAA DAS AAA AAS AAM AAD本节要求本节要求v四则运算是计算机经常进行的一种操作。算术运算指令也是经常使用的一类指令。v请注意算术运算指令对标志的影响重点掌握:ADD/ADC SUB/SBB INC/DEC CMP比较熟悉:NEG MUL/IMUL DIV/IDIV一般了解:CBW CWD认真理解:
2、DAA DAS AAA AAS AAM AAD加法指令ADD(add)ADD指令将源与目的操作数相加,结果送到目的操作数。ADD指令按状态标志的定义相应设置0或1。ADD reg,imm/reg/mem;regregimm/reg/memADD mem,imm/reg;memmemimm/regADD指令的相关指令:ADC SUB加法实例例:加法运算操作mov al,0fbh ;al=0fbhadd al,07h;al=02hmov word ptr 200h,4652h;200h=4652hmov bx,1feh;bx=1fehadd al,bl;al=00hadd word ptr bx+
3、2,0f0f0h;200h=3742h带进位加法指令ADC(add with carry)ADC指令将源与目的操作数相加,再加上当前进位CF标志,结果送到目的操作数。ADD指令按状态标志的定义相应设置0或1。ADC reg,imm/reg/mem;regregimm/reg/memCFADC mem,imm/reg;memmemimm/regCFADC指令主要与ADD配合,实现多精度加法运算。ADC指令的相关指令:ADD SBB多字节加法例无符号多字节加法运算两个无符号的五字节十六进制数的加法运算:12345678ABH 98765432FEH0AAAAAABA9H解1 ADD与ADC配合解2
4、 只使用ADC指令 解1 ADD与ADC配合DATA SEGMENT FIRST DB 0AB,78H,56H,34H,12H,00H SECOND DB 0FEH,32H,54H,76H,98HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,SECOND0 ADD FIRST0,AL MOV CX,4;循环4次 MOV SI,1 ;下标初始化为1L1:MOV AL,SECONDSI ADC FIRSTSI,AL INC SI ;为下一次循环做准备 LOOP L1 ;循环未结束时,跳转
5、到L1 MOV AL,0 ;将最高位产生的进位送入 ADC AL,0 ;目的地 MOV FIRSTSI,AL MOV AX,4C00H ;返回DOS INT 21HCODE ENDS END START解2 只使用ADC指令DATA SEGMENT FIRST DB 0AB,78H,56H,34H,12H,00H SECOND DB 0FEH,32H,54H,76H,98HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV CX,5;循环5次 MOV SI,0 ;下标初始化为0 CLC ;将CF
6、清0 L1:MOV AL,SECONDSI ADC FIRSTSI,AL INC SI ;为下一次循环做准备 LOOP L1 ;循环未结束时,跳转到L1 MOV AL,0 ;将最高位产生的进位送入 ADC AL,0 ;目的地 MOV FIRSTSI,AL MOV AX,4C00H ;返回DOS INT 21HCODE ENDS END START增量指令INC(increment)INC指令对操作数加1(增量)。INC指令不影响进位CF标志,按定义设置其他状态标志。INC reg/mem;reg/memreg/mem1相关指令:DECinc bxinc byte ptr bxINC指令和DEC
7、指令都是单操作数指令。他们主要用于对计数器和地址指针的调整。减法指令SUB(subtract)SUB指令将目的操作数减去源操作数,结果送到目的操作数。SUB指令按照定义相应设置状态标志。SUB reg,imm/reg/mem;regregimm/reg/memSUB mem,imm/reg;memmemimm/regSUB指令的相关指令:SBB ADD带借位减法指令SBB(subtract with borrow)SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志。SBB reg,imm/reg/mem;regregimm/reg
8、/memCF SBB mem,imm/reg;memmemimm/regCFSBB指令主要与SUB配合,实现多精度减法运算。SBB指令的相关指令:SUB ADC多字运算例3.15:双字运算Mov ax,x ;ax 存放X的低字Mov dx,x+2 ;DX 存放X的高字Add ax+y ;X和Y的低字相加Adc dx,y+2 ;X和Y的高字相加Add ax,24 ;+24Adc dx,0Sub ax,z :-Z的低字Sbb dx,z+2 ;-Z的高字Mov w,ax ;结果送回WMov w+2,dx减量指令DEC(decrement)INC指令对操作数减1(减量)。DEC指令不影响进位CF标志,
9、按定义设置其他状态标志。DEC reg/mem ;reg/memreg/mem1INC指令和DEC指令都是单操作数指令。他们主要用于对计数器和地址指针的调整。dec sidec byte ptr si求补指令NEG(negative)NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1。NEG指令对标志的影响与用零作减法的SUB指令一样NEG reg/mem;reg/mem0reg/mem:例子类似指令:NOT例:求补运算mov ax,0ff64hneg al;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=1sub
10、al,9dh;ax=ffffh,OF=0、SF=1、ZF=0、PF=1、CF=1neg ax;ax=0001h,OF=0、SF=0、ZF=0、PF=0、CF=1dec al;不影响CF;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=1neg ax;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=0比较指令CMP(compare)CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志。CMP指令执行的功能与SUB指令,但结果不回送目的操作数。CMP reg,imm/reg/mem;regimm/reg/memCMP mem,imm/reg ;memimm/
11、reg类似指令:TEST比较实例例:比较AL是否大于100cmp al,100;al-100jb below;al100,跳转到below执行sub al,100;al100,alal-100inc ah;ahah+1below:.执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等。所以,CMP指令后面常跟条件转移指令,根据比较结果不同产生不同的分支。vCMPXCHG比较并交换指令格式:CMPXCHG DST,SRC功能:将累加器AC(AL,AX,EAX)与DST比较,如果相等,则将(DST)(SRC)并设置ZF=1,否则将(AC)(DST)并设置ZF=0。vCMPXCHG8B比较并
12、交换8字节指令格式:CMPXCHG8B DST功能:将EAX和EDX中的64位字与DST比较,如果相等,则将(DST)(ECX,EBX)并设置ZF=1,否则将(EDX,ECX)(DST)并设置ZF=0。v这两条指令只影响ZF位,对其它位没有影响。乘法指令无符号数乘法MUL r8/m8 ;无符号字节乘法 ;AXALr8/m8MUL r16/m16;无符号字乘法 ;DX.AXAXr16/m16MUL R32/M32;无符号双字乘法 ;EDX,EAXEAXr32/m32有符号数乘法IMUL SRC;与MUL的操作相同,但必需是带符号数乘法指令的功能v乘法指令分无符号和有符号乘法指令:MUL和IMUL
13、v乘法指令的源操作数显式给出并且不为立即数(隐含使用一个操作数AX和DX)。v字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX中;字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX中。字量相乘:AX与r32/m32相乘,得到64位的结果,其高双字存入EDX,低双字存入EAX中。v乘法指令利用OF和CF判断乘积的高一半是否具有有效数值。说的更清楚一些!乘法指令对标志的影响v乘法指令如下影响OF和CF标志:MUL指令若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1。IMUL指令若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则
14、均为1。v乘法指令对其他状态标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1)。对标志没有影响是指令的执行不改变标志的状态。除法指令无符号除法 DIV r8/m8;字节除法:AXr8/m8的商存入AL,余数存入AHDIV r16/m16;字除法:;(DX,AX)r16/m16的商存入AX,余数存入DXDIV r32/m32;双字除法:;(EDX,EAX)r16/m16的商存入EAX,余数存入EDX有符号除法IDIV SRC;与MUL的操作相同,但必需是带符号数除法指令的功能v除法指令分无符号和有符号除法指令:DIV和IDIVv除法指令的除数显式给出,不能为立即数(隐
15、含使用一个操作数AX和DX作为被除数)。v字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH;字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存入DX。双字量除法:EDX.EAX除以r32/m32,32位商存入EAX,32位余数存入EDX。v除法指令对标志没有定义。v除法指令会产生结果溢出说的更清楚一些!符号扩展指令CBW;字节转换为字;AL的符号扩展至AH,即如AL的最高有效位是0,则AH00;AL的最高有效位为1,则AHFFH。AL不变。CWD;字转换为双字;AX的符号扩展至DX,即如AX的最高有效位是0,则DX00;AX的最高有效位为1,则DXFFH。A
16、X不变。v什么是符号扩展v给个实例吧v符号扩展指令常用于获得倍长的数据,如被除数v符号扩展指令不影响标志位符号扩展的概念v符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,后一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小。v例如:对于数据64H(表示数据100),其最高位D7为0,符号扩展后高8位都是0,成为0064H(仍表示数据100)。对于数据ff00H(表示有符号数-256),其最高位D15为1,符号扩展后高16位都是1,成为ffffff00H(仍表示有符号数-256)。例2.23:符号扩展mov al,80h;al=80hcbw;ax=ff80hadd
17、 al,255;al=7fhcbw;ax=007fh例2.24:有符号数除法 AXBXcwdidiv bx本例中,利用符号扩展指令得到了除法指令所需要的倍长于除数的被除数。对无符号数除法应该采用直接使高8位或高16位清0的方法,获得倍长的被除数。十进制调整指令压缩BCD码就是通常的8421码,它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即00 99。非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位0 9,高4位任意,通常默认为0。十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果。他分成压缩BCD码和非压缩BCD码调整。
18、压缩BCD码加、减调整指令(ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8)DAA;AL将AL的加和调整为压缩BCD码(SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8)DAS;AL将AL的减差调整为压缩BCD码v使用DAA或DAS指令前,应先执行以AL为目的操作数的加法或减法指令vDAA和DAS指令对OF标志无定义,按结果影响其他标志,例如CF反映压缩BCD码相加或减的进位或借位状态请看实例压缩BCD码的加减运算(例2.25)mov al,68h;al=68h,压缩BCD码表示真值68mov bl,28h;bl=28h,压缩BCD码表示真值28add al,
19、bl;二进制加法:al=68h+28h=90hdaa;十进制调整:al=96h;实现压缩BCD码加法:682896mov al,68h;al=68h,压缩BCD码表示真值68mov bl,28h;bl=28h,压缩BCD码表示真值28sub al,bl;二进制减法:al=68h28h=40hdas;十进制调整:al=40h;实现压缩BCD码减法:682840非压缩BCD码加、减调整指令(ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8)AAA;AL将AL的加和调整为非压缩BCD码;AHAH调整的进位(SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8)AAS;AL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 算术 运算 精品
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内