【问题标题】:Assembler x86 without stdlib没有标准库的汇编器 x86
【发布时间】:2015-12-22 17:05:37
【问题描述】:

我想在运行汇编程序时读取命令行参数。我必须使用sys_read 或其他什么吗?

我知道如何使用 scanf 之类的东西访问数据。例如:

mov eax, 3
mov ebx, 1
mov ecx, msg
mov edx len
int 0x80

不过,我正在寻找的是命令行参数。例如,当我执行./a.out 45 23 时,我想访问“45”。

因此,如果有人有 unixstd.h 定义的页面...我将不胜感激。

【问题讨论】:

  • 命令行参数使用特定于操作系统的方式传递给您。对于 ELF32 linux,您可以将它们放在堆栈上。见Startup state of a Linux/i386 ELF binary
  • 所以,我试了一下,它看起来像这样: pop eax ;流行 ebx ; mov ecx,偏移味精; mov [ecx], eax;但是当我想把它写在屏幕上时......那它只是随机字符

标签: linux assembly x86 32-bit


【解决方案1】:

在 ELF32 Linux 下可以通过堆栈访问命令行参数:

mov eax, [esp+8]
mov ebx, [eax]
mov ecx, offset msg
mov [ecx], ebx

感谢@Jester 在 cmets 中的回答!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2016-01-11
    • 2021-07-31
    相关资源
    最近更新 更多