如何计算装配中的内存位移?

时间:2016-10-14 20:14:39

标签: memory assembly

我一直在使用yasm汇编语言,我生成了一个包含以下内容的列表文件。我需要帮助了解如何在第一列中计算内存位移。提前谢谢。

1                                %line 1+1 memory.asm
2                                [section .data]
3 00000000 04000000              a dd 4 
4 00000004 CDCC8C40              b dd 4.4 
5 00000008 00000000<rept>        c times 10 dd 0 
6 00000030 01000200              d dw 1, 2 
7 00000034 FB                    e db 0xfb
8 00000035 68656C6C6F20776F72-   f db "hello world", 0 
9 00000035 6C6400

1 个答案:

答案 0 :(得分:0)

汇编程序正在生成字节(机器代码),从某个起始地址(此处为0)开始并将它们放在一起。因此,首先a dd 4产生4个字节的数据04 00 00 00,因此填充地址0,1,2和3的存储器。下一个空闲时隙位于地址4.有b dd 4.4,再长4个字节。 c times 10 dd 0长40个字节,因此8 + 40 = 48(0x30)=&gt;下一个免费插槽。