x86 汇编语言,当前位置计数器 $ 没有 return 预期结果

x86 assembly language, current location counter $ did not return the expected result

我目前正在按照 Kip Irvine 的 "assembly language x86 programming" 书学习汇编编程。

对于之前的代码,我执行代码行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

寄存器中显示的值都是十六进制(基数16),所以00000018是十进制的24。