我正在处理一个程序集项目,出于某种原因,当我进入调试器并查看正在执行的调用语句时,它正在跳过第一个push语句。
使用call语句:
push offset strPrompt
push offset strNum
push offset iArray1
call inputArray
add esp, 12
mov iNumOfEntries, eax
电话声明:
inputArray proc
mov al, al
push ebp
mov ebp, esp
push ebx
push ecx
entryLoop1:
mov ebx, 0
mov ecx, 0
invoke putstring, [ebp+16]
invoke getstring, [ebp+12], 10
invoke ascint32, [ebp+12]
jc entryLoop1
cmp eax, -1
je endMethod
mov [[ebp+8][ecx]], eax
add ecx, 4
inc ebx
jmp entryLoop1
endMethod:
mov eax, 0
mov eax, ebx
pop ecx
pop ebx
pop ebp
ret
inputArray endp
答案 0 :(得分:0)
inputArray proc
mov al, al
push ebp
mov ebp, esp
当您使用PROC指令时,汇编程序会自动生成序言/结尾代码。你不应该自己写。这很好地解释了您没想到的调试器输出。
汇编程序在遇到PROC指令后的第一条指令或标签时会自动生成序言代码 汇编程序在遇到RET或IRET指令时会生成结尾代码。