我似乎无法区分装配中的进位标志,辅助标志和溢出标志.我目前正在学校学习,老师没有详细说明.请帮助我理解,我将需要它进行考试.我将非常感激!! 从我现在似乎知道的是,当你尝试使用进位标志时,比方说,当你只有8位数据时,使用255 + 9,辅助标志是相同的,但只有最后4位?当你有二进制数的7位和8(最左边)用于符号时,使用溢出???
小智 34
在二进制/整数数学中打开进位标志的规则有两个:
如果添加两个数字导致添加最高有效(最左边)位的进位,则设置进位标志.1111 + 0001 = 0000(进位标志打开)
如果减去两个数字需要借入减去最高有效(最左边)的位,则也设置进位(借位)标志.0000 - 0001 = 1111(进位标志打开)否则,进位标志关闭(零).
在无符号算术中,观察进位标志以检测错误.
在带符号的算术中,进位标志告诉你没有什么有趣的.
在二进制/整数数学中打开溢出标志的规则是两个:
如果符号位关闭的两个数字之和产生符号位打开的结果编号,则"溢出"标志打开.0100 + 0100 = 1000(溢出标志打开)
如果符号位打开的两个数字之和产生符号位关闭的结果编号,则打开"溢出"标志.1000 + 1000 = 0000(溢出标志打开)
否则,"溢出"标志被关闭
请注意,您只需要查看三个数字的符号位(最左边)来确定溢出标志是打开还是关闭.
如果你正在做两个补码(带符号)算术,溢出标志表示答案是错误的 - 你添加了两个正数并得到了一个负数,或者你添加了两个负数并得到了一个正数.
如果你正在进行无符号算术,溢出标志意味着什么,应该被忽略.
有关更多说明,请参阅:http://teaching.idallen.com/dat2343/10f/notes/040_overflow.txt
Mic*_*iak 25
Carry Flag是在以下情况下设置的标志:
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位有符号数的范围.
您可以在维基百科上阅读有关标志的更多信息
| 归档时间: |
|
| 查看次数: |
89738 次 |
| 最近记录: |