4 Instrukcje ba|tQwc| wymiany danych 33
i komórki wewnętrznej pamięci KAM o adresie SOH:
Mov_RAM:
MOV R0,#80H MOV ©R0,A
;R0 c= 80H, adresowanie pośrednie wewnętrznej ;(R0) <= A. pamięci RAM dla obszaru 80H..0FFH
'rzesłanic 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 Slack | |
Działanie: |
SP <= SP + l (SP) (adr) | |
Adresowanie: |
Mnemonik: |
Struktura bajtów: Cykle Znacz-maszynowe: mki: |
bezpośrednie: PUSH adr
| 1 1 0 0 | 0 0 0 0
3dr
Opis działania:
Zwiększenie wskaźnika stosu (SP) o jeden i przesianie zawartości komórki wewnętrznej pamięci RAM o podanym w drugim bajdę 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śd 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)S1 - 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 lub 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 instmkcje przedstawiono w tabeli 7-1.
Tabela 7-1. Instrukcje skoków i wywołań podprogramów
Mnemonik instrukcji |
Operacje |
Tryby adresowania |
Liczba cykli maszyn | ||
JZ / |
rei |
Jeśli A=0 to PCcsPC+rel |
B |
2 | |
JNZ |
rei |
Jeśli A*0 to PC<=PC+rcł |
B |
2 | |
JC |
rei |
Jeśli C=1 to PCdPCtrel |
B |
2 | |
INC |
rei |
Jeśli C=0to PC<=PC+rel |
B |
2 | |
JB |
bit.rel |
Jeśli bit*l 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 toPC<=PC+rel i bit=(i |
B |
2 | |
DJNZ |
<bajt>.rel |
<bajt>c=<bajt> -1. Jeśli <bajt>*0 to PC<=PC+rel |
R U |
1 | |
CJNE |
A,<bajt>,rel |
Jeśli A*<bajt> to PCcrPCłrel |
B |
N |
■> |
CJNE |
<bajt>,#dana,rcl |
Jeśli <bajt>*dana to PCc=PC+rcl |
B |
N P |
2 |
AJMP |
adres_ll |
PCczadres 11 |
N | ||
L)MP |
adrcs_16 |
PCczadres 16 |
N |
o | |
SJMP |
rcł |
PCc=PC+rel |
N |
2 | |
JMP |
©A+DPTR |
PCc= A+DPTR |
1 |
2 | |
ACALI. |
adresll |
(SP)c=PC, SPc=SP+2 PCcadres 11 |
N |
•> | |
I.CAI.I. |
adres 16 |
(SP>c_|*C, SPcrSP+2 PC<=adrcs 16 |
N |
> | |
RET KETI |
PCc=(SP). SP<=SP-2 PCc=(SP>. SPc=SP-2 |
P P |
> i | ||
NOP |
brak działania |
B |
i |