我是新来的assmbly,我有一些问题。我用GCC编译了以下代码:
.intel_syntax noprefix
.section .data
number:
.int 65
message:
.ascii "The number is %d %d.\n\0"
.section .text
.globl _main
_main:
push ebp
lea eax, [message]
mov ebx, number
mov [esp + 8], ebx
add ebx, 1
mov [esp + 4], ebx
mov [esp], eax
call _printf
pop ebp
xor eax, eax
ret
它可以在控制台上显示消息The number is 66 65.
,但vscode显示一些错误,没有更多信息。
vscode output
我尝试删除mov [esp + 4], ebx
行,vscode显示的错误得到修复。
.intel_syntax noprefix
.section .data
number:
.int 65
message:
.ascii "The number is %d %d.\n\0"
.section .text
.globl _main
_main:
push ebp
lea eax, [message]
mov ebx, number
mov [esp + 8], ebx
add ebx, 1
mov [esp], eax
call _printf
pop ebp
xor eax, eax
ret
vscode output after fixing
有谁能帮我解决这个问题并解释一下吗?谢谢!
1条答案
按热度按时间ca1c2owp1#
感谢Peter先生/女士的回答(也感谢rpatel 3001先生/女士的回答),我通过保留堆栈空间来解决这个问题。
下面是修改后的代码: