算术运算指令.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 带符号
2、数范围-128127,4, 无符号数溢出 无符号数 有符号数 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 上面四种情况说明
3、, CF标志可用来表示无符号数的溢出, OF标志可用来表示有符号数的溢出。 有符号数的溢出是一种出错状态,在运算过程中应当避免。,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; 当运算
4、结果中有偶数个时,PF=1 ,否则为0。,7,共有5条: (1) 不带进位的加法指令ADD 格式: ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg2 注:1.源和目的操作数不能同时为存储器操作数 2.不能把段寄存器作为操作数 例:ADD AL,30H ADD AX,BX+20H ADD CX,SI ADD DI,200H ADD指令对标志位(指6个状态标志)都有影响。,1.加法指令,8,(2) 带进位位的加法指令ADC,ADC指令在形式上和功能上都有与ADD类似,只是相加时还要包括进位标志CF的内容。 例如: ADC AL,68H ;AL(
5、AL)+68H+(CF) ADC AX,CX ;AX(AX)+(CX)+(CF) ADC BX,DI ;BX(BX)+DI+1DI+(CF),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,被加数,加数,数据段,多字节加法示意
6、图,.,.,11,程序段如下: MOV CX,4 ;置循环次数 MOV SI,0 ;置SI初值为零 CLC ;清进位标志CF LL: MOV AL,BUFFER2SI 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
7、 INC BYTE PTRBX+4 注意:本指令不影响CF标志,但对AF/OF/PF/SF/ZF会产生影响。,3) 加1指令INC(单操作数指令),14,(1) 不考虑借位的减法指令SUB 格式: 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
8、 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+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语言中的”操作符。
9、格式: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 操作: opr 0-(opr) 对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。 例: 若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。,(4) 求补指令NEG,19,SUB/SBB指令对标志位(CF/
10、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, src 操作: dest(dest)-(src) (而 SUB dest, src; dest(dest)-(src) ) CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。 指令例子: CMP AL,0AH CMP CX,SI CMP DI,BX+03,(5) 比较指令C
11、MP,21,根据标志位来判断比较的结果,1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。 2)若ZF=0,则两个数不相等,则分两种情况考虑: 比较的是两个无符号数 若CF=0,则destsrc; 若CF=1,则destsrc。 比较的是两个有符号数 若OFSF=0,则destsrc; 若OFSF=1,则destsrc。,22,比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。 举例:比较AL、BL、CL中带符号数的大小,将 最小数放在AL中。 程序: CMP AL,BL ;AL和BL比较 JNG BBB ;若ALBL,则转 XCHG AL,BL ;若ALBL,则交换
12、 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) (1) 无符号数的乘法指令MUL mem/reg 格式: MUL src 操作:字节操作数 (AX) (AL) (src) 字操作数 (DX, AX) (AX) (src) 指令例子: MUL BL ;(AL)(BL),乘积在AX
13、中 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)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标志位无定义。,25,MUL/IMUL乘法指令对CF/OF的影响:,例:(AL) = A5H(-5B),(BL) = 11H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算术 运算 指令
链接地址:https://www.31doc.com/p-3226892.html