mov ah, -128
mov bh, 80h
add ah,bh
Run Code Online (Sandbox Code Playgroud)
为什么这个代码设置CF,考虑到计算不需要进位?或者更好的是,CF在签名算法中的行为和OF在unsigned中的行为是什么?
添加完成为Two's Complement,结果大于8位.0x80 + 0x80 = 0x100
或二进制:
0b10000000
+ 0b10000000
-------------
= 0b100000000
Run Code Online (Sandbox Code Playgroud)
因此结果为0并且设置了进位标志.
不要将其-128
视为负数,而应将其视为正数(128
),其具有与负数的两个恭维相同的位模式,然后执行无符号加法.(因此设置了进位标志.)