2017-06-22 1 views
0

現在、Kip Irvineの「アセンブリ言語x86プログラミング」の本を読んでアセンブリプログラミングを学習しています。前に、私はコードMOV EAX, listSizeの行を実行した後に得た結果はEAX私は値24を含むように変数listSizeを期待していた同じ18

であることであるコードについて

listは、list2 4バイト長であります配列が20バイトの長さなので、現在の位置カウンタからlistを引いた$ - listの場合、私は24を取得する必要があります。

どうしてですか?私は何か間違ったことをしましたか

.386 
.model flat, stdcall 
.stack 4096 
ExitProcess PROTO, dwExitCode: DWORD 

.DATA 
list BYTE 10, 20, 30, 40 
list2 BYTE 20 DUP(0) 
listSize = ($ - list) 

.CODE 
    main PROC 
    MOV EAX, listSize 

INVOKE ExitProcess, 0 
main ENDP 
END main 

enter image description here

+5

16進数の「18」は、「24」の小数です。 –

+0

@Someprogrammerdude Lolありがとう。そんなに愚かな間違いをするために私のことを教えてください – Thor

答えて

4

レジスタに表示される値は、すべての進(ベース16)であるので、00000018は24進です。

+0

おかげで、chris、lol silly me – Thor

関連する問題