问题描述
我的组装寄存器的理解说,每个寄存器可以通过整个32位code进行访问,它被分成多个访问寄存器。在这个例子中 EAX
是一个32位的寄存器,如果我们调用 AX
它应该返回的前16位,如果我们称之为 AH
或 AL
应该在16位和 AL后返回接下来的8位
应返回的最后8位。
My understanding of assembly registers say that each register can be accessed by the entire 32 bit code and it is broken into multiple accessible registers. In this example EAX
being a 32 bit register, if we call AX
it should return the first 16 bits, and if we call AH
or AL
it should return the next 8 bits after the 16 bits and AL
should return the last 8 bits.
所以我的问题,因为我不真的相信这是它是如何运作的。如果我们存储七个32位值...又名 EAX
存储
So my question, because I don't truly believe is this is how it operates. If we store a 32 bit value of seven... aka EAX
storing
0000 0000 0000 0000 0000 0000 0000 0111
所以,如果我们称之为 AX
它应该返回
0000 0000 0000 0000
如果我们称之为 AH
它应该返回
if we call AH
it should return
0000 0000
当我们调用 AL
它应该返回
0000 0111
这是正确的?如果它是什么样的价值呢调用 AH
真正为?
推荐答案
没有,这是不完全正确。
No, that's not quite right.
EAX is the full 32-bit value
AX is the lower 16-bits
AL is the lower 8 bits
AH is the bits 8 through 15 (zero-based)
这篇关于汇编语言编程内存分配EAX VS AX,AH,AL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!