Assembly 组件中的进位标志、辅助标志和溢出标志
我似乎无法区分汇编中的进位标志、辅助标志和溢出标志之间的区别。我目前正在学校学习,老师没有透露任何细节。请帮助我理解,我考试时需要它。我会非常感激的!!从现在我似乎知道的是,当你尝试时使用进位标志,比如说,255+9,当你只有8位的数据时,辅助标志是相同的,但只有最后4位??当二进制数为7位,符号为8位(最左边)时使用溢出?进位标志是在以下情况下设置的标志: a) 添加了两个无符号数字,结果大于保存该数字的寄存器的“容量”。我们想添加两个8位数字,并将结果保存在8位寄存器中。在您的示例中:255+9=264,这超过了8位寄存器可以存储的值。因此,值“8”将保存在那里(264&255=8),并设置CF标志 b) 减去两个无符号数字,我们从较小的数字中减去较大的数字。例:1-2将给出255个结果,并设置CF标志 辅助标志用作CF,但在使用BCD时使用。因此,当我们在BCD计算中打开溢出或下溢时,将设置AF。 例如:考虑到8位ALU单元,当有从第3位到第4位的进位,即从低半字节到高半字节的进位时,设置辅助标志。() 溢出标志用作CF,但当我们处理有符号的数字时。我们想加上两个8位有符号的数字:127+2。结果是129,但对于8位带符号的数字来说太多了,因此将设置OF。当结果太小时类似,如-128-1=-129,这超出了8位有符号数字的范围 你可以在维基百科上阅读更多关于旗帜的信息Carry Flag 在二进制/整数数学中打开进位标志的规则有两条:Assembly 组件中的进位标志、辅助标志和溢出标志,assembly,x86,overflow,eflags,Assembly,X86,Overflow,Eflags,我似乎无法区分汇编中的进位标志、辅助标志和溢出标志之间的区别。我目前正在学校学习,老师没有透露任何细节。请帮助我理解,我考试时需要它。我会非常感激的!!从现在我似乎知道的是,当你尝试时使用进位标志,比如说,255+9,当你只有8位的数据时,辅助标志是相同的,但只有最后4位??当二进制数为7位,符号为8位(最左边)时使用溢出?进位标志是在以下情况下设置的标志: a) 添加了两个无符号数字,结果大于保存该数字的寄存器的“容量”。我们想添加两个8位数字,并将结果保存在8位寄存器中。在您的示例中:255
- 0111+0001=1000(进位标志关闭[零])
- 1000-0001=0111(进位标志关闭[零])
- 0100+0001=0101(溢出标志关闭)
- 0110+1001=1111(溢出标志关闭)
- 1000+0001=1001(溢出标志关闭)
- 1100+1100=1000(溢出标志关闭)
有关更多说明,请参阅:您在谈论什么微处理器?如果是x86,那么下面是指向所有标志的链接,并附有详细说明:。但在x86中,它实际上是“调整标志”而不是“辅助标志”。是的,这是正确的。通常,
进位
表示无符号,溢出
表示有符号,辅助进位是一个模糊的东西,没有真正使用:)但它确实是从低4位到高4位的进位。我想知道每种处理器的区别,以便更好地理解它。那么16位处理器或x64呢?对于这个星球上的每个处理器都应该是一样的;)