我有一个问题 我得到了这个汇编代码,我想在一个命令中将所有这3个数字加倍。
x: DW 1
y: DB 2
z: DB 3
我知道这个问题的答案是:
SHL DWORD[x], 1
但我不明白为什么?我的意思是它是如何运作的?
谢谢
答案 0 :(得分:1)
x: DW 1
y: DB 2
z: DB 3
当以二进制形式查看为DWORD时,上述变量将等于:
00000011000000100000000000000001
x86系统是little-endian,因此位于内存中的x
显示在DWORD的最不重要部分,而z
显示在最重要的部分。
如果我们将这些位向左移一位(这是SHL
指令的作用),我们得到:
00000110000001000000000000000010
让我们插入一些空格将这些位分组为一个字和两个字节:
00000110 00000100 0000000000000010
z=6 y=4 x=2