1. Scopul lucrarii:
a) Însuşirea ciclului întreg de asamblare a programelor.
b) Însuşirea sistemelor de comenzi şi metodele de adresare a operanţilor procesoarelor în regim real cu ajutorul lui Turbo Debugger.
2. Efectuarea lucrarii:
a1) Codul sursă 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 sursă al programului de pe tastatura pot fi utilizate atît caracterele mari cît şi mici;
Prima directivă din textul programului-Title –dă posibilitatea de a-i acorda programului un titlu de text. Programul este alcătuit din trei segmente: de stivă, date şi programe.
Segmentarea este realizată de directivele: stack, data şi code. Directiva stack n alocă o zonă avînd lungimea n şi care este segmentul de stivă, “.stack 512” va aloca un segment de lungimea 512 octeţi sau (200h).
Dacă scriem o procedură ce va fi apelată dintr-un limbaj evaluat, atunci segmentul de stivă va fi declarat de cătreprogramul apelator, “.DATA” ea semnalizează despre începutul segmentului de date iniţializate din program, dar mai iniţial e necesar de utilizat directive Model În DOS sunt posibile şase modele de memorie. Prin model noi înţelegem de fapt un mod de dispunere în memoria RAM a segmentelor care alcătuiesc un program:
foarte mic- model tiny LP+LD+LS<64Ko
mic-model small LP<64Ko şi LD+LS<64Ko
mediu-model medium 64Ko<=LP<1Mo şi LD+LS<1Mo
compact-compact LP<64Ko şi 64Ko<=LD+LS<1Mo
mare-large 64Ko<=LP<1Mo şi 64Ko<=LD+LS<1Mo
foarte mare-huge ,
directiva Model trebuie plasată înaintea directivelor stack, code, data.
Directiva code determină începutul codului de program. Inişial e necesar de utilizat directiva Model pentru determinare modelului de memorie. La code se poate de inclus şi un parametru „nume” pentru model mare sau mediu. Simbolul @data primeşte adresa segmentului de date.
Programul, de obicei, constă din proceduri ce sporeşte gradul de concretizare a programului. Procedurile sunt anunţate de catre directiva PROC si sunt închise cu directiva ENDP. înaintea ambelor este indicat un parametru -numele procedurii.
De exemplu: DELAY PROC NEAR
;instrucşiunile procesorului
ret
DELAY ENDP
În continuare este utilizată una din funcţiile de serviciu al întreruperii 21h-09h (afişarea mesajului pe ecranul display-ului.). Aceasta funcţie necesită ca în registrul AH să fie încarcat numărul funcţiei apelate:
mov ah,09h
în registru DS:DX se încarcă adresa mesajului ce va fi afişat:
mov DX, offset Lista1
şi este apelată întreruperea 21h:
int 21h
Mai menţionăm faptul că mesajul ce trebuie afişat cu ajutorul acestei funcţii trebuie să se sfîrşească cu caracterul ‚$’
Textul programului se încheie cu apelul funcţiei 4ch, ce îndeplineşte funcţia de revenire la sistemul de operare DOS.
Directiva END din sfîrşitul programului sfîrşeşte asamblarea programului.
Laboratoare Asamblarea si Insusirea Programelor: 1, 2, 4
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.