106 Tryby adresowania
W pamięci programu jest możliwe adresowanie:
- natychmiastowe (argument bezpośredni),
- pośrednie, sumą zawartości akumulatora i 16-bitowego rejestru bazowego (tylko w rozkazach przesłań MOVQ.
W adresowaniu pośrednim do 16-bitowego adresu bazowego jest dodawana 8-bitowa zawartość akumulatora, traktowana jako liczba dwójkowa bez znaku (z zakresu 0-255). Rejestrem bazowym może być wskaźnik danych DPTR lub licznik rozkazów PC Jeżeli jest nim licznik rozkazów, to adresem bazowym jest adres pierwszego bajtu rozkazu umieszczonego w pamięci jako następny po MOVC A, @A + PC.
Obszar nłktłdkoutnu rozrdtnlAny przaz tryb adrasowanl* <tylko u 8052/32J
Adr,«ou«ni*
pośrednia
2SS <FFM> |
^ SFR | ||
PaiM.sC |
ACC | ||
4 |
uZytkoua Ctylko u 8052/32 > | ||
DPH onrr | |||
DPL | |||
.128 C80H) |
224 (COH>
Do* ta*» na ► prztz nazwa
131 C83«> 130 (82H>
128 C BOH yj
f 127 C7FM>
48 C30H> 47 C2FH>
Adra* 255 £FFM>1
Adratauznit ►błlpoir adrti «
Adrt«ou«nit pośrednie zawartości% rejestrów RO i R1
32 <20Hł 31 C1FHJ
24 <18Hi 23 < 17H >
16 <10M3 15 <OFH5
8 C08H> 7 C07H>
TPT
4
RSi RSOsll
RS1 RSO=10
RS1 RS0=01
Obszar ' adresousny bitowo
Adr«icu«nia
'btiAOirtdnla
Cztery zbiory rejestrów roboczych; przez n«zuą dostePOW j»d*n, wskazany przaz RSl, RSO
_£SL
RSl RSO=QO
Rys. 4.1. Tryby adresowania wewnętrznej pamięci danych
Na rysunku 4.1. pokazano podział wewnętrznej pamięci danych na obszary dostępne w różnych trybach adresowania. Rozróżnia się trzy tryby.
Adresowanie przez nazwę rejestru dotyczy:
- rejestrów roboczych RO.. .R7 ze wskazanego przez wskaźnik RS zbioru:
RS1 RSO = 00 - zbiór 0, adresy 0...7;
RS1 RSO = 01 - zbiór 1, adresy 8... 15;
RS1 RSO = 10 - zbiór 2, adresy 16...23;
RS1 RSO = 11 - zbiór 3, adresy 24...31;
- akumulatora A - rejestr specjalny ACC, adres 224;
- wskaźnika danych DPTR (16-bitowy) - rejestry specjalne DPH i DPL, adresy 131 i 130.
Adresowanie bezpośrednie (8-bitowy adres w treści rozkazu) obejmuje:
- pamięć użytkową RAM, tzn. adresy 0...127;
- obszar rejestrów specjalnych, tzn. adresy 128...255; jest to jedyny sposób adresowania rejestrów z obszaru SFR.
Adresowanie pośrednie zawartością rejestru. Adres jest zawarty we wskaźniku danych R0 lub R1 z ustawionego zbioru rejestrów. Adresowanie to dotyczy obszaru pamięci użytkowej RAM:
- w układzie 8051: adresy 0...127;
- w układzie 8052: adresy 0...256; obszar o adresach 128...255 jest nakładkowany - jest tu umieszczona pamięć użytkowa, dostępna przez adresowanie pośrednie, oraz rejestry specjalne, dostępne przez adresowanie bezpośrednie.
Adresowanie bezpośrednie bitów (8-bitowy adres w treści rozkazu) obejmuje obszar pamięci użytkowej ROM o adresach 32...47 i część rejestrów specjalnych. Mapę adresów bitów pokazano na rys. 4.2.
Zewnętrzna pamięć danych jest adresowana tylko pośrednio, zawartością rejestru (w rozkazach MOVX). Jako rejestr adresowy jest używany:
- wskaźnik danych DPTR; adres jest wtedy 16-bitowy, co pozwała na zaadresowanie do 64K słów zewnętrznej pamięci danych; adres jest wysyłany przez porty PO i P2, co praktycznie uniemożliwia wykorzystanie portu P2 jako wejścia-wyjścia;