2016-10-14 6 views
0

私は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 

答えて

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)=>次の空いているスロットです。

関連する問題