Anda di halaman 1dari 5

Scopul lucrării: Studierea modurilor de adresare si a tehnicilor de

transfer la microprocesoarele i80x86.


Sarcina lucrarii:

Partea I.

Se cere un program in care:


1. Sa se declare:
- tabloul T1 format din 5 cuvinte avind valorile
3, -1, 7, 9, -27
- tabloul T2 format din 5 cuvinte nedefinite.
- cuvintul dublu X;
2. Sa se transfere:
T1[3] -> T2[0], utilizind adresarea directa;
T1[0] -> T2[1], utilizind adresarea indirecta;
T1[1] -> T2[2], utilizind adresarea indexata;
T1[2] -> T2[3], utilizind adresarea bazata;
T1[4] -> T2[4], utilizind adresarea bazata-indexata;

(nota: notatia "T[i]" semnifica elementul aflat in pozitia "i")

3. Sa se calculeze:
X = (T1[0] + T2[3] - T1[1]) * -3;

4. Sa se testeze programul cu ajutorul depanatorului Turbo Debugger


si sa se afle valoarea lui X.

Partea a II-a.

1. Declarati:
- Tabloul D1 format din cuvinte duble.
Dimensiunea tabloului -- 2 x 3. Valorile initiale
ale elementelor sint:

1999 F3A21(hex) 67145(oct)


101111(bin) 66000 123456(hex)

- Tabloul D2, cu dimensiunea 2 x 3 si format din


cuvinte duble, cu valori initiale nedefinite;

- Cuvintul Y.

2. Transferati:
D1[1,2] -> D2[0,0]
D1[0,1] -> D2[0,1]

3. Sa se schimbe cu locurile cuvintele elementului [1,0]


apartinind tabloului D1.

4. Aflati distanta dintre tablourile D2 si D1


(prin scaderea deplasamentelor). Rezultatul se va scrie in Y.

5. Fara a utiliza instructiuni universare de inmultire si impartire,


calculati:

D2[0,2] = Y * 256
D2[1,0] = Y * 65536
D2[1,1] = Y DIV 256
D2[1,2] = Y MOD 256

6. Testati programul cu ajutorul depanatorului si aflati rezultatele


D2 si Y.

Listingul programului:

model small
.stack 100h
.386
.data
T1 dw 3,-1,7,9,-27
T2 dw 5 dup(?)
x dd ?
D1 dd 1999D,0F3A21H,67145Q,101111B,66000,123456H
D2 dd 6 dup(?)
y dw ?

.code
start:
;adresarea directa T1[3]->T2[0]
;determinarea locului T1[3]
mov ax,seg T1
mov ds,ax
mov ax,offset T1
mov bx,ax
mov ax,ds:[bx+6]

;efectuarea transferului T1[3]->T2[0]


mov T2[0],ax

;adresarea indirecta T1[0]->T2[1]


mov ax,[bx]
2
mov T2[2],ax

;adresarea bazata T1[2]->T2[3]


mov ax,[bx+4]
mov T2[6],ax

;adresarea indexata T 1[1]->T2[2]


mov di,2
mov ax,ds:[bx+di]
mov si,4
mov T2[si],ax

;adresarea bazata-indexata T1[4]->T2[4]


mov di,8
mov cx,ds:[bx+di]
mov T2[8],cx

;calculul valorii lui x=(T1[0] + T2[3] - T1[1])*(-3)


mov ax,ds:[bx]
add ax,T2[6]
sub ax,ds:[bx+2]
mov cx,-3
imul cx
mov word ptr x,ax
mov word ptr x+2,dx

;Transferam D1[1.2]->D2[0,0]
mov ax,word ptr D1[20]
mov dx,word ptr D1[20]+2
mov word ptr D2[0],ax
mov word ptr D2[0]+2,dx

;Transferam D1[0.1]->D2[0,1]
mov ax,word ptr D1[4]
mov dx,word ptr D1[4]+2
mov word ptr D2[4],ax
mov word ptr D2[4]+2,dx
;schimb locul cuvintelor elem [1.0]
mov ax,word ptr D1[12]
xchg ax,word ptr D1[12]+2
xchg ax,word ptr D1[12]

;scaderea deplasamentelor
mov ax,offset D1
mov bx,offset D2
sub ax,bx
mov y,ax

;D2[0.2]->y*256 fara inmultire


mov ax,y
mov cl,8
shl ax,cl
mov word ptr D2[8],ax
3
mov word ptr D2[8]+2,0

;D2[1.0]->y*65536 fara inmultire


mov ax,y
mov cl,16
mov word ptr D2[12],ax
mov word ptr D2[12]+2,0
shl D2[12],cl

;D2[1.1]->y div 256 fara impartire


mov ax,y
mov cl,8
shr ax,cl
mov word ptr D2[16],ax
mov word ptr D2[16]+2,0

;D2[1.2]->y mod 256 fara impartire


shl ax,cl
mov bx,y
sub bx,ax
mov word ptr D2[20],bx
mov word ptr D2[20]+2,0

;*********************************
mov ah,10h
int 16h
mov ah, 04Ch
int 21h
end START

Concluzii: În aceasta lucrare de laborator am elaborat Studierea


modurilor de adresare si a tehnicilor de transfer la microprocesoarele
i80x86..

4
Ministerul Educatiei si Tineretului al Republicii Moldova
Universitatea Tehnica a Moldovei

Facultatea Calculatoare, Informatica si Microelectronica

Catedra Automatica

La disciplina: Sisteme cu Microprocesoare.


Lucrarea de laborator nr.2

Tema: Instrucriuni aritmetice.

A efectuat: st.gr.AI-072
Colodin Alexandru

A verificat: lector superior


Cojuhari Irina
.

<< Chisinau 2009 >>