程序集 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范围之外,所以没有发生有符号溢出,溢出标志被清除。
我刚开始学习汇编,我正在尝试了解不同标志的工作原理。 假设我这样做:
mov ax, 0xBFE8h
mov bx, 25DFh
add ax, bx
溢出标志不应该打开吗?加法的值为 58,823(以 10 为基数),大于 32,767(带符号的 16 位值)。 我检查了程序,但标志没有打开。这是为什么?
感谢您的帮助。
发生有符号溢出时,溢出标志打开。但是,您的代码中并非如此。 0xbfe8
大于 0x8000
因此二进制补码为负,表示 −16408。 0x25DF
等于9695,它们的和是-6713,不在-32768到+32767范围之外,所以没有发生有符号溢出,溢出标志被清除。