![](/img/trans.png)
[英]MIPS assembly code--shifting left using an 8-bit shift count in memory
[英]Assembly bit shifting
给定%ecx
和%edx
的32位十进制数字,当尝试使用shl
和shr
移动原始数字的每个副本时,然后将进位(刚刚被剪切的位)移动到8位寄存器ah
和al
比较是否相等,我写道:
movl $32, %esi #counter
xor %eax, %eax
.LOOP:
shl %ecx
setb %ah
shr %edx
setb %al
cmp %ah, %al
jnz .np
decl %esi
jnz .LOOP
我究竟做错了什么?
您正在从相反的方向比较2个数字。 当ecx[i] == edx[32-i]
您的程序继续循环。 因此,您实际上是在检查ecx
是否包含edx
的倒数值(即具有重新排序的位)。 例如,对于值0x200000
ecx
和值0x400
edx
它将返回true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.