MOV Immediate
Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy — Lektion 15 von 45.
Die einfachste Form von MOV ist MOV immediate. „Immediate“ bedeutet, dass der Wert direkt in der Instruktion selbst geschrieben steht.
Syntax:
mov register, valueDer Wert wird in das Register kopiert.
Beispiele:
| Anweisung | Beschreibung |
|---|---|
mov rax, 5 | Kopiert die Zahl 5 in rax |
mov rbx, 100 | Kopiert die Zahl 100 in rbx |
mov rcx, 0 | Kopiert die Zahl 0 in rcx |
Dieser Code bewirkt nichts Sichtbares (noch keine Ausgabe), aber er schreibt erfolgreich Zahlen in Register.
Hinweis: Sie werden die Auswirkungen dieser MOV-Anweisungen in späteren Lektionen sehen, wenn Sie lernen, wie man druckt oder debuggt. Wissen Sie vorerst nur, dass die Zahlen in den Registern gespeichert sind.
Wichtige Regeln:
| Regel | Erklärung |
|---|---|
| Der Wert muss in das Register passen | rax kann sehr große Zahlen speichern (bis zu 2⁶⁴-1) |
| Der Wert wird kopiert, nicht verschoben | Die ursprüngliche Zahl existiert weiterhin (es ist nur eine Zahl) |
| Register auf der linken Seite | mov rax, 5 ist korrekt. mov 5, rax ist falsch |
Aufgabe
Schreiben Sie für jede Aufgabe eine Zeile Assembly-Code:
- Schreiben Sie die Zahl 5 in das
rax-Register. - Schreiben Sie die Zahl 7 in das
rbx-Register. - Schreiben Sie die Zahl 3 in das
rcx-Register.
Probier es selbst
section .data
msg_rax db 'rax = '
msg_rax_len equ $ - msg_rax
msg_rbx db 'rbx = '
msg_rbx_len equ $ - msg_rbx
msg_rcx db 'rcx = '
msg_rcx_len equ $ - msg_rcx
section .bss
digit resb 1
section .text
global _start
_start:
%include "solution.asm"
; Werte speichern
mov r12, rax
mov r13, rbx
mov r14, rcx
; "rax = " ausgeben
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; rax-Wert ausgeben
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; "rbx = " ausgeben
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; rbx-Wert ausgeben
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; "rcx = " ausgeben
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; rcx-Wert ausgeben
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Beenden
mov rax, 60
mov rdi, 0
syscallDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Die Maschine
Was ist eine CPUSpeicherRegister vs. SpeicherWie Befehle funktionierenZwei-Dateien-MusterDie x86-64 Architektur