Aplicaţii
Se cere obţinerea fişierului executabil pentru următoarea porţiune de cod şi rularea apoi pas cu pas.
.model small
.stack 100
.data
tabel db 1, 2, 3, 4, 5, 10 dup(?)
tabel1 dw 1, 2, 3, 12H, 12
tabel2 dd 1, 2, 1234H
tabel3 dq 1, 2, 12345678H
tabel4 dt 1, 2,, 1234567890H
.code
start: mov ax, @data
mov ds, ax
mov ax, 14h ;adresare imediată
mov ax, 14
mov al, tabel ;adresare directă
mov al, tabel[1] ;adresare directă
mov ax, word ptr tabel ;adresare directă - operatorul ptr este necesar,
mov ax, word ptr tabel[2] ;tabel fiind definit cu directiva DB
mov bx, offset tabel
mov al, [bx+1] ;adresare indirectă
mov al, [bx] ;adresare indirectă
mov bx, 5
mov al, tabel[bx] ;adresare bazată
mov si, 1
mov al, [bx][si] ;adresare bazată şi indexată
mov si, 6
mov byte ptr [bx][si],2 ;adresare bazată şi indexată
mov bp, offset tabel
mov al, [bp] ;adresare bazată cu deplasament nul
mov byte ptr ds:[bp][si][1], 7
mov word ptr ds:[bp][si][1], 19H ;adresare bazată şi indexată
mov ah, 4ch
int 21h
end start
Indicaţii
Pentru obţinerea fişierului executabil se va utiliza mediul Borland C sau Borland Pascal de dezvoltare a
programelor. Fazele de obţinere a programului executabil din fişierul ASCII salvat cu extensia *.asm sunt:
• asamblarea: tasm *.asm/zi/la
- zi este folosită pentru includerea opţiunilor de depanare;
- la este folosită pentru obţinerea unui fişier listing util în depanare;
• linkeditarea: tlink *.obj/v
- v este folosită pentru includerea opţiunilor de depanare;
• depanarea: td *.exe
După obţinerea fişierului executabil acesta va fi executat pas cu pas în mediul de depanare. Se va
vizualiza conţinutul memoriei (View/Dump) şi al registrelor (View/Registers) înainte şi după executarea
fiecărei instrucţiuni. Se va verifica pentru fiecare dată definită numărul octeţilor alocaţi în memorie şi
respectarea convenţiei Intel pentru memorarea acestora.
Probleme propuse spre rezolvare
1. În aplicaţia de mai sus, care sunt instrucţiunile care modifică conţinutul unei locaţii de memorie?
2. În aplicaţia de mai sus să se determine care este adresa la care se încarcă segmentul de date. Pentru
aceasta se vor executa primele două instrucţiuni ale programului.
3. Pentru aplicaţia de mai sus să se specifice pentru fiecare zonă a programului (date, cod, stivă) care este
adresa de segment şi care este adresa de offset la începutul execuţiei programului.
4. Pentru aplicaţia de mai sus să se determine care este adresa fizică a locaţiei de memorie la care se
memorează valoarea 5 din tabel. Fiecare student va determina această adresă pentru contextul de pe
calculatorul pe care lucrează.
5. Pentru aplicaţia de mai sus să se determine câţi octeţi s-au alocat pentru memorarea datelor. Să se
verifice şi numărând octeţii în fereastra Dump.
6. Specificaţi adresa efectivă şi adresa fizică a locaţiei de memorie modificată de instrucţiunile:
• mov byte ptr [bx][si], 2
• mov byte ptr ds:[bp][si][1], 7
• mov word ptr ds:[bp][si][1], 19H
7. Motivaţi apariţia valorii 00H (în loc de 01H) în registrul AL, în urma execuţiei instrucţiunii:
Se cere obţinerea fişierului executabil pentru următoarea porţiune de cod şi rularea apoi pas cu pas.
.model small
.stack 100
.data
tabel db 1, 2, 3, 4, 5, 10 dup(?)
tabel1 dw 1, 2, 3, 12H, 12
tabel2 dd 1, 2, 1234H
tabel3 dq 1, 2, 12345678H
tabel4 dt 1, 2,, 1234567890H
.code
start: mov ax, @data
mov ds, ax
mov ax, 14h ;adresare imediată
mov ax, 14
mov al, tabel ;adresare directă
mov al, tabel[1] ;adresare directă
mov ax, word ptr tabel ;adresare directă - operatorul ptr este necesar,
mov ax, word ptr tabel[2] ;tabel fiind definit cu directiva DB
mov bx, offset tabel
mov al, [bx+1] ;adresare indirectă
mov al, [bx] ;adresare indirectă
mov bx, 5
mov al, tabel[bx] ;adresare bazată
mov si, 1
mov al, [bx][si] ;adresare bazată şi indexată
mov si, 6
mov byte ptr [bx][si],2 ;adresare bazată şi indexată
mov bp, offset tabel
mov al, [bp] ;adresare bazată cu deplasament nul
mov byte ptr ds:[bp][si][1], 7
mov word ptr ds:[bp][si][1], 19H ;adresare bazată şi indexată
mov ah, 4ch
int 21h
end start
Indicaţii
Pentru obţinerea fişierului executabil se va utiliza mediul Borland C sau Borland Pascal de dezvoltare a
programelor. Fazele de obţinere a programului executabil din fişierul ASCII salvat cu extensia *.asm sunt:
• asamblarea: tasm *.asm/zi/la
- zi este folosită pentru includerea opţiunilor de depanare;
- la este folosită pentru obţinerea unui fişier listing util în depanare;
• linkeditarea: tlink *.obj/v
- v este folosită pentru includerea opţiunilor de depanare;
• depanarea: td *.exe
După obţinerea fişierului executabil acesta va fi executat pas cu pas în mediul de depanare. Se va
vizualiza conţinutul memoriei (View/Dump) şi al registrelor (View/Registers) înainte şi după executarea
fiecărei instrucţiuni. Se va verifica pentru fiecare dată definită numărul octeţilor alocaţi în memorie şi
respectarea convenţiei Intel pentru memorarea acestora.
Probleme propuse spre rezolvare
1. În aplicaţia de mai sus, care sunt instrucţiunile care modifică conţinutul unei locaţii de memorie?
2. În aplicaţia de mai sus să se determine care este adresa la care se încarcă segmentul de date. Pentru
aceasta se vor executa primele două instrucţiuni ale programului.
3. Pentru aplicaţia de mai sus să se specifice pentru fiecare zonă a programului (date, cod, stivă) care este
adresa de segment şi care este adresa de offset la începutul execuţiei programului.
4. Pentru aplicaţia de mai sus să se determine care este adresa fizică a locaţiei de memorie la care se
memorează valoarea 5 din tabel. Fiecare student va determina această adresă pentru contextul de pe
calculatorul pe care lucrează.
5. Pentru aplicaţia de mai sus să se determine câţi octeţi s-au alocat pentru memorarea datelor. Să se
verifice şi numărând octeţii în fereastra Dump.
6. Specificaţi adresa efectivă şi adresa fizică a locaţiei de memorie modificată de instrucţiunile:
• mov byte ptr [bx][si], 2
• mov byte ptr ds:[bp][si][1], 7
• mov word ptr ds:[bp][si][1], 19H
7. Motivaţi apariţia valorii 00H (în loc de 01H) în registrul AL, în urma execuţiei instrucţiunii:
mov al, [bp].
Niciun comentariu:
Trimiteți un comentariu