1. Lucrare de laborator Nr. 1
2. Tema :Programarea operaţiilor cu şiruri.
3. Scopul lucrarii : Initierea in limbajul Assembler.
4. Sarcina de lucru :
Sarcina 1.1. Pregătirea pentru execuţie al unui program simplu de tip .EXE şi studierea structurii lui. De creat un fişier ce conţine textul sursă al programului de mai jos. în continuare de efectuat ciclul de dezvoltare : asamblarea şi editarea de legături pentru a obţine fişierul de tip .EXE . Încredinţaţi-vă, că lansînd programul la execuţie el funcţionează şi indeplineşte operaţiile prevăzute în program. Lansaţi programul sub controlul depanatorului Turbo Debugger. De studiat regulile principale pentru lucrul cu depanatorul - execuţia programului în modul "pas cu pas", vizualizarea registrelor procesorului,a indicatoarelor de condiţii,etc.
Sarcina 1.2. Pregătirea pentru executare al programului de tip .COM şi studierea structurii lui. Sarcina este analogică exemplului precedent.
Sarcina 1.3. Realizaţi un program care crează un masiv de simboluri (64 caractere de la caracterul blanc pînă la caracterul "-") şi imprimă masivul obţinut pe ecran.
Sarcina 1.4. Realizaţi un program cu ajutorul căruia poate fi urmărită partea a doua a tabelului de coduri ASCII (codurile 128-255 de tot 128 caractere). Pentru aceasta de creat un masiv alcătuit din codurile acestor caractere şi de imprimat masivul pe ecran.
Sarcina 1.5. Realizaţi un program care copie un bloc de 2000 de octeţi dintr-o zonă 1 în zona 2 şi din zona 2 în zona 3 şi imprimează blocul 3 pe ecran. Pentru aceasta de utilizat instrucţiunile pentru adresarea şirurilor :
LODSB;STOSB şi MOVSB
Sarcina 1.6. Compararea a două zone de memorie Realizaţi un program ce compară două zone de memorie cu acelaєi conţinut şi imprimăţi pe ecran rezultatul comprării. De modificat cîmpul de date al programului, modificînd zonele de memorie ca ele să nu coincidă şi programul să fie executat din nou .
5. Codul programului :
Sarcina 1.1 :
dosseg
.model Small
.stack 256
.data
stdout equ 1
mesaj db 'Studiem limbajul de asamblare'
db 'TurboAssembler 2.0',10,13
mes_len equ $-mesaj
.code
StartProgram:
movax,@data
movds,ax
mov ah,40h
mov bx,stdout
movcx,mes_len
movdx,offsetmesaj
int 21h
mov ah,4ch
int 21h
end StartProgram
Sarcina1.2 :
.model TINY
.code
org 100h
stdoutequ 1
crequ 10
efequ 13
Start:
jmp begin
mes db 'Programul de tip .COM functioneaza',cr,ef
mes_len equ $-mes
Begin:
mov ah,40h
movbx,stdout
movcx,mes_len
mov dx,offset mes
int 21h
mov ah,4ch
int 21h
end Start
Sarcina1.3 :
dosseg
.model Small
.stack 256
.data
mesaj db 'Elementele din tablou sunt:',10
mes_lenequ $-mesaj
memdb 64 dup(?)
tab_lenequ $-mem
.code
Start:
movax,@data
movds,ax
mov al,20h
mov si,0
movcx,tab_len
ciclu:
movmem[si], al
inc al
incsi
loopciclu
mov ah, 40h
movbx, 1
movdx,offsetmesaj
movcx,offsetmes_len
int 21h
mov ah, 40h
movbx, 1
mov dx, offset mem
movcx,tab_len
int 21h
movah,4ch
int21h
endStart.
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.