《算术运算指令》PPT课件.ppt
《《算术运算指令》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《算术运算指令》PPT课件.ppt(48页珍藏版)》请在三一办公上搜索。
1、1,3.3.2 算术运算指令,涉及两种类型数据:无符号数和有符号数。对加减法指令,无符号和有符号数可采用同一套指令,但应注意:参加的操作数必须都是无符号数或都是有符号数。需使用不同的标志位(CF,OF)来检查无符号数和有符号数的运算结果是否溢出。这类指令一般都影响标志寄存器FLAGS。,2,表4-2 算术运算类指令表,3,两个8位数相加时有4种情况:,无符号数和有符号数均不溢出二进制相加 无符号数加 有符号数加 0000 1000 8+8+0001 1110+30+(+30)0010 0110 38+38 结果38 CF=0 OF=0,无符号数范围0255 带符号数范围-128127,4,无符
2、号数溢出 无符号数 有符号数 0000 1000 8+8+1111 1101+253+(-3)10000 0101 261+5 结果5 CF=1 OF=0 有符号数溢出 0000 1000 8+8+0111 1101+125+(+125)1000 0101 133+133结果-123 CF=0 OF=1(补码表示),5,无符号数和有符号数均溢出 无符号数 有符号数 1000 1000 136-120+1111 0111+247+(-9)10111 1111 383-129 结果127 CF=1 OF=1 上面四种情况说明,CF标志可用来表示无符号数的溢出,OF标志可用来表示有符号数的溢出。有符
3、号数的溢出是一种出错状态,在运算过程中应当避免。,6,所有的算术运算指令,都会影响FLAGS标志寄存器的6个状态标志CF/OF/ZF/SF/AF/PF(3个控制标志IF/DF/TF不受影响)。总的讲,有这样一些规则:当无符号数运算产生溢出(即最高位向前有进位 或借位)时,CF=1,否则为0;当有符号数运算产生溢出时,OF=1(即OF=CFCF-1),否则为0;当运算结果为0时,ZF=1,否则为0;当运算结果为负数时,SF=1,否则为0;当运算一半位置有进位或借位时,AF=1,否则为0;当运算结果中有偶数个时,PF=1,否则为0。,7,共有5条:(1)不带进位的加法指令ADD 格式:ADD ac
4、c,data ADD mem/reg,data ADD mem/reg1,mem/reg2注:1.源和目的操作数不能同时为存储器操作数 2.不能把段寄存器作为操作数例:ADDAL,30H ADDAX,BX+20H ADDCX,SI ADDDI,200HADD指令对标志位(指6个状态标志)都有影响。,1.加法指令,8,(2)带进位位的加法指令ADC,ADC指令在形式上和功能上都有与ADD类似,只是相加时还要包括进位标志CF的内容。例如:ADC AL,68H;AL(AL)+68H+(CF)ADC AX,CX;AX(AX)+(CX)+(CF)ADC BX,DI;BX(BX)+DI+1DI+(CF),
5、9,例:有两个4字节的无符号数相加:2C 56 F8 AC+30 9E 47 BE=?设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。,ADC指令主要用于多字节加法运算中,10,56H,2CH,BEH,47H,BUFFER1,BUFFER2,ACH,F8H,9EH,30H,被加数,加数,数据段,多字节加法示意图,.,.,11,程序段如下:MOV CX,4;置循环次数 MOV SI,0;置SI初值为零 CLC;清进位标志CFLL:MOV AL,BUFFER2SI
6、ADC BUFFER1SI,AL;带进位加 INC SI;(SI)+1 DEC CX;(CX)-1 JNZ LL;若(CX)0,则转LL思考:若最高位有进位,如何改?,12,ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。,13,格式:INC reg/mem功能:类似于C语言中的+操作:对指定的操作数加1 例:INC AL INC SI INC BYTE PTRBX+4注意:本指令不影响CF标志,但对AF/OF/PF/SF/ZF会产生影响。,3)加1指令INC(单操作数指令),14,(1)不考虑借位的减法指令SUB
7、格式:SUB dest,src 操作:dest(dest)-(src)注:1.源和目的操作数不能同时为存储器操作数 2.不能把段寄存器作为操作数指令例子:SUB AL,60H SUB BX+20H,DX SUB AX,CX,2.减法指令,15,SBB指令主要用于多字节的减法。格式:SBB dest,src操作:dest(dest)-(src)-(CF)指令例子:SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX,(2)考虑借位的减法指令SBB,16,例:x、y、z均为32位数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现wx+y+
8、24-z,结果放在W,W+2单元中。MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2;x+y ADD AX,24 ADC DX,0;x+y+24 SUB AX,Z SBB DX,Z+2;x+y+24-z MOV W,AX MOV W+2,DX;结果存入W,W+2单元,17,作用类似于C语言中的”操作符。格式:DEC opr 操作:opr(opr)-1指令例子:DEC CL DEC BYTE PTRDI+2 DEC SI,(3)减1指令DEC,注:该指令与INC一样,它不影响CF标志,但对AF/OF/PF/SF/ZF会产生影响。,18,格式:NEG opr操作:op
9、r 0-(opr)对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则执行 NEG AL后,(AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。,(4)求补指令NEG,19,SUB/SBB指令对标志位(CF/OF/ZF/SF)的影响:,CF=1表示无符号数减法溢出。OF=1表示带符号数减法溢出。NEG指令对CF/OF的影响:CF:操作数为0时,求补的结果使CF=0,否则CF=1。OF:字节运算对-128求补或字运算对-32768求补时OF=1,否则OF=0。,20,格式:CMP dest,sr
10、c操作:dest(dest)-(src)(而 SUB dest,src;dest(dest)-(src))CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:CMP AL,0AH CMP CX,SI CMP DI,BX+03,(5)比较指令CMP,21,根据标志位来判断比较的结果,1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。2)若ZF=0,则两个数不相等,则分两种情况考虑:比较的是两个无符号数 若CF=0,则destsrc;若CF=1,则destsrc。比较的是两个有符号数 若OFSF=0,则destsrc;若OFSF=1,则destsrc。,22
11、,比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。举例:比较AL、BL、CL中带符号数的大小,将 最小数放在AL中。程序:CMP AL,BL;AL和BL比较 JNG BBB;若ALBL,则转 XCHG AL,BL;若ALBL,则交换 BBB:CMP AL,CL;AL和CL比较 JNG CCC;若ALCL,则转 XCHG AL,CL;若ALCL,则交换 CCC:HLT,思考:程序的结果?(AL、BL、CL中数据的大小顺序),23,进行乘法时:8位 8位 16位乘积(即 AL mem8/reg8 AX)16位 16位 32位乘积(即 AX mem16/reg16 DX AX)
12、(1)无符号数的乘法指令MUL mem/reg格式:MUL src操作:字节操作数(AX)(AL)(src)字操作数(DX,AX)(AX)(src)指令例子:MUL BL;(AL)(BL),乘积在AX中 MUL CX;(AX)(CX),乘积在DX,AX中 MUL BYTE PTRBX,3.乘法指令,24,格式与MUL指令类似,只是要求两操作数均为有符号数。指令例子:IMUL BL;(AX)(AL)(BL)IMUL WORD PTRSI;(DX,AX)(AX)(SI+1SI),(2)有符号数乘法指令IMUL,注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器;AX(DX,AX)为隐含的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算术运算指令 算术 运算 指令 PPT 课件

链接地址:https://www.31ppt.com/p-5565421.html