汇编x86标志-溢出标志

问题描述 投票:0回答:1

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

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

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

感谢您的帮助。

assembly x86 flags eflags signed-overflow
1个回答
4
投票

当有符号溢出发生时,溢出标志位打开。 但是,您的代码中并非如此。

0xbfe8
大于
0x8000
,因此二进制补码为负,代表 -16408。
0x25DF
等于9695,它们的总和为-6713,不超出范围-32768到+32767,因此没有发生有符号溢出,溢出标志被清除。

© www.soinside.com 2019 - 2024. All rights reserved.