来自 cli 参数的文本是否需要在汇编中格式化? x86_64

Does text from cli argument need to be formatted in assembly? x86_64

在此应用程序中,我试图打印通过命令行参数传递的字符 (Intel Mac OS X)。例如:

./thisapp q

期望的输出:

q

然而,它打印出一堆符号和废话,但有趣的是,不同的字符会产生不同的乱码。这让我相信我很接近。是否需要 "formatted" 才能生成正确的字母?

.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
    push %rbp
    mov %rsp,%rbp
    lea -32(%rsp), %r10       #<--- should be argv
    add , %r10              #<--- should be argv[1]
    movl [=13=]x2000004, %eax
    mov , %edi
    mov %r10, %rsi
    mov , %edx
    syscall
    xor %rax, %rax
    mov [=13=]x2000001, %eax
    mov [=13=], %edi
    syscall

感谢大家的帮助,我才得以完成这项工作。这是其他人想要执行此操作时的代码:

.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
    push %rbp
    mov %rsp,%rbp
    lea 24(%rbp), %r10
    movl [=10=]x2000004, %eax  
    mov , %edi
    mov (%r10), %rsi
    mov , %edx
    syscall
    xor %rax, %rax
    mov [=10=]x2000001, %eax
    mov [=10=], %edi
    syscall

我想指出这只会打印 1 个元素 (letter/number)。我仍然需要弄清楚如何获得传递的任何内容的长度(大小?)。