Sunteți pe pagina 1din 1

Inversarea a doua siruri de date

.MODEL SMALL
.DATA ; declarare zona de date
Array1 DW 1111h,2222h,3333h,4444h,5555h ; prima secventa de numere (pe 16 biti)
Array2 DW 1010h,2020h,3030h,4040h,5050h ; a doua secventa de numere
Count DW 0005h ; sunt cate cinci numere pe 16 biti in
.CODE ; fiecare secventa
MOV AX,@DATA
MOV DS,AX ; incarc in DX adresa de unde incep datele
LEA SI,Array1 ; incarc in registrul SI adresa efectiva a primului sir
LEA DI,Array2 ; ; incarc in registrul DI adresa efectiva a celui de al doilea sir
MOV CX,Count ; incarc in CX numarul de valori din fiecare secventa
NEXT: MOV BX,[SI] ; incepere bucla: incarc in BX valoarea de la adresa data de SI
MOV DX,[DI] ; incarc in DX valoarea de la adresa data de DI
XCHG BX,DX ; inversez datele din BX si DX
MOV [SI],BX ; si le scriu in memorie
MOV [DI],DX
INC SI ; incrementez SI, DI (SI=SI+2, DI=DI+2)
INC SI ; pentru ca sunt date pe 16 biti
INC DI
INC DI
LOOP NEXT ; reiau bucla
MOV AH,4Ch
INT 21h
END

S-ar putea să vă placă și