2017-06-22 64 views
0

我目前通過遵循Kip Irvine的「彙編語言x86編程」一書學習彙編編程。

對於之前的代碼,我執行的代碼MOV EAX, listSize行後得到的結果是,EAX等於18

我期待可變listSize爲包含值24(list是4個字節長,list2陣列是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

十六進制的'18'是十進制的'24'。 –

+0

@Someprogrammerdude哈哈謝謝。該死的我犯這樣的愚蠢錯誤 – Thor

回答

4

寄存器中的顯示的值都在十六進制(基數16),所以00000018是24進制數。

+0

謝謝克里斯,哈哈傻傻的我 – Thor