Я хочу написать программу, которая возвращает строку, которую вы пишете. Но он всегда печатает его без первого символа. Кроме того, он не возвращает ничего за первое место.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 max –