Sunteți pe pagina 1din 3

LABORATOR 7.doc pag.

1/3

LABORATOR 7

Structura programului sursă

Programul sursa editat in limbaj de asamblare este structurat corespunzator segmentelor


de memorie.

Segmentele de memorie sunt definite cu directivele asamblor (.segment pentru inceputul


segmentului si .ends pentru sfirsitul segmentului)

<nume> SEGMENT [<tip>]


<corp segment>
<nume> ENDS

Directivele asamblorului (comenzi de executat de catre asamblor) sunt specificate cu . la


inceput.

Stuctura programului este:

.model <tip_model_memorie>

.data [segment]
[.data ends]

[.stack <n>]

.code [segment]
end

- directiva .model specifica tipul de model de memorie folosit dupa cum urmeaza:
model tiny = in acest model toate segmentele de date, cod, stiva sunt intr-un singur
segment de memorie, cu dimensiunea mai mica de 64 koct.; toate adresele de sunt de tip
near; adresele sunt relative.
model small = in acest model segmentul de date poate fi separat de segmentul de
cod cu dimensiunea mai mica de 64 koct.; toate adresele de sunt de tip near; adresele
sunt relative.
model medium = in acest model segmentul de date poate fi mai mare de 64koct, iar
segmentul de cod cu dimensiunea mai mica de 64 koct.; toate adresele de sunt de tip
near; adresele sunt relative.
model compact = in acest model segmentul de date e mai mic de 64koct, iar
segmentul de cod poate depasi 64 koct.;
model large = in acest model segmentul de date poate fi mai mare de 64koct, dar o
structura de date nu poate depasi 64koct.; segmentul de cod poate depasi 64 koct.;
model huge = in acest model segmentul de date poate fi mai mare de 64koct;
segmentul de cod poate depasi 64 koct.;

- directiva .data precede declaratiile de date si initializarile


forma generala a datelor:
[<nume>] <tip> <lista_expresii>
unde:
nume = prin care este referita data; valoarea este valoarea este adresa la care se
gaseste in memorie la referire;
tip = DB – pentru date de tip octet
DW – date de tip cuvant
DD – date de tip pointer (dublu cuvant)

CHELAI Ozten –LABORATOR 7.doc


LABORATOR 7.doc pag. 2/3

DQ – date de tip virgula mobila, de 8 octeti; folosite pentru reprezentarea numerelor


reale
DT – date de 10 octeti pentru reprezentarea numerelor BCD
lista expresii = valorile cu care se initializeaza zona de date rezervate pentru declaratia
respectiva;
? indica rezervarea fara initializare.
pentru a initializa o zona de memorie cu aceeasi valoare se poate folosi functia de
multiplicare dup cu urmatoarea sintaxa:
<nr.> dup(<valoare>)
unde <nr.> reprezinta factorul de multiplicare, iar <valoare> valoarea care se
multiplica.

- directiva .code precede instructiunile ce reprezinta codul programului

Initializarea segmentului de date se va face cu instructiunile:


mov ax,@data
mov ds,ax
Instructiunea end indica sfarsitul programului.

2. Exercitiu Se va realiza urmatorul program in limbaj de asamblare, urmarind etapele


prezentate mai sus:
.model small
.stack 100h
.data
sir db 80 dup('$')
m1 db 'Primul program in limbaj de asamblare',13,10,'$'
m3 db ‘Introduceti sirul:$’
m2 db 'Sirul preluat de la tastatura este: ','$'
.code
;initializare segment de date
mov ax,@data
mov ds,ax

;afisare mesaj m1
mov ah,9
mov dx,offset m1
int 21h

;afisare mesaj m3
mov ah,9
mov dx,offset m3
int 21h

;preluare sir de la tastatura si depunere in memorie la adresa din dx


mov bx,0
mov cx,80
mov ah,3fh
mov dx,offset sir
int 21h

;afisare mesaj m2
mov ah,9h
mov dx,offset m2
int 21h

;afisare sir introdus


mov ah,9h

CHELAI Ozten –LABORATOR 7.doc


LABORATOR 7.doc pag. 3/3

mov dx,offset sir


int 21h

;apel functie de terminare normala a programului


mov ah,4ch
int 21h
end ; terminare program

3. Tema.
 Se va scie un program care preia un sir de caractere de la tastatura si afiseaza sirul
criptat prin translatie de 4 (aduna 4 la codul fiecarui caracter).
 Se va scie un program care preia un sir de caractere de la tastatura si afiseaza sirul
criptat dupa un cod propriu de criptare.

CHELAI Ozten –LABORATOR 7.doc

S-ar putea să vă placă și