28 2. Mikroprocesory 8086/8088
MOV AL,ZMIENNA BAJT[DI| ; offset = 7
MOV AX,ZMIENNA SLOW()|SI +2] ; offset = 4
M()V ZMIENNA_SLOWO[DI-6],CX ; offset = 2
Adresowanie pośrednie przez rejestr bazowy> i indeksowy. Adres efektywny jest obliczany jako suma zawartości obu rejestrów
[BX + SI] |
lub |
[BX]fSI] |
[BP + SI] |
lub |
[BP)|SI] |
)BX + DI) |
lub |
[BX]|DI] |
)BP + Dl] |
lub |
[BP][DIJ |
Przykład (rys. 2.17) | |
MOV |
BP,0 |
MOV |
BX,1 |
MOV |
SI,3 |
MOV |
DI,2 |
MOV |
AX,[BX + SI] |
MOV |
[BP + DI],DX |
MOV |
[BX][DI].DX |
MOV |
AL,IBP + SI] |
MOV |
AX,[BP][DI] |
MOV |
[BP + SI),CX |
; offset = 4 ; offset = 2 ; offset = 3 ; offset = 3 ; offset = 2
; offset = 3 +
Offset | |||
A | |||
9 | |||
Offest |
8 | ||
- |
1 7 | ||
6 |
6 | ||
5 |
r |
_ . 5 |
" - - — |
4 |
|BX + S1J 4 | ||
3 |
[SI|lub[BX][Dl]lub[BP + SI] 3 | ||
2 |
| F>I]lub[BP 4- DI]lub[BP)[DIJ 2 | ||
1 |
|BX] i | ||
0 |
[BP] o | ||
Rys. 2.17. |
Rys. 2.18. |
|ZMIENNA|BX + DI + l]!ub
(BRUSKI
[[BP + DI + 1]
[DI]lub|BX + SI+2]
[SIJlubZMIENNA
[BP]
|BX]
Adresowanie pośrednie przez rejestr bazowy, indeksowy' i przemieszczenie. Sposób obliczania adresu efektywnego może być następujący |BX + SI + liczba] lub [BX]|SI + liczba]
[BP + SI + liczba] lub [BPj[SI + liczba)
[BX +DI + liczba) lub [BX][DI + liczba)
[BP + DI + liczba] lub [BP][D1 + liczba]
ZMIENNA[BX + SI] lub ZMIENNA[BXJ[SI]
ZMIENNA[BP + SI] lub ZMIENNA[BP][SI]
27. Adresowanie układów wejścia-wyjścia
powered by
Mi siol
lub |
ZMIENNA|BX]|SI + liczba] |
lub |
ZMIENNA[BP][SI + liczba] |
lub |
ZMIENNA[BX][DI] |
lub |
ZMIENNA[BP][DI] |
lub |
ZMIENNA[BX][DI + liczba] |
lub |
ZMIENNA[BP][DI + liczba] |
ZMIENNA[BX + SI + liczba]
ZMIENNA|BP + SI + liczba]
ZMIENNA|BX + DI]
ZMIENNA[BP + DI]
ZMIENNA[BX + DI + liczba]
ZMIENNAfBP + DI + liczba]
Przykład (rys. 2.18)
offset
offset
offset
offset
4
6
7
7
MOV BX,0 MOV BP,1 MOV SI,2 MOV DI,4 MOV AX,[BX + SI + 2]
1],CH
MOV [BP + DI + 1],DX MOV ZMIENNA[BX + Dl +
MOV [BP][SI + 4],BL
W przypadku jednolitego adresowania układów pamięci i układów wejścia-wyjścia (ang. niemoty mapped ), wszystkie wymienione w p. 2.6 sposoby adresowania dotyczą obu rodzajów układów. W przypadku adresowania rozdzielonego, układy wejścia-wyjścia mogą być adresowane dwoma sposobami
Adresowanie bezpośrednie
Adres układu wejścia-wyjścia jest 8-bitową liczbą bez znaku będącą fragmentem kodu rozkazu. Ten sposób adresowania pozwala na adresowanie do 256 układów wejścia-wyjścia.
Adresowanie pośrednie
Sposób adresowania zbliżony do omówionego w p. 2.6 adresowania za pośrednictwem rejestru. Adres układu wejścia-wyjścia jest pobierany z rejestru DX i może mieć wartość z zakresu od 0 do 65535.