我对装配很新,但我已经遇到了问题。这是我的代码的开始。无论参数是什么,printf只会打印常量。
section .data
msg: db "n = %d ",10,0
section .text
global _main
extern _printf
_main:
push ebp
mov ebp, esp
sub esp, 16
push DWORD [ebp +8]
push msg
call _printf
我被告知命令行arguemnts应该是+ 8,+ 12等指针,但这不起作用。现在它只打印n = 2.
答案 0 :(得分:1)
试试这个,它应该打印参数的数量和第一个参数
section .data
msg: db ""nbargs = %d, 1st argument = %s",10,0
section .text
global _main
extern _printf
_main:
push ebp
mov ebp, esp
sub esp, 16
mov eax,dword ptr [ebp+12]
mov ecx,dword ptr [eax+4]
push ecx
mov edx,dword ptr [ebp+8]
push edx
push msg
call printf
...
如果您的程序名为myprog,您应该例如获得此输出:
myprog myargument
nbargs = 2, 1st argument = myargument