Documente Academic
Documente Profesional
Documente Cultură
Adresarea Memoriei (RAM) :: Dresarea Memoriei ŞI Tivei
Adresarea Memoriei (RAM) :: Dresarea Memoriei ŞI Tivei
Cu ajutorul simbolului @data este accesibil adresa segmentului de date, care este generat
de Asamblor i care va fi plasat la n registrul DS.
Funcionarea Stivei
Stiva este o structur de memorie, generat de obicei n zona RAM (mai rar pe disc) cu un
mecanism de adresare special. n momentul generrii (declarrii) Stivei se stabilete o adres
de baz care va fi conservat pe parcursul activitii programului. Scrierile n Stiv au loc la
adrese succesive, ncepnd cu adresa de baz, n ordine cresctoare sau descresctoare.
Acestea sunt generate prin incrementarea respectiv decrementarea unui numrtor special, din
cadrul structurii procesorului, numit contor de stiv (SP stack pointer), al crui coninut
reprezint adresa vrfului stivei. Coninutul acestuia poate fi vizualizat cu programul de
monitorizare (TD.exe) n colul din dreapta, jos cu notaia ss. Adresa de stiv conine un
cmp corespunztor segmentului i unul corespunztor adresei efective. Citirile din stiv se
fac tot la adrese succesive, dar parcurse n ordine invers, prin acionarea n sens invers a
contorului de stiv. Acest mod de adresare este de tip LIFO (last input, first output
ultimul intrat, primul ieit) i este deosebit de eficient n anumite faze de funcionare a
programului, cum ar fi lucrul cu subprograme (subrutine, proceduri, funcii) sau lucrul
multi-task (programe paralele). Astfel, atunci cnd un program este ntrerupt de apelul unei
proceduri sau chiar de alt program, informaiile referitoare la starea execuiei programului
sunt pstrate n stiv. Structura de stiv este foarte avantajoas n cazul apelurilor de proceduri
incluse unele n altele, cnd recuperarea datelor trebuie fcut n ordine invers, la ieirea din
proceduri.
Lucrul cu Memoria
Transferurile la i din memorie se pot face prin intermediul instruciunilor de transfer de
tip Mov. Datele transferate vor fi plasate n memorie la o adres efectiv, n cadrul unui
segment de date, avnd adresa de baz plasat n registrul DS.
De exemplu, prin instruciunile de mai jos, este ncrcat o anumit locaie de memorie cu o
valoare data (10h):
Mov ax,10h
Mov bx,0h
Mov [bx+2],ax
Prima instruciune ncarc constanta, n notaie Hexa, 10h n registrul AX. Cea de-a doua
ncarc registrul BX cu valoarea corespunztoare unei adrese efective (0h). Ultima
instruciune ncarc coninutul registrului AX n locaia cu adresa de segment dat de DS i cu
adresa efectiv, dat de BX+2 (raportat la baza segmentului). Parantezele drepte arat c
este vorba de o adres a unei locaii de memorie. Constanta 2 joac rolul unui
deplasament, adic o translaie (deplasare) relativ la adresa indicat de BX.
Pentru valoarea deplasamentului poate fi utilizat registrul SI, aa cum se arat n exemplu
urmtor:
Mov ax,10
Mov bx,1
Mov si,2
Mov [bx+si],ax
Se poate spune c realizm o adresare indexat, registrul SI coninnd valoarea indexului,
valoarea bx+si artnd deplasarea fata de baza segmentului. Trebuie menionat c folosirea
registrului BX este necesar chiar dac conine valoarea zero.
n cazul procesoarelor din familia Intel 80x86, registrele au, de regul, i o funcie dedicat,
ca de exemplu:
AX registrul acumulator;