19

19



4. Instrukcje bajtowej wymiany danych 29

Grupa rozkazów MOVX dotyczy wymiany danych między mikroprocesorem i zewnętrzną pamięcią RAM. Jedynymi rejestrami, które biorą udziai w tej wymianie są akumulator, rejestry RO ł R1 oraz wskaźnikowy rejestr danych (DPTR). Oba rejestry procesora RO l Rl są 8-bitowe, a wskaźnikowy rejestr danych (DPTR) 16-bitOwy. Dlatego adresując pamięć za pomocą rejestrów Ri można zaadresować bezpośrednio jedynie 256 komórek zewnętrznej pamięci RAM. Stosując wskaźnikowy rejestr danych (DPTR) można adresować całą dostępną przestrzeń zewnętrznej pamięci RAM (64 kBajty). Należy przy tym pamiętać, że mikroprocesor komunikując się z zewnętrzną pamięcią RAM wykorzystuje do jej pełnego adresowania 8 Unii portu P2, który zawiera bardziej znaczącą część 16-bitowego adresu. Część mniej znacząca adresu multipleksowana z przesyłanymi danymi pojawia się na liniach portu PO (rysunek 2-9). Stosując adresowanie rejestrowe, używając rejestrów Rj, bardziej znaczącą część adresu należy przesyłać za pośrednictwem portu P2 (rysunek 2*10). W obu przypadkach sygnały zapisu WR# i odczytu RD# danych do/z pamięci pojawiają się na Uniach portu 1*3 (P3.6-WR#, 1*3.7*RD#).

Dwa rozkazy przesyłania danych MOVC pozwalają na pobieranie argumentów z pamięci kodu programu (pamięci ROM/EPROM). Dane mogą być tylko przesłane do akumulatora i transmisja w odwrotnym kierunku nie jest możłiwa (pamięć tylko do odczytu). Zadaniem obu rozkazów jest pobranie stałych zawartych w pamięci kodu programu (ROM/EPROM). Zaproponowany sposób adresowania pamięci kodu programu jest szczególnie polecany do odczytu deklarowanych w programie tablic o długości do 256 bajtów. W obu rozkazach bierze udział jedynie akumulator oraz wskaźnikowy rejestr danych (DPTR) lub licznik rozkazów (PC). W akumulatorze znajduje się wartość przesunięcia w tablicy, a po zakończeniu instrukcji odczytany z pamięci programu argument Adres punktu początkowego tablicy przekazywany jest przez wskaźnikowy rejestr danych (DPTR) lub licznik rozkazów (PC).

Na przykład wykonanie ciągu instrukcji w programie głównym:

MOV A.ffParametr ;A <= Parametr, Parametr=l lub 2 LCALLTablica    .wywołanie podprogramu o nazwie Tablica

i podprogramie:

Tablica:

MOVC A.&A+PC RET

DB 10H DB 20H


;podprogram o nazwie Tablica ;Ac= (A+PC), A=1UH lub 20H ;povyrót z podprogramu Tablica ;wartość dla Parametru=l ;wartość dla Parametru=2

powoduje.że w akumulatorze znajduje się wartość 1011, jeśli Parametr* 1, lub wartość 20H. jeśli Parametr*2. Podanie jako parametru wartości zerowej powoduje, że w akumulatorze znajdzie się kod rozkazu RET, czyli wartość 22H.

Przykład 1:

Przykład 2:


adres

pamięci

kodu

programu:


0801H

0800H

07FFH

07FEH

07FDH


0E6H


0F8H


01H

"Ó1H


instrukcja:

MOV A.©R0 MOV R0.A

AJMP 1


adres

pamięd

kodu

programu:


0003

0002

0001

0000


0E8H


78H


64H


MOV A.R0

MOV A.#78H NOP



0801H 0800H 07FFH 07FEH 07FDH


0E8H


0F8H


01H

“OIH


instrukcja:

MOV A.@R0 MOV RO.A

AJMP 1 NCP



0003

0002

0001

0000


0E8H


78H


64H


MOV A.RO

MOVA.#78H

NOP


W drugim przypadku po pobraniu rozkazu AJMP 1 stan PC jest równy PC = 0800H, a po zmianie 11 najmniej znaczących bitów PC = 0801H.

stan licznika rozkazów (PC) przed zamianą =    0000 1000 (XXX) (XXK)B

Adr 11 «» _000 0000 0001B

stan licznika rozkazów (PC) po zamianie =    0000 1000 0000 0001B

Jako następna zosJanie wykonana instrukcja MOV A,@R0 o adresie 0801H.

Zadaniem instrukcji RET jest powrót z podprogramu do programu, z którego wystąpiło wywołanie. Rozkaz ten wpisuje do licznika rozkazów (PC) dwa bajty znajdujące się na szczyde stosu, a wskaźnik stosu (5P) jest dwukrotnie dekrementowany. W porównaniu z instrukcją CALL przesyłanie zawartości szczytu stosu do licznika rozkazów dokonywane jest w odwrotnej kolejności. Podobny charakter jak instrukcja RET ma rozkaz RETI. Głównym jej celem jest uaktywnienie wewnętrznego układu struktury przerwań.

Pełna listę rozkazów skoków i wywołań podprogramów wraz z komentarzami i przykładami przedstawiono w dalszej częśd opracowania.


Wyszukiwarka

Podobne podstrony:
19 4 Instrukcje bajtowe) wymiany danych 39 Przykład: Przesianie zawartości czterech banków rejestró
17 4. Instrukcję bajtowe) wymiany danych 37 Instrukcja XCHD stosowana jest do zamiany kodu BCD na i
17 4 Instrukcje bajtowe) wymiany danych 37 Instrukcja XCHD stosowana jest do zamiany kodu BCD na in
15 4 Instrukcje bajtowej wymiany danych 35 Pop_DPTR: POP DPH    ;DPH <= (SP) = 56
13 4 Instrukcje bajtowej wymiany danych 33 i komórki wewnętrznej pamięci KAM o adresie SOH: Mov_RAM
15 4 Instrukcje bajtowej wymiany danych 35 Pop_DPTR: POP DPH    ;DPH c= (SP) = 56H,
19 4 Instrukcje ba
11 •1 Instrukcje bajtowej wymiany danych
10 Dodatek B. Lisia instrukcji wg typów 93Dodatek B. Lista instrukcji wg typów Instrukcje bajtowej
10 Dodatek B Lisia msmikgi wg typów 93Dodatek B. Lista instrukcji wg typów Instrukcje bajtowej wymi
19 S Instrukcje arytmetyczne 49 Opis działania: Odejmowanie od zawartości akumulatora (A) znacznika
19 5 Instrukcje aryimctyczni e Opis działania: Odejmowanie od zawartości akumulatora (A) znacznika
19 5. Instruktaż na stanowisku roboczym i nadzór nieprawidłowości jego powinny być od razu powiązan

więcej podobnych podstron