4. Instrukcje hakowej wymiany danych 31
Adresowanie: Mnemonik: Struktura bajtów: Cykle Znacz-
maszynowe: |
niJci: | ||||||||
rejestrowe: |
MOV |
adr,A |
rr |
1 1 |
1 |o |
1 |
1 |
'1 |
1 |
L_ |
adr |
I | |||||||
rejestrowe: |
MOV |
adr,Rn |
h |
0 0 |
0 | 1 |
r |
r |
2 | |
L_ |
adr |
1 | |||||||
bezpośrednie: |
MOV |
adr.adrl |
1 |
n u |
0 | 0 |
1 |
0 |
'1 |
2 |
1 |
adr | ||||||||
| |
adrl | ||||||||
pośrednie: |
MOV |
adr,@Ri |
h |
0 |
0 | 0 |
1 |
1 |
i |
2 |
adr |
1 | ||||||||
natychmiastowe: |
MOV |
adr.idana |
10 |
1 |
1 1 0 |
1 |
0 |
>1 |
2 |
adr |
1 | ||||||||
1 |
dana | ||||||||
rejestrowe: |
MOV |
6Ri,A |
i' |
1 |
rr|T |
r |
r |
T) |
1 |
bezpośrednie: |
MOV |
SRi.adr |
ii |
0 |
0 | 1 |
r |
r |
r 1 |
2 |
1 |
adr |
_J | |||||||
natychmiastowe: |
MOV |
oRi.łdana . |
0 |
1 |
1 1 |
r |
r |
'1 |
1 |
1 |
dana | ||||||||
natychmiastowe: |
MOV |
DPTR,#dana. |
.16 | 1 |
0 |
1) 1 | 0 |
0 |
0 |
°l |
2 |
dana_16i5
dana 167,0
Mik/okomroler 80(C)SI - progiamowamc
Rozkazy CJNE przed wykonaniem skoku wzglydnego porównują oba podam: 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,#Parametr CJNE A,#4DH,Dalcj ProcJ:
Dalej:
;A c= Parametr
;jeśli A x 4DH to skok do adresu Dalej
;początck procedury Proc_l ;koniec procedury Proc J ;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 AJMP adres_ll podany 11-bitowy adres zmienia 3 najbardziej znaczące bity w pierwszym bajdę instrukqi. Wykonanie skoku możliwe jest w obrębie 2 kBajtowego bloku pamięd 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ęd programu.
• w skoku pośrednim JMP 6A+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ęśdej stosowane są do realizacji 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 DPTR,#Tablica .Procedur ;DPTK <= adres Tablicy Procedur MOV A.tfParametr ;A c= Parametr, Parametr - i).. 4
RL A ;przesunięde A w lewo. mnożenie przez 2.
;ponieważ rozkazy AJMP są 2 bajtowe JMP GA+DPTR ;PC c A + DPTR
Tablica Procedur:
AJMP Procedura l) AJMP Procedura.!
;deklaraqa tablicy adresów początkowych procedm ;skok do Procedury l)
;skok do Procedury 1