【发布时间】:2015-06-29 20:36:29
【问题描述】:
我在汇编 emu8086 模拟器中有以下几行:
mov al,00100000b
ror al,8
当al 等于0000 0001 时,Carry 和 Overflow 两个标志被关闭,
但是当al 等于1000 0000 时,这两个标志被打开了。
进位标志是可以的 - 最后一个数字1在标志中,但是为什么这个操作也会打开溢出标志?
谢谢你的帮助!!!
【问题讨论】:
我在汇编 emu8086 模拟器中有以下几行:
mov al,00100000b
ror al,8
当al 等于0000 0001 时,Carry 和 Overflow 两个标志被关闭,
但是当al 等于1000 0000 时,这两个标志被打开了。
进位标志是可以的 - 最后一个数字1在标志中,但是为什么这个操作也会打开溢出标志?
谢谢你的帮助!!!
【问题讨论】:
OF 标志仅针对 1 位循环定义;在所有其他情况下它是未定义的(RCL 和 RCR 指令除外 仅:零位循环不执行任何操作,即不影响任何标志)。对于左旋转,OF 标志设置为异或 CF 位(循环后)和结果的最高有效位。对于右旋转,OF 标志设置为 结果的两个最高有效位的异或。
不完全知道为什么ROR 有这种行为,也许这个特性可以用来计算奇偶校验位。
【讨论】: