程序集 x86 标志 - 溢出标志

Assembly x86 flags- overflow flag

我刚开始学习汇编,我正在尝试了解不同标志的工作原理。 假设我这样做:

mov ax, 0xBFE8h
mov bx, 25DFh
add ax, bx

溢出标志不应该打开吗?加法的值为 58,823(以 10 为基数),大于 32,767(带符号的 16 位值)。 我检查了程序,但标志没有打开。这是为什么?

感谢您的帮助。

发生有符号溢出时,溢出标志打开。但是,您的代码中并非如此。 0xbfe8 大于 0x8000 因此二进制补码为负,表示 −16408。 0x25DF等于9695,它们的和是-6713,不在-32768到+32767范围之外,所以没有发生有符号溢出,溢出标志被清除。