Organizarea memoriei
Modurile de adresare ale lui 8086Ghid pentru memoriile RAM (En)
Ghid pentru memoriile DRAM (En)
Identificarea memoriilor DRAM (En)
Timpi de acces (En)
Componente DRAM (En)
Circuite DRAM (En)
Microprocesorul 8086 are posibilitatea
să adreseze un spațiu de memorie de 1Mo. Adresarea acestui spațiu de memorie
se face cu ajutorul a 20 de linii de adresă.
Pentru 8086 (sau x86 în modul real) memoria
este organizată în segmente ce au dimensiunea de 64Ko. Aceste segmente
de memorie sunt adresabile pe baza unui registru segment. Un segment poate
începe de la orice adresă de memorie care este multiplu de 16. Segmentele
se pot suprapune, total sau parțial, pot fi adiacente sau disjuncte.
La un moment dat sunt active patru segmente, corespunzătoar
celor patru registre segment ale lui 8086. Accesul unei locații de memorie
dintr-un segment se face cu ajutorul
unei adrese relative în cadrul segmentului, adresă numită deplasament (offset).
Acest mod de adresare format din adresă de segment și adresă relativă se
numește adresare logică. Deci o adresă logică are următoarea formă generală:
segment : offsetObs: La programarea în limbaj de asamblare se vor folosi adresele logice.
Adresa fizică a unei locații de memorie
(reprezentată pe 20 de biți) se obține din adresa logică adunând adresa
de segment înmulțită cu 16 (deplasată la stânga cu 4 biți) cu adresa relativă
în cadrul segmentului.
adresa_logică = segment : offsetObs: O aceeași adresă fizică poate fi reprezentată prin mai multe adrese logice, dar o adresă logică are o singură adresă fizică.
adresa_fizică = segment*16 + offset = segment<<4 + offset
mov al, 5Adresare la nivel de registru - operandul referit se găsește într-un registru.
mov bx, offset nume_variabila
mov ax, segment_date
mov ax, dxAdresare directă - în instrucțiune apare adresa operandului
mov ax, nume_variabilaAdresare cu bază - în instrucțiune apare registrul de bază utilizat. Ca registre de bază se pot folosi registrele BX și BP.
mov nume_variabila(2), ax
mov bx, offset nume_variabilaAdresare indexată - în instrucțiune apare registrul index utilizat.
mov ax, [bx]
mov cx, [bx+2]
mov si, 5Adresare cu bază și indexată - în instrucțiune apar registrele de bază și index.
mov ax, nume_variabila[si]
mov ax, nume_variabila[bx][di]
mov cx, nume_variabila[bx+si]
mov dx, nume_variabila[bx+si+5]