1.adc和sbb是带进(借)位加减法,理论上可以实现任意长度数据加减法
下面是示例:
assume cs:code,ds:data
data segment
dw 1122h,3344h,5566h,7788h
dw 1020h,3040h,5060h,7080h
data ends
code segment
start:
mov ax,data
mov ds,ax
xor si,si
mov di,8
mov cx,4
sub ax,ax ;CF清零
s: mov ax,[di]
adc [si],ax
inc si ;不能用add,add会影响CF,而inc与loop不会
inc si
inc di
inc di
loop s
mov ax,4c00h
int 21h
code ends
end start
2.cmp ax,bx 相当于sub ax,bx 只是仅根据结果改变标志位,并不真正运算写入
3.无符号数条件转移:
je
jne
jb
jnb
ja zf=0并且cf=0
jna zf=1或cf=1
4.有符号数条件转移:
JG∶——(有符号数比较)大于转移(等价JNLE)。SF和OF同号,且ZF=0 时转移。(段内直接短转移)
JGE∶ ——(有符号数比较)大于或等于转移(等价于JNL)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。
JL∶ ——(有符号数比较)小于转移(等价于JNGE)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。
JLE∶——(有符号数比较)小于或等于转移(等价于JNG)。当SF和OF异号或ZF=1时转移(段内直接短转移)。
JNG∶——(有符号数比较)不大于转移(等价于JLE)。当SF和OF异号或ZF=1时转移(段内直接短转移)。
JNGE∶——(有符号数比较)不大于且不等于转移(等价于JL)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。
JNL∶——(有符号数比较)不小于时转移(等价于JGE)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。
JNLE∶——(有符号数比较)不小于且不等于转移(等价JG)。SF和OF同号,且ZF=0 时转移。
简记口诀:(zf=0时)sf和of:同号>,异号<
5.*溢出时SF位的值和真实结果的符号相反。