Сборка чтения пользовательского ввода не ждет - PullRequest
1 голос
/ 04 мая 2020

У меня есть программа на ассемблере, которая должна написать «Как тебя зовут?», Затем дождаться ввода данных пользователем и затем напечатать «Привет». Это моя программа (Ma c, nasm):

section .data
 question db "What's your name?"
 answer db "Hello, "
 ln db 10

section .bss
 name resb 16

section .text
global start 
start:
 mov rsi, question
 mov rdi, 17
 call print
 call getName
 mov rsi, answer
 mov rdi, 7
 call print
 mov rsi, ln
 mov rdi, 1
 call print
 mov rax, 0x02000001
 mov rdi, 0
 syscall

print:
 mov rax, 0x02000004
 mov rdi, 1
 syscall
 ret
getName:
 mov rax, 0x02000003
 mov rdi, 0
 mov rsi, name
 mov rdx, 16
 syscall
 ret

Но эта программа пишет «Как тебя зовут? Привет», и только тогда ждет ввода пользователя. Почему он не ждет ввода, прежде чем пишет «Hello»?

1 Ответ

1 голос
/ 04 мая 2020

Я перепутал rdx и rdi в начале и забыл распечатать имя. Виноват. РЕДАКТИРОВАТЬ: Почему-то я не могу принять этот ответ, так что: Это он принятый ответ!

...