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。
我目前正在按照 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。