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: 1251
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 )