Assembly 如何检测溢出标志?

Assembly 如何检测溢出标志?,assembly,binary,flags,Assembly,Binary,Flags,在下面的问题中,我想知道为什么溢出标志设置为1。 我知道溢出只能发生在两个相同符号的数字相加时 得到一个不同的标志。 这是本书解决方案中的错误还是什么 这些看起来像8位无符号数字。结果是9位,这将使8位寄存器溢出(现在很难找到)。如果这些是有符号的数字,它们实际上会有不同的符号(-1和1)。然而,图像显示的是一个9位和,而不仅仅是0(甚至00000000)。所以这些是无符号的8位,或者“书”中有错误。请注意,设置了半进位。这表明使用了16位寄存器的1/2。这种情况经常发生 关于符号不同导致溢出不

在下面的问题中,我想知道为什么溢出标志设置为1。 我知道溢出只能发生在两个相同符号的数字相加时 得到一个不同的标志。 这是本书解决方案中的错误还是什么


这些看起来像8位无符号数字。结果是9位,这将使8位寄存器溢出(现在很难找到)。如果这些是有符号的数字,它们实际上会有不同的符号(-1和1)。然而,图像显示的是一个9位和,而不仅仅是0(甚至00000000)。所以这些是无符号的8位,或者“书”中有错误。请注意,设置了半进位。这表明使用了16位寄存器的1/2。这种情况经常发生


关于符号不同导致溢出不可能的说法只是重复了简单的关系,即添加两个相同位大小的数字,其中一个为正,另一个为负。最大的8位正数为127。最大的负8位数字为-128。这是相对容易做的数学。从127开始,加上所有可能的负数。。。127+-1=126, 127+-2=125, 127+-3=124, ... 127+-126=1, 127+-127=0, 127+-128=-1. 所有总和都不大于127或小于-128,因此不会发生溢出。你可以通过把每个正数加到-128来完成证明

但当符号不同时,不可能产生溢出!你能解释一下你的答案吗?在-1中加1并不是一种溢出的情况。进位是,但不是溢出。因此,解决方案>>>一书中的另一个错误感谢您的回答。进位标志是a.k.a,表示未签名溢出。有符号溢出是不同的。执行无符号溢出,如果msbit的进位和进位不同,则执行有符号溢出。如果要使用程序集标志,请…使用一些程序集并指定处理器。