【问题标题】:Assembly - the effect on EAX by AL组装 - AL 对 EAX 的影响
【发布时间】:2015-07-17 09:18:17
【问题描述】:

我知道以下代码:

MOV AL, 8 ; 

会将值 8(十进制)放入 EAX 的最低字节。但是,如果 EAX 里面已经存储了十进制值 1,会发生什么,它会覆盖它吗?

所以...

XOR EAX, EAX ;
INC EAX ; 
MOV AL, 8 ; 

EAX 现在是否只包含十进制 8?

【问题讨论】:

    标签: assembly x86 cpu-registers


    【解决方案1】:

    当 EAX 包含 1 时,高字节包含 0 和 AL 1 - 这是 32 位整数中的数字表示。在 AL 中移动 8 时,EAX 仍然有其他三个字节为 0,整个整数现在为 8。

    【讨论】:

      【解决方案2】:

      是的,它复制目标操作数并将其替换为源操作数,源操作数不变。

      【讨论】:

      • 好的,我只是不知道在增加 EAX 时,值 1 是否会在 4 个字节内,即高、低或其他。假设它总是被推到最低字节,除非另有说明
      • 澄清一下,如果将 1 首先放入 EAX 的最高位字节,它将等于 0001 0000 0000 0000,即十进制的 4096,因此必须将其放入最低字节 (AL) 0001 被替换乘以 1000 = 8
      • INC EAX 的默认值在哪里,是低阶吗?
      • 是的,INC EAX 指令相当于 ADD EAX,1
      • @NhatMLe 您的澄清评论是错误的! EAX 的最高位字节中的 1 将产生 0001 0000 0000 0000 0000 0000 0000 0000。这比十进制的 4096 大得多。
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2013-02-17
      • 2021-06-12
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多