Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




LUCRARE DE LABORATOR - Asamblarea si insusirea programelor

Informatica


MINISTERUL EDUCAŢIEI sI sTIINŢEI

AL REPUBLICII MOLDOVA



UNIVERSITATEA TEHNICA A MOLDOVEI

Facultatea: CIM

Catedra: Tehnica de Calcul

Referat

LUCRARE DE LABORATOR NR.1

Tema: Asamblarea si însusirea programelor.

A eleborat:  st. grupei

A verificat:  profesor

CHISINAU 2004

Scopul lucrarii

a)   Însusirea ciclului întreg de asamblare a programelor.

b)   Însusirea sistemelor de comenzi si metodele de adresare a operantilor procesoarelor în regim real cu ajutorul lui Turbo Debugger

2. Efectuarea lucrarii:

a1) Codul sursa al programului cu directive simplificate 

de segmentare:

title Program_EXE

DOSSEG

.MODEL small

.STACK 512

; segmentul de date

.DATA

cr equ 10

lf equ 13

Lista1 DB 'Programul a fost efectuat',lf,cr,'$'

;segmentul de program (cod)

.CODE

;punctual de intrare

Program_Start:

mov ax,@DATA

mov ds,ax

mov dx,offset Lista1

mov ah,09h

int 21h

;sfirsim programul cu reluare

;in sistemul de operare

mov ah,4ch

int 21h

END Program_Start

a2) Teorie:

La culegerea codului sursa al programului de pe tastatura pot fi utilizate atît caracterele mari cît si mici;

Prima directiva din textul programului-Title -da posibilitatea de a-i acorda programului un titlu de text. Programul este alcatuit din trei segmente: de stiva, date si programe.

Segmentarea este realizata de directivele: .stack, .data si .code. Directiva .stack n aloca o zona avînd lungimea n si care este segmentul de stiva, ".stack 512" va aloca un segment de lungimea 512 octeti sau (200h).

Daca scriem o procedura ce va fi apelata dintr-un limbaj evaluat, atunci segmentul de stiva va fi declarat de catreprogramul apelator, ".DATA" ea semnalizeaza despre începutul segmentului de date initializate din program, dar mai initial e necesar de utilizat directive .Model . În DOS sunt posibile sase modele de memorie. Prin model noi întelegem de fapt un mod de dispunere în memoria RAM a segmentelor care alcatuiesc un program:

foarte mic- model tiny LP+LD+LS<64Ko

mic-model small LP<64Ko si LD+LS<64Ko

mediu-model medium 64Ko<=LP<1Mo si LD+LS<1Mo

compact-compact LP<64Ko si 64Ko<=LD+LS<1Mo

mare-large 64Ko<=LP<1Mo si 64Ko<=LD+LS<1Mo

foarte mare-huge ,

directiva .Model trebuie plasata înaintea directivelor .stack, .code, .data.

Directiva .code determina începutul codului de program. Inisial e necesar de utilizat directiva .Model pentru determinare modelului de memorie. La .code se poate de inclus si un parametru "nume" pentru model mare sau mediu. Simbolul @data primeste adresa segmentului de date.



Programul, de obicei, consta din proceduri ce sporeste gradul de concretizare a programului. Procedurile sunt anuntate de catre directiva PROC si sunt închise cu directiva ENDP. înaintea ambelor este indicat un parametru -numele procedurii.

De exemplu: DELAY PROC NEAR

;instrucsiunile procesorului

ret

DELAY ENDP

În continuare este utilizata una din functiile de serviciu al întreruperii 21h-09h (afisarea mesajului pe ecranul display-ului.). Aceasta functie necesita ca în registrul AH sa fie încarcat numarul functiei apelate:

mov ah,09h

în registru DS:DX se încarca adresa mesajului ce va fi afisat:

mov DX, offset Lista1

si este apelata întreruperea 21h:

int 21h

Mai mentionam faptul ca mesajul ce trebuie afisat cu ajutorul acestei functii trebuie sa se sfîrseasca cu caracterul ,$' .

Textul programului se încheie cu apelul functiei 4ch, ce îndeplineste functia de revenire la sistemul de operare DOS.

Directiva END din sfîrsitul programului sfîrseste asamblarea programului.

b1) Un program de tip .COM difera de cel de tip .EXE prin aceia ca contine numai un singur segment.

Structura si modelul de memorie a programului de tip .COM:

title Program_COM

.model Tiny ; modelul de memorie

.code

ORG 100h

start:

jmp  Begin

;determinarea datelor

Lista2 db "programul a parcurs bine,bravo",13,10,'$'

;textul programului

Begin: mov ah,09h

mov dx,offset Lista2

int 21h

mov ah,4ch

int 21h

end start

b2) Teorie:

Programul contine un singur segment, adica el va ocupa în memorie nu mai mult de 64Kocteti, fiindca este modelul tiny. Directiva ORG 100h rezerva o zona de memorie de 256 octeti pentru adresa PSP. Daca este binevenit ca datele sa fie dizlocate la începutul programului, atunci înaintea lor trebuie înscrisa instructiunea de salt spre punctul real de intrare în program:

"jmp Begin"

c1) Procesul de dezvoltare-testare a unui program în limbajul de asamblare implementarea Borland:

Un program este alcatuit din mai multe linii sursa, unde ea este alcatuita din urmatorii atomi lexicali:

<Eticheta:> <Mnemonicul> <Operanzii> <;Comentariul>

<Eticheta:> este un nume symbolic asociat unei adrese de memorii.

<Mnemonicul> se refera la denumirea codului operatiei unei instructiuni, de exemplu: .code, .data, dosseg, etc.

<Operanzii> însotesc de regula aceste categorii enumerate mai sus. De pilda instructiunea mov p da doi operanzi:

"mov ax,cx"

iar directiva de mai jos un singur operand:

".Stack 512"

<;Comentariul> este ultimul din atomii lexical ce este construit dintr-o secventa de cuvinte-text explicativ-precedat de separatorul punct si virgula.

Acesti patru atomi lexicali nu trebuie sa fie toti prezenti pe o aceasi linie de program.

Se da un program în care apar toti atomii enumerati de mai sus:

dosseg

.model small

.stack 100h

.data

Lista_1 db 'Inveti la Universitate DOS-UL (DA/NU) ? $'

.code

Start:

mov ax,@data

mov ds,ax

;Functia DOS pentru afisare

;unui sir "print string"

mov ah,09h

mov dx,offset lista_1

int 21h

mov ah,4ch

int 21h

end Start

c2) Teorie:

Simbolul Start constituie o eticheta, iar lista_1 se numeste variabila. Limbajul accepta ca denumirea unui simbol sa fie alcatita din 1-31 caractere, primul caracter fiind o litera alfabetica sau unul din caracterele "_" , "@" , "?" sau "$".

Etichetele si variabilele pot fi folosite ca operanzi. Instructiunile

"mov dx,offset lista_1

mov ah,4ch"

contin fiecare operanzi.



Directiva .data precede segmentul de date, iar directiva .code anunta începutul segmentului de cod (program).

d) Ciclul de dezvoltare-testare:

Vorbim despre compilare (cum are loc executia programului):

Aici se vorbeste despre: asamblarea, editarea legaturilor si depenarea, specifice implementari Borland.

Procesul programului include unele etape:

-crearea fisierului sursa, cu extinderea numelui .ASM;

-asamblarea fisierului sursa cu ajutorul componentei TASM.EXE cu scopul obtinerii modului obiect;

-editarea legaturilor cu ajutorul editorului de legaturi, programul TLINK.EXE, cu scopul generarii modului executabil.

-depenarea programului executabil cu ajutorul depenatorului simbolic Turbo Debugger sau DEBUG.

Daca fisierul sursa al programului are numele Drochia.ASM atunci comanda de apelare a asamblorului va fi:

Tasm /la/zi/ Drochia

Controlul /la contribuie la obtinerea unui listing complet. TASM va genera un fisier obiect Drochia.OBJ. Controlul /zi asigura includerea informatiilor de depenare pentru depenatorul simbolic Turbo Debugger.

Editorul de legatura TLINK preia modulul Drochia.obj, îl combina cu unele componente din biblioteci si genereaza modulul axecutabil Drochia.exe. Pentru apelul editorului de legaturi va fi folosita comanda:

TLINK Drochia

Daca e necesar de creat un fisier de tip COM aceasta comanda o vom folosi în ansamblul cu optiunea /t:

TLINK/t Drochia

e1) Program de tip .EXE

title Program2_EXE

; Ciclul de dezvoltare al programului

; TASM /la/zi sergiu_A.asm

; tlink sergiu_A.obj

DOSSEG

.MODEL Small

.STACK 256

; capacitatea stivei 256 octeti

.DATA

stdout equ 1

mesaj db 'Studiem limbajul de asamblare'

db 'TurboAssambler 2.0',10,13

mes_len equ $-mesaj

.CODE

startprogram:

mov ax,@DATA

mov ds,ax

; afisam mesajul pe ecran

mov ah,40h

; apelul functiei pentru afisare

mov bx,stdout

; pe ecran

mov cx,mes_len

; lungimea mesajului

mov dx,offset mesaj

; adresa mesajului

int 21h

; inchiem programul

mov ah,4ch

int 21h

end startprogram

e2) Program de tip .COM

title Program2_COM

; Ciclul de dezvoltare al programului

; TASM /la/zi sergiu_B.asm

; tlink sergiu_B.obj

; td sergiu_B.exe

.MODEL Tiny

; model de memorie foarte mic

.code

org 100h

stdout equ 1

Start:

jmp Begin

mes db 'Programul de tip .COM functiomeaza',10,13

mes_len equ $-mes

Begin:

mov ax,40h

; apelul functiei pentru afisare

mov bx,stdout

; pe ecran

mov cx,mes_len

; lungimea mesajului

mov dx,offset mes

; adresa mesajului

int 21h

; inchiem programul

mov ah,4ch

int 21h

end Start

5. Concluzie:

Din lucrarea data noi am însusit ciclul întreg de asamblare a programelor, sistemele de comenzi si metodele de adresare a operantilor procesoarelor în regim real cu ajutorul lui Turbo Debugger




Document Info


Accesari: 1212
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )