我目前正在学习汇编编程,遵循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
答案 0 :(得分:4)
寄存器中的显示值均为十六进制(基数为16),因此00000018
为十进制24。