4 Instrukcje bajtowej wymiany danych 33
i komórki wewnętrznej pamięci KAM o adresie SOH:
Mov_RAM;
MOV R0,#80H ;R0 c= 80H, adresowanie pośrednie wewnętrznej
MOV ©Rfl,A ;(R0) c= A. pamięci RAM dla obszaru 80H..0FFH
4
Przesłanie zawartości rejestru R4 do rejestru R7, oba rejestry w zerowym banku rejestrów (RBO):
Mov_R4_R7: MOV A,R4 MOV R7,A |
;Ac=R4 ;R7<= A | |
lub | ||
MOV |
7H.4H |
;(7H) c= (4H), dla zerowego banku rejestrów (RBO) ; rejestrowi R4 odpowiada adres 4H, ; * a rejestrowi R7 adres 7H |
PUSH adr |
Push Direct to Stack | |
Działanie: |
SP c= SP + 1 (SP) (adr) | |
Adresowanie |
Mnemonik: |
Struktura bajtów: Cykle Znacz-maszynowe niki: |
bezpośrednie: PUSH adr 1 1 1 0 0 | 0 0 0 0 | 2
Opis działania:
Zwiększenie wskaźnika stosu (SP) o jeden i przesłanie zawartości komórki wewnętrznej pamięci RAM o podanym w drugim bajcie instrukcji adresie adr do stosu adresowanego wskaźnikiem stosu (SP). Należy pamiętać, że wewnętrzna pamięć RAM może być tylko adresowana bezpośrednio. Nie jest możliwe zachowanie na stosie zawartości dowolnego rejestru Rn, np. przez wykonanie instrukcji PUSH R5 ale przez podanie adresu tego rejestru PUSH 5H, jeśli wybrany jest zerowy bank rejestrów RBO.
Mikrokontroler 80(C)5l - programowanie
Instrukcje sterujące wymianą danych umożliwiają rozgałęzienie programu w zależności od wyniku porównania wartości dwóch argumentów, zarówno bajtowych jak i bitowych, oraz wywoływanie podprogramów w wybranych segmentach pamięci łub w całej dostępnej pamięci kodu programu, 64 kBajtach. W mikroprocesorach rodziny MCS51 wyróżnia się trzy grupy instrukcji sterujących wymianą danych:
• skoki warunkowe i bezwarunkowe.
• bezwarunkowe wywołania podprogramów i powroty z nich,
• obsługa przerwań.
Wszystkie wymienione instrukcje przedstawiono w tabeli 7-1.
Tabela 7-1. Instrukqe skoków i wywołań podprogramów
Liczba | |||||
Mnemonik instrukcji |
Operacje |
Tryby adresowania |
cykli maszyn | ||
JZ |
rei |
Jeśli A=0 to PG^PC+rel |
B |
2 | |
JNZ |
rei |
Jeśli A*0 to PCc=PC+rcl |
B |
2 | |
JC |
rei |
Jeśli C=1 to PCciPCtrel |
B |
2 | |
JNC |
rei |
Jeśli C=0 to PCcrPCt-rel |
B |
2 | |
JB |
bit, rei |
Jeśli bit-1 to PC<=PC+reł |
B |
2 | |
JNB |
bitjcl |
Jeśli bit=0 to PCc=PC+rel |
B |
2 | |
JBC |
bit,rel |
Jeśli bit=l |
B |
2 | |
to PCc=PC+rel i bil=<l | |||||
DJNZ |
<bajt>,reł |
<bajt>c=<bajt> -1. Jeśli <bajt>*0 to PCc=PC+rel |
R B |
1 | |
CJNE |
A,<bajfc>,rel |
Jeśli A*<bajt> to PCc=PC+rcl |
H |
N |
•> |
CJNE |
<bajt>,#dana,rel |
Jeśli <bajt>*dana to PCc:PC+rcl |
B |
N 1* |
2 |
AJMP |
adres.11 |
PCc=adres_ll |
N |
i | |
L)MP |
adrcs_16 |
rccadres.ló |
N |
2 | |
SJMP |
rcł |
PCc=PC+rel |
N |
2 | |
JMF |
©A+DPTR |
PCcr A+DITR |
1 |
2 | |
ACALL |
adres_ll |
(SP)<=PC SPc=5P+2 |
N | ||
PCc:adres_ll | |||||
LCAI.I. |
adres 16 |
(SP)o:PC. SPcrSP+2 PC adres 16 |
N |
> | |
RET |
rCc=(SP), ŚPc=SP-2 |
P |
2 | ||
KETI |
PCc=(SP). SPcSP-2 |
P | |||
NOP |
brak działania |
B |
] |