六、命令行参数 [Linux汇编语言开发指南]
nasm吧
全部回复
仅看楼主
level 1
DJ南 楼主
在 Linux 操作系统中,当一个可执行程序通过命令行启动时,其所需的参数将被保存到栈中:首先是 argc,然后是指向各个命令行参数的指针数组 argv,最后是指向环境变量的指针数据 envp。在编写汇编语言程序时,很多时候需要对这些参数进行处理,下面的代码示范了如何在汇编代码中进行命令行参数的处理:
例3. 处理命令行参数
# args.s
.text
.globl _start
        
_start:
        popl%ecx# argc
vnext:
        popl%ecx# argv
        test %ecx, %ecx      # 空指针表明结束
        jzexit
        movl%ecx, %ebx
        xorl%edx, %edx
strlen:
        movb(%ebx), %al
        inc%edx
        inc%ebx
        test%al, %al
        jnzstrlen
        movb$10, -1(%ebx)
        movl$4, %eax        # 系统调用号(sys_write) 
        movl$1, %ebx        # 文件描述符(stdout) 
        int$0x80
        jmpvnext
exit:
        movl$1,%eax         # 系统调用号(sys_exit) 
        xorl%ebx, %ebx      # 退出代码
        int $0x80
        ret

2009年06月02日 18点06分 1
1