Ecco la lista con la spiegazione di ciascun comando:
1. NR EQU 5
- Tipo: Definizione di Costante (Assembler Directive).
- Spiegazione: Definisce una costante simbolica chiamata
NR
con valore 5. Viene utilizzata per rendere il codice più leggibile.
2. LIST DCD 1,2,3,5
- Tipo: Dichiarazione di Dati (Assembler Directive).
- Spiegazione: Alloca in memoria una lista di valori costanti (1, 2, 3, 5). Il simbolo
LIST
punta all’inizio della lista.
3. ADD R1, R2, R3
- Tipo: Istruzione Aritmetica.
- Spiegazione: Somma i valori contenuti nei registri
R2
eR3
, memorizzando il risultato inR1
.
4. ADDS R1, R2, R3
- Tipo: Istruzione Aritmetica con aggiornamento dello Status Processor (PS).
- Spiegazione: Come
ADD
, ma aggiorna i flag di stato (Zero, Carry, Overflow, Negative) in base al risultato.
5. SUB R1, R2, R3
- Tipo: Istruzione Aritmetica.
- Spiegazione: Sottrae il valore del registro
R3
daR2
e memorizza il risultato inR1
.
6. SUBS R1, R2, R3
- Tipo: Istruzione Aritmetica con aggiornamento dello Status Processor (PS).
- Spiegazione: Come
SUB
, ma aggiorna i flag di stato in base al risultato.
7. LDR R1, [R3]
- Tipo: Operazione di Load (Caricamento da Memoria).
- Spiegazione: Carica il valore memorizzato all’indirizzo puntato da
R3
e lo salva nel registroR1
.
8. LDR R1, [R3,#5]
- Tipo: Operazione di Load con Spiazzamento.
- Spiegazione: Carica in
R1
il valore memorizzato all’indirizzo calcolato comeR3 + 5
.
9. STR R1, [R3]
- Tipo: Operazione di Store (Memorizzazione in Memoria).
- Spiegazione: Scrive il valore di
R1
nell’indirizzo puntato daR3
.
10. STR R1, [R3,#5]
- Tipo: Operazione di Store con Spiazzamento.
- Spiegazione: Scrive il valore di
R1
nell’indirizzo calcolato comeR3 + 5
.
11. NR FILL 4
- Tipo: Assembler Directive.
- Spiegazione: Riserva 4 byte di spazio vuoto nella memoria.
12. MOV R1,NR
- Tipo: Istruzione di Move.
- Spiegazione: Copia il valore della costante
NR
nel registroR1
.
13. CMP R1, [R2,#5]
- Tipo: Istruzione di Confronto.
- Spiegazione: Confronta il valore di
R1
con il valore caricato dall’indirizzoR2 + 5
e aggiorna i flag dello Status Processor (PS).
14. END
- Tipo: Assembler Directive.
- Spiegazione: Indica la fine del programma sorgente.
15. B
- Tipo: Istruzione di Salto.
- Spiegazione: Salta incondizionatamente all’indirizzo specificato.
16. BL
- Tipo: Istruzione di Salto con Link.
- Spiegazione: Salta incondizionatamente all’indirizzo specificato e salva l’indirizzo di ritorno nel registro
LR
(Link Register).
17. BLE
- Tipo: Istruzione di Salto Condizionato.
- Spiegazione: Salta se il risultato precedente era minore o uguale a zero (controllando i flag Z e N).
18. BLT
- Tipo: Istruzione di Salto Condizionato.
- Spiegazione: Salta se il risultato precedente era minore di zero (controllando i flag N e V).
19. BGE
- Tipo: Istruzione di Salto Condizionato.
- Spiegazione: Salta se il risultato precedente era maggiore o uguale a zero.
20. BGT
- Tipo: Istruzione di Salto Condizionato.
- Spiegazione: Salta se il risultato precedente era maggiore di zero.
21. BEQ
- Tipo: Istruzione di Salto Condizionato.
- Spiegazione: Salta se il risultato precedente era uguale a zero (flag Z settato).
Questi comandi rappresentano un mix di direttive assembly e istruzioni ARM che coprono operazioni aritmetiche, trasferimenti di memoria, confronti, salti e gestione del flusso del programma.