10

10



7 Instrukcje skoków i wywołań podprogramów 73

AJMP Procedura_2 ;skok do Procedury 2 AJMP Procedura_3    ;skok do Procedury 3

AJMP Procedura_4 ;skok do Procedury 4

W podobny sposób można deklarować tablicę 128 (256/2) różnych procedur. Ograniczenie wynika z konieczności wykonania przesunięcia zawartości akumulatora o jedną pozycję w lewo, co jest równoznaczne z pomnożeniem zawartości akumulatora przez 2. jeśli w tablicy procedur stosować instrukcje LJMP wówczas należy zawartość akumulatora mnożyć przez 3 i zadeklarować można jedynie 85 (256/3) wywołań procedur. W pierwszym rozwiązaniu deklarowana tablica procedur i wszystkie procedury muszą znajdować się we wspólnym 2 kBajtowym bloku pamięci kodu programu. Jest to konsekwencją użyda 2-bajtowej instrukcji AJMP. Drugi sposób nie stawia żadnych ograniczeń, dostępna jest cała 64 kBajtowa przestrzeń pamięa kodu programu.

W instrukcjach wywołań podprogramów ACALL i LCALL deklarowanie adresów podprogramów jest analogiczne jak w instrukcjach skoków AJMP i LJMP. Instrukcje typu CALL nazywane są instrukcjami skoków ze śladem. Tym śladem jest zapamiętany przez mikroprocesor na stosie adres powrotu czyli adres następnej instrukcji występującej po instrukcji wywołania podprogramu CALL W takiej sytuacji wskaźnik stosu jest dwukrotnie inkrementowany i zapamiętywana jest w dwóch etapach zawartość 16-bitowego licznika rozkazów (PC). Jako pierwsza przesyłana jest mniej znacząca część (PC7. q), a jako druga część bardziej znacząca licznika rozkazów (PCjsjj).

Dodatkowego wyjaśnienia wymaga ograniczenie zakresu skoków AJMP i wywołań podprogramów ACALL w obrębie 2kBajtowego obszaru pamięd kodu programu. W obu rozkazach modyfikowanych jest jedynie 11 najmniej znaczących bitów licznika rozkazów (PC10..0). Pięć najbardziej znaczących bitów licznika rozkazów (PCj5 .11) nie ulega zmianie, i one właśnie określają numer 2 kBajtowej strony pamięa kodu programu (rysunek).

W pierwszym przpadku, jak w przykładzie 1, po pobraniu rozkazu AJMP 1 licznik rozkazów (PC) ma wartość PC-07JTH. Po zamianie 11 najmniej znaczących bitów licznika rozkazów (PC10..0) jego stan jest równy PC * 1:

Stan licznika rozkazów (PO przed zamianą =    0000 0111 1111 1111B

Adr.ll -    000 0000 0001B

.stan licznika rozkazów (PC) po zamianie »    0000 0000 0000 0001B

Jako następna zostanie wykonana instrukcja MOV A,#78H o adresie 0001.

•    ■-s    - *

Poniżej przedstawiony w szczegółach mhemonikl instrukqi, strukturę bajtów, czasy wykonania poszczególnych instrukcji jako liczbę tykli maszynowychc oraz stan zmienianych znaczników.

Move Data


MOV argument_l,argument_2

Działanie


A <=


Rn

(»dr)

iRł)

Idana


Rn c=


A

(adr)


• dana


(adr) c=


A

Rn

(adrl)

(Ri>


(Ki) c=


A

(adr)


• dana


• dana

DPTR c= #dana_16

Adresowanie Mnemonik:    Struktura bajtów:    Cykle    Znacz

   _ maszynowe:    mii:

rejestrowe:

MOV

A,Rn

h

1

1

0 1

r

r r

1

1*

bezpośrednie:

MOV

A,adr

11

l

1

0 1 0

1

0 1

1

1*

L_

adr

pośrednie:

MOV

A,6Ri

| 1

1

1

0 | 0

1

1 i

1

p

natychmiastowe:

MOV

A,#dana

I 0

1

1

0 0

1

0 i) |

1

I*

I

dana

_1

rejestrowe:

MOV

Rn,A

| 1

1

1

nu

r

_L. d

1

bezpośrednie:

MOV

Rn,adr

I 1

0

1

°h

r

r r 1

2

|

adr

J

natychmiastowe:

MOV

Rn,#dana

1 n

1

1

»h

r

r -1

1

dana__


Wyszukiwarka

Podobne podstrony:
10 7 Instrukcje skoków i wywołań podprogramów 83 CALL adr    CALL Uncondilional Dzia
18 7 Instrukcje skoków i wywołań podprogramów 85 •    wpisanie pobranego adresu do l
16 7 Instrukcje skoków i wywołań podprogramów 77 Przykład 2: Lcd On: Dalej: Jeśli do wyjścia portu
14 7 Instrukcje skokow i wywołań podprogramów 79 CJNE argument_l,axgument_2,adres Compare and Jump
14 7 Instrukcje skokow i wywołań podprogramów 79 CJNE argument_l.argumenl_2,adres Compaie and Jump
16 7 Instrukcje skoków i wywołań podprogramów 77 Przykład 2: Lcd .On: Dalej: Jeśli do wyjścia portu
10 73 7 Instrukcje skoków i wywołań podprogramów AJMP Procedura_2 ;skok do Procedury 2 AJMP
18 7 łnsinjkgc skoków i wywołań podprogramów 75 7 łnsinjkgc skoków i wywołań podprogramów 75 JMP
12 7 Instrukcje skoków i wywoJag podprogramów 71 Przed omówieniem przedstawionych grup rozkazów wyj
lista rozkazow 3 Lista rozkazów mikroprocesora 8051. Instrukcje skoków i wywołań podprogramów Oznacz
12 7 Insnukcte skokpw i wywołań podprogramów 81 7 Insnukcte skokpw i wywołań podprogramów
10 5 instrukcje arytmetyczne 53 Przykład: Mnożenie dwóch stałych o wartościach lfiD i 29D: Mul Ali:

więcej podobnych podstron