我想编写一个程序,它返回你写的字符串。但它总是打印它没有第一个字符。此外,它不会返回任何超过第一空间的东西。NASM - printf的不打印的第一个字符
例子:
IN: test
OUT: est
代码:
extern printf, scanf, exit
global main
section .text
main:
push rbp
;input of string
mov rdi, format
mov rsi, string
mov rax, 0
call scanf
;output of string
mov rdi, format_out
mov rsi, qword [string]
mov rax, 0
call printf
_exit: ;end of program
pop rbp
call exit
section .data
format db "%s", 0
string db 0
format_out db "You wrote: %s", 0
我注意到,如果我改变string db 0
到string db
”,它显示了一个错误,但该程序正常工作,打印整个句子的第一空间。不幸的是,我没有任何线索如何处理这些信息。感谢您的回答。
我想'string'是存储用户输入的字符串变量。你期望用户输入多少个字符?变量'string'的大小是多少? –
我不知道。假设20是最大字符数。现在我该怎么做? – Zumalo
那么你应该分配超过1个字节的字符串,足以让你的最高20 –