MOV immediato
Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 15 di 45.
La forma più semplice di MOV è MOV immediato. «Immediato» significa che il valore è scritto direttamente nell’istruzione stessa.
Sintassi:
mov register, valueIl valore viene copiato nel registro.
Esempi:
| Istruzione | Cosa fa |
|---|---|
mov rax, 5 | Copia il numero 5 in rax |
mov rbx, 100 | Copia il numero 100 in rbx |
mov rcx, 0 | Copia il numero 0 in rcx |
Questo codice non fa nulla di visibile (non produce ancora alcun output), ma inserisce correttamente i numeri nei registri.
Nota: Vedrai l’effetto di queste istruzioni MOV nelle lezioni successive, quando imparerai a stampare o a eseguire il debug. Per ora, sappi solo che i numeri sono memorizzati nei registri.
Regole importanti:
| Regola | Spiegazione |
|---|---|
| Il valore deve entrare nel registro | rax può contenere numeri molto grandi (fino a 2⁶⁴-1) |
| Il valore viene copiato, non spostato | Il numero originale esiste ancora (è solo un numero) |
| I registri a sinistra | mov rax, 5 è corretto. mov 5, rax è sbagliato |
Sfida
Scrivi una riga di codice assembly per ogni attività:
- Inserisci il numero 5 nel registro
rax. - Inserisci il numero 7 nel registro
rbx. - Inserisci il numero 3 nel registro
rcx.
Provalo tu
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"
; Salva i valori
mov r12, rax
mov r13, rbx
mov r14, rcx
; Stampa "rax = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; Stampa il valore di rax
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Stampa "rbx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; Stampa il valore di rbx
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Stampa "rcx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; Stampa il valore di rcx
mov rax, r14
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
syscallQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1La macchina
Che cos’è la CPUMemoriaRegistri vs memoriaCome funzionano le istruzioniSchema a due fileL’architettura x86-642Sistemi numerici
Perché il binario?Numeri binariDa decimale a binarioPerché l'esadecimale?Da esadecimale a decimaleDa decimale a esadecimaleASCII ed esadecimale5Chiamata di sistema di uscita
Cos'è una chiamata di sistema?Chiamata di sistema di uscita (60)Codici di uscitaRiepilogo: uscita correttaEsercitati da solo: Playground Assembly