假设我在AX中存储了以下值:1000100001001,在CL中我的值为1.
当我执行ROL AX,CL指令时,我的SW告诉我AX的内容现在是10001000010010。
不应该正确答案是00010000100101吗? (我ROL所有位到左边,因此MSB在右边是LSB?)
答案 0 :(得分:4)
您的调试器通过省略前导零来欺骗您。
1 0001 0000 1001
实际上是
0001 0001 0000 1001
所以是的,左旋一次是
0010 0010 0001 0010
请注意,如果您知道rol ax, cl
为1,则cl
毫无意义。rol
by 1具有特殊编码,并且您可以使用rol reg, imm8
编码用于其他计数。
答案 1 :(得分:2)
您忘记了设置为零(0)的其他位,但您不能表示但仍然存在:0001 0001 0000 1001
(16位)。滚动它时,答案是给定的。