我在emu 8086模拟器中有以下代码行:
mov al,00100000b ror al,8
当al等于0000 0001时,进位和溢出这两个标志被关闭,但是当al等于1000 0000时,这两个标志被打开。进位标志是正确的-最后一个数字1在标志中,但为什么此操作也打开溢出标志?感谢您的帮助!!!
al
0000 0001
1000 0000
1
holgip5t1#
从Intel manual Vol 2B开始OF标志仅为1位循环定义;在所有其它情况下,它是未定义的(仅RCL和RCR指令除外:0位循环移位不执行任何操作,即不影响任何标志).对于左循环移位,OF标志设置为CF位(循环移位后)与结果得最高有效位得“异或.”对于右循环移位,OF标志设置为结果得两个最高有效位得“异或.”不确切地知道为什么ROR会有这种行为,也许这个特性可能被用来计算奇偶校验位。
ROR
1条答案
按热度按时间holgip5t1#
从Intel manual Vol 2B开始
OF标志仅为1位循环定义;在所有其它情况下,它是未定义的(仅RCL和RCR指令除外:0位循环移位不执行任何操作,即不影响任何标志).对于左循环移位,OF标志设置为CF位(循环移位后)与结果得最高有效位得“异或.”对于右循环移位,OF标志设置为结果得两个最高有效位得“异或.”
不确切地知道为什么
ROR
会有这种行为,也许这个特性可能被用来计算奇偶校验位。