sys_write 不会将消息打印到终端

sys_write 不会将消息打印到终端

我正在尝试使用这个例子来探索 GNU Assembler:https://0xax.github.io/asm_1/

我的代码 main.s 是

 .data
 message: .ascii "ASSEMBLY OUTPUT"

.text
.globl _start

_start:
movq $1, %rdi
movq $1, %rax
movq $15, %rdx
movq $message, %rsi
syscall
movq $60, %rax
movq $0, %rdi
syscall

命令行准备:

作为-g -o main.o main.s

ld -o 主要 main.o

现在,我运行 ./main 但它没有打印任何内容并且终端正在等待我的下一个命令。

发生什么问题了?

在 GNU 调试器中,数字已成功存储在寄存器中。

我在 RAX 中看到第一个系统调用的结果“-14”。

答案1

我建议在输出字符串中添加换行符,以便它脱颖而出。请尝试以下版本:

.data
message: .ascii "\nASSEMBLY OUTPUT\n\n"
msglen = . - message

.text
.globl _start

_start:
movq $1, %rdi
movq $1, %rax
movq $msglen, %rdx
movq $message, %rsi
syscall
movq $60, %rax
movq $0, %rdi
syscall

相关内容