7 łnsinjkgc skoków i wywołań podprogramów 75
7 łnsinjkgc skoków i wywołań podprogramów 75
JMP warunck,adres
jump on Condition
PC c= PC + 3 |
Warunek: jeśli Bit - 1 |
to |
PC c= PC + rei | |
PC «= PC + 3 |
Jeśli Bit = 0 |
to |
PC <= PC ♦ rei | |
PCcrPC + 3 |
Jeśli Bit n 1 |
to |
PC c= PC + rei. | |
Działanie: |
PC c= PC +■ 2 |
Jcśti C = 1 |
to |
PC <= PC + rei |
PCc=PC+2 |
Jeśli C = 0 |
to |
PC <= PC + rcl | |
PCcrPC + 2 |
Jeśli A a 0 |
to |
PC «= PC + rei | |
PC c= PC ♦ 2 |
Jeśli A * 0 |
to |
PC er PC + rei |
Adresowanie: Mnemonik:
Struktura bajtów: Cykle Znacz-
maszynowe: niki:
bezpośrednie: JB bit,rel
bezpośrednie: JNB bit,rel
bezpośrednie: JBC bit,rel
bezpośrednie: JC
rei
bezpośrednie: JNC
rei
bezpośrednie: JZ
rei
pośrednictwem rejestru KO lub Rl {w instrukcji XCH pamięć może być adresowana bezpośrednio lub rejestrowo).
Jak stosować niektóre z przedstawionych instrukcji ilustruje dwa poniższe przykłady przesuwania w prawo o dwie pozycje 8-znakowej liczby zapisanej w kodzie BCD (rysunek 4-1). Liczba 12345678 zapisana jest w wewnętrznej pamięci RAM od adresu 48H i zajmuje cztery kolejne bajty. Po wykonaniu programu w akumulatorze mają znajdować się dwie najmniej znaczące cyfry przesuwanej liczby. Przesuwanie w prawo o n-pozycji jest równoważne dzieleniu liczby przez 10n.
stan wewnętrznej pamięci RAM stan wewnętrznej pamięci RAM
przed wykonaniem programu po wykonaniu programu
Rys. 4-1 Rozmieszczenie argumentów w wewnętrznej pamięci mikroprocesora. W pierwszym przykładzie zastosowano jedynie instrukcje typu MOV <dcst>,<byte>:
MOV |
A.48H |
;A c= (48H) | |
MOV |
4SH.49II |
;(48H)c=(49łl) | |
MOV |
49H.4AH |
,•(4911) c= (4Al 1) | |
MOV |
4AH.4DH |
;(4AH) <= (4BH) | |
MOV |
4BH,#0 |
;(4BH) <= 0 | |
drugim instrukcję XCH A,<byte>: | |||
CLR |
A |
;A <=-0 | |
XCH |
;stan akurnualłora pu wykonaniu instrukcji: | ||
A.4UH |
;A <=> (4BH), |
A » 12H | |
XCH |
A.4AH |
;A o (4AH), |
A = 34H |
XCH |
A.49H |
;A o (49h), |
A = 56H |
XCH |
A.48H |
;A co (48H), |
. A a 78H |
Mimo identycznego działania, długość programów |
i czas ich realizacji |
równy. W pierwszym przypadku program liczy 14 bajtów i realizowany jest w 9 cyklach maszynowych, a w drugim liczy 9 bajtów i jego wykonanie trwa 5 cykli maszynowych.
Mikrokontroler 80(C)51 - programowanie