Мне дали назначение для хранения и записи строки, внедренной пользователем, хранящейся в буфере . Мой профессор сказал, что количество чтения байтов сохраняется в RAX после того, как пользователь вводит строку в буфер. Итак, я попробовал хранить данные RAX в R8 , чтобы позже использовать их для распечатки буфера , но когда R8 используется для печати правильной длины, ничего не происходит.
Вот мой файл:
section .data ; we're not allowed to edit anything
; in section .data for this assignment
prompt: db "What is your name? "
prompt_len: equ $-prompt
buffer: times 255 db '!'
resp1: db "Hello, "
resp1_len: equ $-resp1
resp2: db ", nice to meet you!", 10
resp2_len: equ $-resp2
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, prompt ; "What is your name? "
mov rdx, prompt_len
syscall
mov rax, 0 ; prof. said output is stored here
mov rdi, 1
mov rsi, buffer ; user inputs their name
mov rdx, 225
syscall
mov r8, rax ; I tried storing rax into r8
syscall
mov rax, 1
mov rdi, 1
mov rsi, resp1 ; "Hello, "
mov rdx, resp1_len
syscall
mov rax, 1
mov rdi, 1
mov rsi, buffer ; name is printed out there
mov rdx, r8 ; I try to use r8 to print out the correct length
syscall
mov rax, 1
mov rdi, 1
mov rsi, resp2 ; ", nice to meet you!"
mov rdx, resp2_len
syscall
mov rax, 60
mov rdi, 0
syscall
< /code>
Программа должна распечатать: < /p>
What is your name? INPUTNAME Hello, INPUTNAME, nice to meet you!
Мне дали назначение для хранения и записи строки, внедренной пользователем, хранящейся в буфере . Мой профессор сказал, что количество чтения байтов сохраняется в RAX после того, как пользователь вводит строку в буфер. Итак, я попробовал хранить данные RAX в R8 , чтобы позже использовать их для распечатки буфера , но когда R8 используется для печати правильной длины, ничего не происходит. Вот мой файл: [code]section .data ; we're not allowed to edit anything ; in section .data for this assignment prompt: db "What is your name? " prompt_len: equ $-prompt
buffer: times 255 db '!'
resp1: db "Hello, " resp1_len: equ $-resp1 resp2: db ", nice to meet you!", 10 resp2_len: equ $-resp2
section .text
global _start _start:
mov rax, 1 mov rdi, 1 mov rsi, prompt ; "What is your name? " mov rdx, prompt_len syscall
mov rax, 0 ; prof. said output is stored here mov rdi, 1 mov rsi, buffer ; user inputs their name mov rdx, 225 syscall
mov rax, 60 mov rdi, 0 syscall < /code> Программа должна распечатать: < /p> What is your name? INPUTNAME Hello, INPUTNAME, nice to meet you![/code] , но вместо этого он печатает без имени: [code]What is your name? INPUTNAME Hello, , nice to meet you![/code] Я новичок в сборке x86, поэтому я не знаю, что на самом деле хранит Rax, номер, адрес, данные мусора?