Menu
Coddy logo textTech

MOV Register zu Speicher

Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 18 von 45.

Nachdem du nun weißt, wie man Daten aus dem Speicher in ein Register lädt, lernst du jetzt das Gegenteil: Daten aus einem Register im Speicher speichern.

Syntax:

mov [address], register

Die Klammern [ ] bedeuten: „Speichere den Wert aus dem Register an dieser Speicheradresse.“

Stell es dir so vor:

Stell dir vor, dass sich an der Speicheradresse destination eine leere Box befindet. Du hast einen Wert in einem register (zum Beispiel enthält al die Zahl 7).

Wenn du schreibst:

mov [destination], al

weist du die CPU an: „Nimm den Wert aus dem al-register (7) und lege ihn in das Fach namens destination.“

Nachdem diese Anweisung ausgeführt wurde, enthält die Speicheradresse destination nun den Wert 7. Der Wert in al bleibt dort. Er wird nicht entfernt.

Beispiel:

mov al, 7            ; Lege 7 in das al-Register
mov [destination], al ; Speichere den Wert aus al in die Speicheradresse "destination"

Hinweis: In dieser Übung sind die Daten im Speicher 1 Byte (8 Bit) groß. Deshalb verwenden wir al. Es ist das 8-Bit-Register, das zur Größe passt. Mehr über Registergrößen lernst du später.

Wichtige Regeln:

RegelErklärung
Die Klammern sind erforderlichmov destination, al wäre falsch
Das Ziel muss eine Speicheradresse seinVerwende ein Label wie [destination]
Die Größe muss übereinstimmenVerwende für diese Übung al (8 Bit)

Häufiger Fehler:

; Falsch: fehlende Klammern
mov destination, al

; Richtig: speichert den Wert in den Speicher
mov [destination], al

In der folgenden Herausforderung wurde die Speicheradresse destination bereits für dich erstellt. Du wirst in Kapitel 3 lernen, wie du deine eigenen Daten erstellst. Konzentriere dich vorerst einfach auf die MOV-Anweisung.

challenge icon

Aufgabe

Schreibe zwei Assemblierungszeilen, um Folgendes zu tun:

  1. Die Zahl 9 in das Register al schreiben
  2. Den Wert aus al an der Speicheradresse destination speichern

(Die Speicheradresse destination wurde bereits für dich erstellt.)

Probier es selbst

section .data
    msg db 'destination = '
    msg_len equ $ - msg

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm wird hier eingebunden
    ; Es definiert destination UND die MOV-Anweisungen des Studenten
    
    %include "solution.asm"
    
    ; Lade den gespeicherten Wert aus dem Speicher in al zum Drucken
    mov al, [destination]
    
    ; Speichere es
    mov r12, rax
    
    ; Drucke "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Drucke den Wert
    mov rax, r12
    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
    syscall
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Assembly-Playground