Menu
Coddy logo textTech

MOV da registro a memoria

Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 18 di 45.

Ora che sai come caricare i dati dalla memoria in un registro, imparerai il processo inverso: memorizzare i dati da un registro nella memoria.

Sintassi:

mov [address], register

Le parentesi [ ] significano: "memorizza il valore dal registro in questo indirizzo di memoria."

Pensala così:

Immagina che all’indirizzo di memoria destination ci sia una scatola vuota. Hai un valore in un registro (per esempio, al contiene il numero 7).

Quando scrivi:

mov [destination], al

Stai dicendo alla CPU: "Prendi il valore dal registro al (7) e mettilo nella casella chiamata destination."

Dopo l'esecuzione di questa istruzione, l'indirizzo di memoria destination ora contiene il valore 7. Il valore in al rimane lì. Non viene rimosso.

Esempio:

mov al, 7            ; Inserisci 7 nel registro al
mov [destination], al ; Memorizza il valore di al all'indirizzo di memoria "destination"

Nota: In questo esercizio, i dati in memoria sono di 1 byte (8 bit). Ecco perché usiamo al. È il registro a 8 bit che corrisponde alla dimensione. Imparerai di più sulle dimensioni dei registri più avanti.

Regole importanti:

RegolaSpiegazione
Le parentesi quadre sono obbligatoriemov destination, al sarebbe errato
La destinazione deve essere un indirizzo di memoriaUsa un'etichetta come [destination]
Le dimensioni devono corrisponderePer questo esercizio, usa al (8 bit)

Errore comune:

; Errato: mancano le parentesi quadre
mov destination, al

; Corretto: memorizza il valore in memoria
mov [destination], al

Nella sfida qui sotto, l’indirizzo di memoria destination è già stato creato per te. Imparerai a creare i tuoi dati nel capitolo 3. Per ora, concentrati solo sull’istruzione MOV.

challenge icon

Sfida

Scrivi due righe di assembly per:

  1. Inserire il numero 9 nel registro al
  2. Memorizzare il valore di al all’indirizzo di memoria destination

(L’indirizzo di memoria destination è già stato creato per te.)

Provalo tu

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

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm è incluso qui
    ; Definisce destination AND le istruzioni MOV dello studente
    
    %include "solution.asm"
    
    ; Carica il valore memorizzato dalla memoria in al per stamparlo
    mov al, [destination]
    
    ; Salvalo
    mov r12, rax
    
    ; Stampa "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Stampa il valore
    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Esci
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Assembly