【发布时间】:2016-03-20 20:12:15
【问题描述】:
我正在编写一个打印程序第二个参数的代码。我知道ebp+8 保存参数的数量,ebp+12 保存程序名称的地址等等。到目前为止,我有:
%include "asm_io.inc"
SECTION .data
err1: db "Incorrect number of command line arguments",10,0
SECTION .text
global asm_main
asm_main:
enter 0,0
pusha
mov eax, dword [ebp+8]
cmp eax, dword 2
jne ERR1
mov eax, dword [ebp+16] ; prints 1st letter of 2nd argument
mov al, byte[eax]
call print_string
jmp asm_main_end
ERR1:
mov eax, err1
call print_string
jmp asm_main_end
asm_main_end:
call print_nl
popa ; restore all registers
leave
ret
可执行文件名为lynarr。当我执行lynarr abcd 时,我能够打印程序名称(即lynarr),但我不明白如何打印第二个参数。我正在使用 redhat-linux 和 nasm 2.10.07。有任何想法吗?
【问题讨论】:
标签: linux assembly x86 command-line-arguments nasm