Академический Документы
Профессиональный Документы
Культура Документы
RAPORT
Lucrare de laborator Nr.5
la Arhitectura Calculatorului
Tema: Programarea microprocesorului
Intel 8086.
Instruciuni pentru lucrul cu
iruri.
A efectuat:
A verificat:
lector superior
Creu Vasile
2014
Scopul lucrrii :
a) Instruciuni de transfer pentru lucrul cu iruri.
b) Instruciuni de comparaie pentru lucrul cu iruri.
Teorie :
Instructiuni pentru lucrul cu siruri cu operanzi expliciti
Instructiunile pentru lucrul cu siruri utilizeaza intotdeauna cate 2
operanzi. Daca acestia sunt specificati explicit in codul
instructiunii dupa mnemonica atunci instructiunea se numeste cu
operanzi expliciti.
Instructiuni pentru lucrul cu siruri cu operanzi impliciti
Instructiunile pentru lucrul cu siruri care nu are cei doi operanzi
specificati explicit in codul instructiunii se numesc cu operanzi
impliciti.
Deoarece sirurile de date se afla in memorie s-au stabilit perechi
de registre utilizate implicit pentru adresarea datelor curente ale
sirurilor. Daca sirul este de tip destinatie, atunci perechea de
registre de adresare este ES : DI. Daca sirul este de tip sursa,
atunci perechea de registre de adresare este DS : SI. De aceea
registrul DI poarta numele Destination Index iar registrul SI
numele Source Index.
Prefixul REP
Pentru a reduce timpul de executie in cazul repetarii de N>1 ori a
unei instructiuni pentru lucrul cu siruri s-a introdus prefixul REP.
Punand acest prefix in fata uneia dintre instructiunile pentru lucrul
cu siruri, numita generic instrsir:
REP instr sir
efectul ei devine echivalent cu al secventei:
etich: instrsir
LOOP etich
(necesitand preincarcarea in registrul CX a numarului de repetari).
mov dx, offset Buf1 ; adresa bufferului pentru inscrierea primul ir de la tastatur
mov AH, 0ah ; inscrie datele in buffer ,determina lungimea maximala textului
int 21h ; intrerupere ,apeleaza functia DOS
mov al,10 ; copiem in al cifra 10 , al = 10
int 21h ; intrerupere ,apeleaza functia DOS
cmp cl,Buf1+1 ; daca au fost controlate Buf1+1 , iesim din ciclu si trecem la
prelucrarea inscrierii
jnz not_equal ; daca ZF=0 el salteaza la not_equal
mov di,offset Buf+2 ; ES:DI , adresa mesajului bufferului Buf+2
mov si,offset Buf1+2 ; DS:SI adresa primului sir
repe cmpsb ; {ds:si es:di},Comparare pina cind simbolurile coincid , nu mai mult
de CX ori
jnz not_equal ; daca ZF=0 el salteaza la not_equal
equal: ; este egal
mov dx,offset text ; bufferul in care de introdus
mov ah,9 ; Inscriem in (ah) , ah = 9
int 21h ; intrerupere , apeleaza functia DOS
not_equal: ; nu este egal
mov dx,offset text1 ; indica adresa de pornire,loc de memorie pentru text
mov ah,9 ; Inscriem in (ah) , ah = 9
int 21h; intrerupere , apeleaza functia DOS
exit: ;ieire
xor ax,ax;reseteaz registrul ax mai rapid ca mov ax,0
int 21h; intrerupere , apeleaza functia DOS
mov ax,4c00h ;incheierea programului (4c-numarul functiei , 00 returnarea
valorii)
int 21h; intrerupere , apeleaza functia DOS
END ; sfrit
Screenshot :
1)
2.1)
2.2)
Concluzie:
n aceast lucrare de laborator am fcut cunotin cu instruciunile pentru iruri
(CMPSB, REPE,REPNE ,MOVSW).Am aflat diferenele intre MOV i MOVSW ;
CMP i CMPS etc.Am scris codurile n Emu 8086 cu ajutorul internetului i
programei.
Intrebri :
1. Care sunt perechile de registre utilizate implicit la adresare de
instructiunile pentru lucrul cu siruri ?
DS : SI - ir , din care se efectueaz copierea;
ES : DI ir , n care se efectueaz copierea,nceputul irului sau indic ultimul
bit al irului;
DS : AX = indicator la primul ir copiat;
DS : BX = indicator la al doilea ir copiat,nceputul adresei de completare;
DS:DI indic irul.
2. Care sunt registrele utilizate implicit de instructiunile pentru
lucrul cu siruri LODS, STOS si SCAS ?
Registrele care
urmtoare :
se
utilizeaz
cu
instruciunile
date
sunt