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