10

10



73


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

AJMP Procedura_2 ;skok do Procedury 2 AJMP Procedura_3    ;skok do Prooidury 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życia 2-bajtowej instrukcji AJMP. Drugi sposób nie stawia żadnych ograniczeń, dostępna jest cala 64 kBajtowa przestrzeń pamięci kodu programu.

W instrukcjach wywołań podprogramów ACALL i LCALL deklarowanie adresów podprogramów jest analogiczne jak w instrukcjach skoków AJMP l 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..0)/ a jako druga część bardziej znacząca licznika rozkazów (PCisjj).

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

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

Stan licznika rozkazów (PO przed zamianą =    00000111 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.

4 Instrukcje bajtowe) wymiany danyd,___JO

•- J >:    •- 5

Poniżej przedstawiony w szczegółach mhcmoniki instrukcji, $tiykturg bajtów, czasy wykonania poszczególnych instrukcji jako liczbę tykli maszynowych' oraz stan zmienianych znaczników.

MOV

argument_l,argument_2

Move Data

Działanie:

Rn

, <»dr) D

A «= Rn <= iRI)

• dana

A

(adr) ił dana

A

Rn

(adr) <= (adrl) (Ri) tfdana

A

(Ri) c= (adr) Jłdana

DPTR <= #dana_16

Cykle    Znacz

maszynowe:    „iii:


Adresoioanic Mnemonik:    Struktura bajtów:

rejestrowe:

MOV

A,Rn

1

1

l

0 1

r

r

r

1

bezpośrednie:

MOV

A,adr

|i

1

1

0 1 0

1

0

1

1

I

adr

pośrednie:

MOV

A,6Ri

1'

1

1

0 0

1

1

i

1

natychmiastowe:

MOV

A,#dana

0

1

1

~Ó | 0

1

0

l)

1

dana

rejestrowe:

MOV

Rn, A

|T

1

1

UL

r

r

r

f

bezpośrednie:

MOV

Rn,adr

|l

0

1

°h

r

r

r

2

|

adr

natychmiastowe:

MOV

Rn,#dana

1 0

1

1

>l>

r

r

r

l

1

dana

1


P

V

P

V


Wyszukiwarka

Podobne podstrony:
10 7 Instrukcje skoków i wywołań podprogramów 73 AJMP Procedura_2 ;skok do Procedury 2 AJMP
10 7 Instrukcje skoków i wywołań podprogramów 83 CALL adr    CALL Uncondilional Dzia
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
18 7 Instrukcje skoków i wywołań podprogramów 85 •    wpisanie pobranego adresu do l
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
lista rozkazow 3 Lista rozkazów mikroprocesora 8051. Instrukcje skoków i wywołań podprogramów Oznacz
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
10 Celem wygenerowania liczb losowych z rozkładu logarytmiczno-normalnego, wprowadzono do generator
10 Celem wygenerowania liczb losowych z rozkładu logarytmiczno-normalnego, wprowadzono do generator

więcej podobnych podstron