大会:ROL指令是否正确?
比方说,我有以下值存储在AX:1000100001001和CL我有值1。
当我执行ROL AX,CL指令时,我的SW告诉我AX的内容现在是10001000010010。
但是,不应该正确答案是00010000100101? (I将所有位左移,因此MSB在右侧出现为LSB?)
您的调试器通过忽略前导零来欺骗您。
1 0001 0000 1001
实际上是
0001 0001 0000 1001
所以是的,其中一个左旋是
0010 0010 0001 0010
请注意,如果你知道cl
是1, rol ax, cl
是毫无意义的rol
by 1有一个特殊的编码,并且有一个rol reg, imm8
编码可以用于其他计数。
您忘记了其他设置为零(0)的位,但您不表示但仍然存在: 0001 0001 0000 1001
(16位)。 当你滚动这个时,答案就像给出的一样。