Wie speichere und verwende ich Rax -Ausgabe in ein Register für die spätere Verwendung?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie speichere und verwende ich Rax -Ausgabe in ein Register für die spätere Verwendung?

by Anonymous » Yesterday, 22:08

Ich habe eine Zuordnung zum Speichern und Aufschreiben einer in Buffer gespeicherten von vom Benutzer eingesperrten Zeichenfolge erhalten. Mein Professor sagte, dass die Anzahl der gelesenen Bytes in Rax gespeichert ist, nachdem der Benutzer die Zeichenfolge in Puffer eingegeben hat. Also habe ich versucht, die Daten von Rax in r8 zu speichern, um sie später zum Ausdruck von Puffer zu verwenden. Wenn R8 verwendet wird, um die richtige Länge auszudrucken, passiert nichts.

Code: Select all

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>
Das Programm soll ausdrucken: < /p>
What is your name? INPUTNAME Hello, INPUTNAME, nice to meet you!

, aber stattdessen druckt es ohne den Namen:

Code: Select all

What is your name? INPUTNAME Hello, , nice to meet you!

Ich bin neu in der Montage x86, daher weiß ich nicht, was Rax tatsächlich speichert, eine Nummer, eine Adresse, Mülldaten?

Top