45
44
6. RAM czy SFR ?
(y RAM czy SFR ?
• podanie jego symbolu i numeru banku rejestrów, np. rejestr R7 w banku RB1,
• podanie adresu komórki wewnętrznej pamięci RAM, np. adres OFh] dla tego samego rejestru.
Pomimo, że mamy do dyspozycji 4 banki rejestrów, każdy po 8 rejestrów (łącznie 32 rejestry), to programowy dostęp przez podanie symbolu rejestru możliwy jest tylko do jednego, wybranego banku. Po sprzętowym zerowaniu procesora (linią RST) wybrany jest jako domyślny, bank RBO, tzn. rejestry RO, .. R7 o adresach od 0 do 7. Adresując bezpośrednio wewnętrzna pamięć RAM w zakresie 0 .. IFh dostępne są wszystkie 32 rejestry (traktowane jako komórki pamięci).
MOV |
@Ri,A |
;(Ri) <- A |
MOV |
A,@Ri |
;A <— (Ri) |
MOV |
@Ri,adr |
;(Ri) <- (adr) |
MOV |
adr,@Ri |
;(adr) <- (Ri) |
XCH |
A,@Ri |
;A <-> (Ri), wzajemna wymiana danych |
XCHD |
A,@Ri |
;A3 .o ^ (Ri^ ęy wzajemna wymiana tyl |
4 mniej znaczących bitów
7 akumulatorem A związano instrukcję przestawienia czterech mniej i czterech bardziej znaczących bitów, w działaniu zbliżonym do instrukcji XCHD:
SWAP A
7..3 ** A3 .0/
Poza rejestrami RO, .. , R7 wszystkie inne rejestry, np. akumulator Aj| rejestr B, rejestr słowa statusowego PSW itd., znajdują się w bloku, segmen rejestrów specjalnych SFR (patrz rysunek 6-1).
Jeśli w mikrokontrolerach rodziny 51 przewidziano 4 banki rejestró (RBO, RB3) to oznacza, że wystarczą 2 bity do określenia numeru banków. Td dwa bity oznaczone symbolami RSO i RS1 (Register Select) znajdują się w rejestrze słowa statusowego PSW (Program Status Word):
rejestr
PSW
CY |
AC |
F0 |
RSl I RSO |
ov |
FI |
P |
adres
ODOh
Kodowanie numeru banku rejestrów za pomocą bitów RSl binarne, tzn.:
• RSl,RS0=00b oznacza zerowy bank rejestrów RBO,
• RSl,RS0=llb oznacza trzeci bank rejestrów RB3.
RSO jesjfl
;wzajemna wymiana 4 mniej znaczących ;bitów z 4 bardziej znaczącymi bitami ;akumulatora A
Rejestry RO i R1 stosowane są również do adresowania zewnętrznej pamięci RAM, co przedstawiono w poprzednich rozdziałach:
MOVX @Ri,A
MOVX A,@Ri wm,xdata
Użyte w przykładach skróty mają następujące znaczenie:
Rn - rejestr RO .. R7; n=0 .. 7,
Ri
'(^XDATA
;A (Ri)
W liście rozkazów przewidziano następujące instrukcje dotyczące! rejestrów RO.. R7 i wymiany danych z wewnętrzną pamięcią RAM oraz| rejestrami specjalnymi SFR:
;Rn <— dana Rn <- A A <- Rn Rn <- (adr)
(adr) <— Rn
A < > Rn, wzajemna wymiana danych
Instrukcje związane tylko z rejestrami RO i R1 (rejestry te wykorzystywane wyłącznie do adresowania pośredniego pamięci RAM) są następujące:
MOV |
Rn,#dana |
MOV |
Rn,A |
MOV |
A,Rn |
MOV |
Rn,adr |
MOV |
a dr, Rn |
XCH |
A,Rn |
rejestr RO lub Rl; i=0 lub 1,
adres pierwszych 128 bajtów wewnętrznej pamięci RAM (adr=0 .. 7Fh) lub rejestrów specjalnych SFR (adr=80h .. OFFh), 8-bitowa zmienna wpisywana do wybranego rejestru Rn,
zawartość komórki pamięci danych RAM lub rejestrów specjalnych SFR o adresie podanym w nawiasie.
Poza typowymi przesłaniami (instrukcje MOV) w liście rozkazów znajdują się rozkazy, które przyspieszają wzajemną wymianę (eXCHange) zawartości akumulatora A i wybranego rejestru Rn lub komórki wewnętrznej pamięci RAM. Poglądowa przedstawia to rysunek:
adr
dana
O
| zkazy XCH mogą być zastąpione innymi rozkazami, np: