Assembly 程序集x86标志-溢出标志

Assembly 程序集x86标志-溢出标志,assembly,flags,Assembly,Flags,我刚开始学习汇编,我试图理解不同的标志是如何工作的。 假设我这样做: mov ax, 0xBFE8h mov bx, 25DFh add ax, bx 溢出标志不应该打开吗?加法值为58823(以10为基数),大于32767(有符号16位值)。 我签入了程序,但标志没有打开。为什么会这样 感谢您的帮助。发生签名溢出时,溢出标志将打开。但是,代码中的情况并非如此0xbfe8大于0x8000,因此在2的补码中为负数,表示−16408. 0x25DF等于9695,其和为−6713不在范围之外−32

我刚开始学习汇编,我试图理解不同的标志是如何工作的。 假设我这样做:

mov ax, 0xBFE8h
mov bx, 25DFh
add ax, bx
溢出标志不应该打开吗?加法值为58823(以10为基数),大于32767(有符号16位值)。 我签入了程序,但标志没有打开。为什么会这样


感谢您的帮助。

发生签名溢出时,溢出标志将打开。但是,代码中的情况并非如此
0xbfe8
大于
0x8000
,因此在2的补码中为负数,表示−16408.
0x25DF
等于9695,其和为−6713不在范围之外−32768到+32767,因此没有发生签名溢出,溢出标志被清除。

发生签名溢出时,溢出标志打开。但是,代码中的情况并非如此
0xbfe8
大于
0x8000
,因此在2的补码中为负数,表示−16408.
0x25DF
等于9695,其和为−6713不在范围之外−32768到+32767,因此没有发生签名溢出,溢出标志被清除。

。您要查找的是进位标志(无符号),而不是有符号溢出。在有符号数学(值的解释)中,您要做的是-16408+9695=负+正值原则上不能溢出,因为结果肯定等于/介于原始两个值之间。的符号与数学有关。。您要查找的是进位标志(无符号),而不是有符号溢出。在有符号数学(值的解释)中,您要做的是-16408+9695=负+正值原则上不能溢出,因为结果肯定等于/介于原始两个值之间。当然,这个问题和数学有关,肯定是重复的。我一直在寻找,但还没有找到一个完全相同的答案。@PeterCordes也许这一个将是未来的经典副本。最后!我已经试着理解这一点有一段时间了,谢谢!这一个很好:8位add和sub的输入/输出/CF/of参考表:CF应该在这里很清楚:这不是很完整。(无论如何,这是一个很容易解决的问题),这个问题肯定是重复的。我一直在寻找,但还没有找到一个完全相同的答案。@PeterCordes也许这一个将是未来的经典副本。最后!我已经试着理解这一点有一段时间了,谢谢!这一个很好:8位add和sub的输入/输出/CF/of参考表:CF应该在这里很清楚:这不是很完整。(无论如何,投票结果都是向上的,因为这是一个很容易解决的问题)。