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 die Anweisung selbst geschrieben wird.
Syntax:
mov register, valueDer Wert wird in das register kopiert.
Beispiele:
| Anweisung | Was sie tut |
|---|---|
mov rax, 5 | Kopiert die number 5 in rax |
mov rbx, 100 | Kopiert die number 100 in rbx |
mov rcx, 0 | Kopiert die number 0 in rcx |
Dieser Code bewirkt nichts Sichtbares (noch keine Ausgabe), aber er legt erfolgreich Zahlen in Registern ab.
Hinweis: Du wirst die Wirkung dieser MOV-Anweisungen in späteren Lektionen sehen, wenn du lernst, etwas auszugeben oder zu debuggen. Für den Moment solltest du nur wissen, 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 aufnehmen (bis zu 2⁶⁴-1) |
| Der Wert wird kopiert, nicht verschoben | Die ursprüngliche Zahl existiert weiterhin (sie ist einfach eine number) |
| Register stehen auf der linken Seite | mov rax, 5 ist korrekt. mov 5, rax ist falsch |
Aufgabe
Schreibe für jede Aufgabe eine Zeile Assembly-Code:
- Lege die Zahl 5 in das
rax-Register. - Lege die Zahl 7 in das
rbx-Register. - Lege 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Übe selbstständig: Assembly-Playground