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