2017-06-22 45 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