4. Instgjkc)c bajtowe) wymiany danych 31
4. Instgjkc)c bajtowe) wymiany danych 31
Adresowanie:
rejestrowe:
rejestrowe:
bezpośrednie:
pośrednie:
natychmiastowe:
rejestrowe:
bezpośrednie:
natychmiastowe:
natychmiastowe:
1
2
2
2
2
1
2
1
2
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
Mnemonik: Struktura ba/tów: Cykle Znacz-
maszynowe: mJci;
adr,A
adr.Rn
adr.adrl
adr,@Ri
adr,*dana
©Ri,A
SRi.adr
6Ri,#dana . DPTR,#dana_16
Mikrokontroler 8CKC')5l - programowanie
Rozkazy CJNE przed wykonaniem skoku względnego porównuj oba podane argumenty. Jest to szczególnie istotne ponieważ w liście rozkazów mikroprocesora 8051 brak rozkazów porównania. Przykładem wykorzystania rozważanych instrukcji jest rozpoczęcie wykonywania procedury Proc_l jeśli Parametr zawarty w akumulatorze (A) jest równy wartości 4DH:
MOV A.iParametr ;A c= Parametr
CJNE A,#4DH,Dalej ;jeśli A * 4DH to skok do adresu Dalej ProcJ:
...................—................ ;początek procedury Proc_l
— .................................... ;koniec procedury Proc _1
Dalej: ;wykonywanie następnych instrukcji
— .................................. ;programu
Rozkazy skoków bezwarunkowych obejmują 4 instrukcje. W każdej z nich adres skoku podawany jest odmiennie:
• argumentem w rozkazie SJMP rei jest 8-bitowy adres względny rei. Powoduje to. że zmiana sekwencji programu możliwa jest przez dokonanie skoku o -128 komórek poniżej lub o 127 komórek powyżej miejsca, w którym znajduje się instmkcja,
• w rozkazie AJMPadres_ll podany 11-bitowy adres zmienia 3 najbardziej znaczące bity w pierwszym bajcie instrukqi. Wykonanie skoku możliwe jest w obrębie 2 kBajtowego bloku pamięci kodu programu,
• 3-bajtowa instrukcja LJMP adres_16 zawiera pełny 16-bitowy adres, a tym samym ograniczeniem jest jedynie dostępny 64 kBajtowy obszar pamięci programu.
• w skoku pośrednim JMP ©A+DPTR adres skoku jest sumą zawartości akumulatora (A), 8-bilowej liczby całkowitej bez znaku i wskaźnikowego rejestru danych (DPTR).
Skoki pośrednie najczęściej stosowane są do realizaqt procedur, których adresy początkowe podawane są w tablicach. Jeśli Parametrem określającym typ procedury jest , zmienna z przedziału 0..4 to adresy początkowe 5 różnych procedur mogą być zadeklarowane tak jak w poniższym przykładzie:
MOV DCTR.łTablica.Procedur ;DPTK <= adres Tablicy Procedur MOV A.tfParametr ;A <= Parametr, Parametr ~ 0 .. 4
RL A ;przesunięde A w lewo, mnożenie przez 2.
;ponieważ rozkazy AJMP są 2 ba|lovve JMP GA+DPTR ;PC cr A + DPTR
Tablica Procedur:
AJMP Procedura l) AJMP Procedura _1
;deklaraqa tablicy adres*')W początkowych proccdui ;skok do Procedury 0 ;skok do Procedury 1