很简单的问题。
这个 nasm 应该将用户编写的消息(即 hello)写入文件,再次由用户输入的参数确定。它这样做很好,但问题是,它也会写入所有未使用的空字节。例如,如果我为用户输入保留了 32 个字节,而用户只使用了 4 个字节作为输入,那么这些字节将连同 28 个空字节一起被打印出来。
如何停止打印空字节?
使用的代码:
global _start
section .text
_start:
mov rax, 0 ; get input to write to file
mov rdi, 0
mov rsi, msg
mov rdx, 32
syscall
mov rax, 2 ; open the file at the third part of the stack
pop rdi
pop rdi
pop rdi
mov rsi, 1
syscall
mov rdi, rax
mov rax, 1 ; write message to file
mov rsi, msg
mov rdx, 32
syscall
mov rax, 3 ; close file
syscall
mov rax, 1 ; print success message
mov rdi, 1
mov rsi, output
mov rdx, outputL
syscall
mov rax, 60 ; exit
mov rdi, 0
syscall
section .bss
msg: resb 32
section .data
output: db 'Success!', 0x0A
outputL: equ $-output