2016-09-28 34 views
0

我无法理解“左移算术移位”。我有以下指令:~~汇编语言左移确认

SAL $0x2, edx 

edx = 0xFC

0xFC = 1111 1100 

通过左移2,我们应该有:

1111 0000 = 0xF0 

正确?

+1

是,可能与溢出标志集。 –

+1

恩,'edx'是一个32位寄存器,而不是一个8位寄存器。 –

+0

是的,但十六进制值仍然正确,是吗? – Sanya

回答

1

由于edx是一个32位寄存器,和edx = 0xFC(相当于edx = 11111100b),算术左移将导致1111110000b,换句话说,edx = 0x3F0