Modalità di Indirizzamento 8086: Riferimento Completo
Modalità di Indirizzamento di Memoria dell'Intel 8086/8088
L'8086 fornisce modi flessibili per formare l'indirizzo effettivo (EA) a 20 bit da registri a 16 bit. Capirli è fondamentale per una programmazione assembly efficiente.
1. Indirizzamento a Registro
Operando in un registro. MOV AX, BX — nessun accesso memoria.
2. Indirizzamento Immediato
Operando codificato nell'istruzione. MOV CX, 1234h.
3. Indirizzamento Diretto (Assoluto)
Offset a 16 bit nell'istruzione. MOV AL, [1234h] → EA = DS:1234h.
4. Indirizzamento Indiretto a Registro
Offset in BX, SI, DI o BP. MOV DX, [SI] → EA = DS:SI (BP usa SS).
5. Indirizzamento Basato
Registro base (BX o BP) + spostamento 8/16 bit. MOV AX, [BX+10h].
6. Indirizzamento Indicizzato
Registro indice (SI o DI) + spostamento. MOV CL, [DI+20h].
7. Indirizzamento Basato Indicizzato
Base (BX/BP) + Indice (SI/DI). MOV BX, [BP+SI] → EA = SS:BP+SI.
8. Indirizzamento Basato Indicizzato con Spostamento
Base + Indice + disp8/16. MOV [BX+DI+4], AL.
9. Indirizzamento Stringa (Implicito)
MOVSB, CMPSW, STOSB… usano DS:SI (sorgente) e ES:DI (destinazione); auto-inc/dec per flag DF.
10. Indirizzamento Porta I/O
- Diretto:
IN AL, 3F8h(porta 8 bit). - Indiretto:
IN AL, DX(porta 16 bit in DX).
Prefissi di Sovrascrittura Segmento
Qualsiasi modalità memoria può essere prefissata da CS:, DS:, ES:, SS:, FS:, GS: (386+) per selezionare segmento.
Calcolo Indirizzo Effettivo (Modalità Reale)
EA = (Segmento × 16) + Offset. Offset = somma di base + indice + spostamento per modalità.
Scegliere la modalità giusta riduce byte istruzione, cicli e pressione sui registri—critico nel codice modalità reale a 16 bit.