Categories: 汇编 | Tags: | Views: 883

 

1. 加法指令ADD

ADD OPRD1 OPRD2

执行的操作: (OPRD1)<- (OPRD1)+(OPRD2)

影响标志位:

OF:若两个操作数的符号相同而结果的符号与之相反则溢出OF=1,否则OF=0

(如两个正数相加得负数,或者两个负数相加得正数,符号相反的两数相加不溢出)

CF:表示无符号数的溢出(进位)

 

2. 带进位的加法指令ADC

ADC OPRD1,OPRD2

执行的操作:(OPRD1)<- (OPRD1)+ (OPRD2)+ CF

计算双精度的加法,先加低位(ADD,有可能进位),再加高位(ADC,加上可能的进位)

也就是说,要实现双字的相加,必须用两条指令实现

如OPRD1=DX AX   OPRD2 = BX CX

则OPRD1+OPRD2的实现:

ADD AX,CX

ADC DX,BX

3. 加1指令INC

INC OPRD

执行的操作:(OPRD)<- (OPRD)+1

主要用于调整地址指针和计数器,不影响CF


4. 减法指令SUB

SUB OPRD1,OPRD2

执行的操作: (OPRD1)<- (OPRD1)-(OPRD2)

CF位说明无符号数相减的溢出

若两个数的符号相反,而结果的符号与减数相同则OF=1

 

5. 带借位的减法指令SBB

SBB OPRD1,OPRD2

执行的操作:(OPRD1)<- (OPRD1)- (OPRD2)- CF

同ADC,用于多字节数相减的场合

 

6. 减1指令DEC

DEC OPRD

执行的操作:(OPRD)<- (OPRD)-1

 

7. 取补指令NEG

NEG OPRD

执行的操作:(OPRD)<- -(OPRD)

如果在字节操作时对-128取补,或在字操作时对-32768取补,操作数不变,但OF被置1,其他情况OF=0

操作数为0时,求补运算的结果使CF=0,其他情况CF=1

 

8. 比较指令CMP

CMP OPRD1 OPRD2

完成OPRD1-OPRD2,但结果不回送

双操作数必须有一个是寄存器

影响标志CF,ZF,SF,OF,AF和PF

根据ZF可判断两者是否相等

如果两者是无符号数,可根据CF判断大小

如果两者是有符号数,可根据SF和OF判断大小

 

这篇文章来自 迷途知返(PWWANG.COM), 转载请注明出处。 版权说明

No comments yet.
;) :| :x :twisted: :roll: :oops: :o :mrgreen: :lol: :idea: :evil: :cry: :arrow: :P :D :?: :? :) :( :!: 8O 8)

你可以使用@somebody:开头, 来邮件通知somebody你回复了他的留言(用户名区分大小写).