我想編寫一個程序,它返回你寫的字符串。但它總是打印它沒有第一個字符。此外,它不會返回任何超過第一空間的東西。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 –