Sunteți pe pagina 1din 4

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


FCIM
Catedra Automatic i Tehnologii Informaionale

Referat
Arhitectura calculatoarelor
Lucrarea de laborator Nr.5

TEMA: PRELUCRAREA SIRURILOR


UTILIZAREA TABELELOR PENTRU CONVERSII DE CODURI

A efectuat:

st. grupei TI-122


Cobla A.

A verificat :

lector superior
Olaru V.

Chiinu 2014

SCOPUL LUCRARII
Se prezinta probleme legate de prelucrarea in limbaj de asamblare a sirurilor. Pentru aceasta se
recomanda utilizarea instructiunilor speciale pentru tratarea sirurilor. Se prezinta de asemenea tehnici
specifice limbajului de asamblare pentru realizarea conversiilor de coduri, bazate pe utilizarea tabelelor
de conversie.
SARCINA I:
Se considera trei masive sir1, sir2, sir3 fiecare sir de caractere reprezentind o linie de text. Sa se
concateneze textele din aceste siruri n sir4, separndu-le prin un blanc. Afisati pe ecran toate sirurile.
print macro str
push dx
mov ah,09h
lea dx,str
int 21h
pop dx
endm
.model small
.stack 100h
.data
str1 db "sir1|$"
str2 db "sir2|$"
str3 db "sir3$"
fstr db ?
.code
assume ds:@data,es:@data
main:
mov ax,@data
mov ds,ax
mov es,ax
mov
add
mov
mov
rep

di, offset str1


di,5
si, offset str2
cx,5
movsb

mov si,0
muta: mov al,str1+si
mov fstr+si,al
inc si
cmp si, 10
jnz muta
mov di, offset fstr
add di,10

mov si, offset str3


mov cx,15
rep movsb
print fstr
mov ah,01;
int 21h
mov ax,4c00h
int 21h
end main

REZULTATUL EXECUTIEI:

SARCINA II:
Sa se numere toate aparitiile secventei 'XX' dintr-un sir de octeti reprezentind un sir de caractere.
.model small ;definirea modelului de memorie
.stack 100h
;definirea segmentului de stiva
.data
;definirea segmentului de date
str1 DB "XX00XX000XX00XX"
;definesc un sir de caractere pe un octet
; fiecare caracter si deplasamentul sir
length1 EQU $ - str1
str2 DB "XX"
length2 EQU $ - str2
.code
begin:
mov ax, @data ;definire segment de date ds
mov ds, ax
mov es, ax
mov ax, length1
mov ax, 0
mov bx, 0
mov si, OFFSET str1
repet:

mov di, OFFSET str2


mov cx, length2
repe cmpsb
jnz if_non_zero ;jump if not zero
inc bx ;incrementez bx
if_non_zero:
add ax, length2
cmp ax, length1
jge exit ;Not Less, Greater or Equal
sub ax, length2
inc ax
mov si, OFFSET str1
add si, ax
mov di, OFFSET str2
jmp repet
;JMP operand unde operand este adresa de salt
neconditionat.
exit:
add
mov
mov
int
mov
int

bx,
dl,
ah,
21h
ax,
21h

30h
bl
02
4C00h

end begin

REZULTATUL EXECUTIEI:

CONCLUZII :
In urma efectuarii lucrarii de laborator numarul 5 am format deprinderi de lucru cu prelucrarea
sirurilor si utilizarea tabelelor pentru conversie in limbaju assembler.