26
2. Mikroprocesory 8086/8088
Przykład (rys. 2.12)
ZMIENNA2 ZMIENNA 1
ADD AX, ZMIENNA 1 ; offscl = 1
ADD AL, DS:0 ; offset = 0
ADD AH, ZM1ENNA2 + 1 ; offset = 4
Adresowanie pośrednie
W adresowaniu pośrednim do obliczenia adresu efektywnego wykorzystuje się jeden z rejestrów bazowych i (luj?) jeden z rejestrów indeksowych (nazwa rejestru musi być ujęta w nawias prostokątny). Oprócz tego może wystąpić przemieszczenie, które dodaje się do zawartości odpowiedniego rejestru.
Adresowanie pośrednie przez rejestr bazom - adres efektywny znajduje się w rejestrze [BX| lub |BP|.
Przykład (rys.2.13)
MOV BX,4 ; załaduj do rejestru bazowego liczbę 4
MOY BP,6 ; załaduj do rejestru bazowego liczbę 6
MOY | BPJ.CL ; zawartość rejestru CL prześlij do bajlu w
; pamięci dla którego offset = 6
MOY AX,[BX] ; słowo (offset = 4) prześlij do akumulatora +
Adresowanie pośrednie przez rejestr bazowy? i przemieszczenie. Adres efektywny może być obliczany następująco [BX + liczba) [BP + liczba]
Zmicnna[ BX] Zmienna(BP)
Zmienna|BX+liczba] Zmienna[BP + liczba]
Offset | ||
A | ||
9 | ||
8 | ||
O fiest |
7 | |
6 |
[BP] 6 | |
5 |
5 | |
4 |
[BX] 4 | |
3 |
3 | |
2 |
— |
2 |
1 |
i : | |
0 |
0 | |
Rys. 2.13. |
Rys. 2.14 |
!BP|
|BX+4]Iub|BP-2|
ZMIENN Ä„^SLO WO[BX -f 2]
/.MIi:\NA_SI OWO|BP-6]
IBX11ubZMIENNA BAJT[BX| lub ZMIENNA SLClWO
zmienna.bajt
2.6. Sposoby adresowania pamięci
powered by
Mi si-ol
przykład (rys.2.14)
MOV BX,1 M()V BP.7 M(>V AX,[BX + 4|
MOV |BP-2],DX— ty- '
MOV ZMIENNA BAJT|BX|,CL MOV AL,ZMIENNA_BAJT|BP|
MOV AX,ZMIENNA_SLOWO[BX + 2| MOV ZMIENNA_SLOWO[BP-6],CX
; offset = 5 ; offset = 5 ; offset = 1 ; offset = 7 ; offset = 4
; offset = 2 +
Adresowanie pośrednie przez rejestr indeksowy - adres efektywny stanowi wprost zawartość rejestru [SI] lub [DI].
Przykład |rys. 2.15)
MOV DI,2 MOV SI,0
MOV AX,[SI] ; offset =0
MOV [Dlj,BX f ; offset =2 +
Adresowanie pośrednie przez rejestr indeksowy i przemieszczenie. Adres efektywny mo/c być obliczany następująco [SI + liczba] [DI + liczba]
ZmiennafSI ] Zmienna) DI ]
Zmienna|SI + liczba] Zmienna)DI -f liczba]
Offset | |||
A | |||
9 | |||
8 | |||
Offset |
7 |
___J | |
6 |
6 | ||
5 |
5 | ||
4 |
4 | ||
3 |
3 |
- | |
2 |
|DI] 2 | ||
1 |
1 | ||
0 |
|S1] 0 |
|SI +4]lub[DI-2]
zmii:nna_slowo(si+2]
ZMIENNASI ,OWO[DI-6j
[SIJlubZM 11 iNN A_B AJT[ SI | ZMIENNA BAJT
Rys. 2.15. Rys. 2.16.
Przykład (rys. 2.16)
lubZMIFNNABAJT
; offset = 5 ; offset = 5 ; offset = 1
M()V SI,1 MOV DI,7 MOV AX,[SI +4]
MOV [DI-2],DX
MOV ZMIENNA_BAJT[SI],CL