如何在一个命令中加倍汇编中的数字?

时间:2016-08-27 13:33:29

标签: assembly

我有一个问题 我得到了这个汇编代码,我想在一个命令中将所有这3个数字加倍。

  x: DW 1
  y: DB 2
  z: DB 3

我知道这个问题的答案是:

  SHL DWORD[x], 1

但我不明白为什么?我的意思是它是如何运作的?

谢谢

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