携带标志设置在签名算术上

Avr*_*Pop 0 x86 assembly nasm

mov ah, -128 
mov bh, 80h 
add ah,bh 
Run Code Online (Sandbox Code Playgroud)

为什么这个代码设置CF,考虑到计算不需要进位?或者更好的是,CF在签名算法中的行为和OF在unsigned中的行为是什么?

Mic*_*ann 5

添加完成为Two's Complement,结果大于8位.0x80 + 0x80 = 0x100或二进制:

   0b10000000
+  0b10000000
-------------
= 0b100000000
Run Code Online (Sandbox Code Playgroud)

因此结果为0并且设置了进位标志.

不要将其-128视为负数,而应将其视为正数(128),其具有与负数的两个恭维相同的位模式,然后执行无符号加法.(因此设置了进位标志.)