汇编语言指令问题? ? ?
问题描述:
mov eax,22h
mov ebx,45h
shld eax,ebx,32
执行后发现eax的值还是22h,怎么回事。
移位是8、16的话eax都会改变的,怎么32就不变了呢?
答
eax是32bit的,你移动32位应该溢出了。
你是x64的话,可以用 rax rbx 等64位寄存器。
答
百科了一下双精度移位。
移位计数值的范围为1到31,对于大于31的数,机器则自动取模32的值来取代。