字和内存地址

时间:2015-10-14 05:28:05

标签: assembly x86

字地址和内存地址如何相关?例如,我有一台32位机器。地址是4还是1?以下哪一项是正确的?

0x100: 0x 1111 2222
0x104: 0x 3333 4444

0x100: 0x 1111 2222
0x101: 0x 3333 4444

如果跳过4,我可以使用0x101访问11,0x102可以访问22吗?

1 个答案:

答案 0 :(得分:1)

X86可以解决位于几乎任何地址的字节,字和双字(参见LES / LDS / LSS);更具体地说,IA中最小的可寻址单元是一个字节;该体系结构是小端,字不与字大小对齐。在x86上限制适用于跨越段的内存地址:尝试访问CS / ES / SS / DS上的字:FFFF导致异常。

总结:

0x100: 01 02 03 04  <-- on 32-bit architecture (386+) contains 0x04030201
0x104: 05 06 07 07

The double word located at address 0x101 contains 0x05040302.
The 16-bit word located at address 0x101 contains 0x0302 and
The byte at 0x101 contains 0x02