无法掌握命令行参数

时间:2014-01-24 16:12:23

标签: assembly printf nasm

我对装配很新,但我已经遇到了问题。这是我的代码的开始。无论参数是什么,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.

1 个答案:

答案 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