Estratto del documento
Linguaggio macchina 6502
Registri di stato
- Z: Indica se l’ultima operazione effettuata dalla ALU ha restituito 0.
- N: Contiene bit di segno dell’ultima operazione effettuata dalla ALU.
- V: Indica se l’operazione effettuata dalla ALU ha dato overflow.
- C: Contiene il bit di riporto dell’ultima somma effettuata dalla ALU.
Codificare gli indirizzi
- Little Endian: Il primo byte è il più basso (dato “FF00”, scrivo prima “00” e sotto “FF”).
- Big Endian: Il primo byte è il più alto (dato “FF00”, scrivo prima “FF” e sotto “00”).
6502 è Little Endian.
Indirizzamento
- LDA FF10 → Scrive il valore dell’indirizzo FF10 nel registro A.
- LDA 10,X = LDA (10,X) → A<--mem[10+X] → Aggiunge nel registro A il valore contenuto nell’indirizzo X+10 (X è un indirizzo relativo).
- LDA (10),X → A<--mem[mem[10]+X] → Aggiunge nel registro A… (boh).
- LDA #5 → Serve per dichiarare un valore (in questo caso carica il valore “5” nel registro A).
Convenzioni
- n: Valore numerico → #5 (1 byte).
- i: Indirizzo → FF10 (2 byte).
- z: Indirizzo di pagina 0 (1 byte).
Comandi principali
- LDx (Load register con x=A,X,Y): Scrive un valore nel registro x, modifica i bit di stato N e Z.
- STx (Store register): Copia il valore del registro x in una cella di memoria, non modifica bit di stato.
- JMP (jump): Salta all’indirizzo specificato, non modifica bit di stato.
- NOP (No operation): Non esegue nessuna azione.
Comandi aritmetici
- ADC (Add accumulator with carry): Effettua la somma di A + operatore + bit di carry e mette il risultato in A. Modifica i bit di stato: N, Z, C, V.
- SBC (Subtract accumulator with borrow): Effettua la somma di A + complemento dell'operatore + bit di carry e mette il risultato in A. Modifica i bit di stato: N, Z, C, V.
- CLC (Clear carry flag): Mette a 0 il bit di carry. Modifica il bit di stato: C.
- SEC (Set carry flag): Pone a 1 il bit di carry. Modifica il bit di stato: C.
- INx (Incrementa registro x): Incrementa di uno il valore contenuto nel registro x. Modifica i bit di stato: N, Z.
Codici operativi comuni
| Mnemonico | Codice Operativo | Semantica | Indirizzamento |
|---|---|---|---|
| LDA #n | A9 | A←n | Immediato |
| LDA i | AD | A←mem[i] | Assoluto |
| LDA z | A5 | A←mem[z] | Pagina 0 |
| NOP | EA | - | Implicito |
| STAi | 8D | mem[i]←A | Assoluto |
| STAz | 85 | mem[z]←A | Pagina 0 |
| STA (z) | 92 | ←Amem[mem[z]] | Indiretto pagina 0 |
| JMP i | 4C | PC←i | Assoluto |
| JMP (i) | 6C | PC←mem[i] | Indiretto |
Anteprima
Vedrai una selezione di 3 pagine su 6
Dettagli
SSD
Scienze matematiche e informatiche
INF/01 Informatica
I contenuti di questa pagina costituiscono rielaborazioni personali del
Publisher Mr.Al di informazioni
apprese con la frequenza delle lezioni
di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione
dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale
dell'università Università degli Studi di Parma o del prof Scienze matematiche Prof.
-
Architettura Elaboratori - Eckert
-
Architettura degli elaboratori
-
Architettura degli elaboratori
-
Architettura Elaboratori - Linguaggio Assembly IA-32 (anche esercizi)