Guida Completa alle Modalità di Indirizzamento 8086: Tutti i 10 Tipi Spiegati
Come l'8086 Trova i Suoi Operandi
L'architettura di memoria flessibile dell'Intel 8086 supporta 10 modalità di indirizzamento distinte, ciascuna che calcola l'indirizzo effettivo (EA) in modo diverso. Padroneggiarle è fondamentale per una programmazione assembly efficiente.
Le 10 Modalità di Indirizzamento
1. Indirizzamento a Registro
MOV AX, BX — Operando in un registro generale (AX, BX, CX, DX, SI, DI, BP, SP). Il più veloce, nessun accesso alla memoria.
2. Indirizzamento Immediato
MOV AX, 1234H — Operando codificato nell'istruzione stessa. Usato per costanti.
3. Indirizzamento Diretto (Assoluto)
MOV AX, [1234H] — Offset a 16 bit nell'istruzione; DS × 16 + offset = indirizzo fisso. Posizione di memoria fissa.
4. Indirizzamento Indiretto a Registro
MOV AX, [BX] / [SI] / [DI] / [BP] — Il registro contiene l'offset. BP default al segmento SS; gli altri a DS.
5. Indirizzamento Basato (Base-Relativo)
MOV AX, [BX+10H] — Registro base (BX/BP) + spostamento 8/16 bit. Accede a strutture, stack frame.
6. Indirizzamento Indicizzato
MOV AX, [SI+20H] — Registro indice (SI/DI) + spostamento. Ideale per l'indicizzazione di array.
7. Indirizzamento Basato Indicizzato
MOV AX, [BX+SI] — Base + indice, senza spostamento. Array bidimensionali, operazioni stringa.
8. Indirizzamento Basato Indicizzato con Spostamento
MOV AX, [BX+SI+30H] — Base + indice + spostamento 8/16 bit. Il più flessibile; array di strutture.
9. Indirizzamento Stringa (Implicito)
MOVSB / CMPSB / SCASB — DS:SI (sorgente), ES:DI (destinazione). SI/DI auto-inc/dec in base al flag DF. Nessun operando nell'istruzione.
10. Indirizzamento Relativo (IP-Relativo)
JMP SHORT LABEL / JNE LABEL — Spostamento firmato 8/16 bit aggiunto a IP. Usato per salti/call.
11. Indirizzamento Implicito (Inerente)
CLC / NOP / HLT — Operandi impliciti nell'opcode. Nessun calcolo di indirizzo.
Registri di Segmento e Default
| Modalità | Segmento Default | Prefisso Override |
|---|---|---|
| Basato su BP ([BP], [BP+SI], [BP+DI]) | SS | CS, DS, ES, SS |
| Tutti gli altri (BX, SI, DI, diretto) | DS | CS, ES, SS |
| Destinazione stringa (ES:DI) | ES | Non sovrascrivibile |
Riepilogo Calcolo Indirizzo Effettivo
EA = (Base? + Indice? + Spostamento?) mod 64 KB. Fisico = Segmento × 16 + EA.
Scegliere la modalità giusta riduce byte di istruzione, cicli e pressione sui registri—critico per i vincoli stretti dell'8086.