|
Jan
12
|
|
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判断大小

