Untitled58

Untitled58



108 I 1. Programy, podprogramy, segmenty

cym podprogram. Podprogramy te zostały umieszczone powyżej programu głównego. Na samym końcu został umieszczony podprogram obsługi przerwania od licznika TO. Program główny jest zakończony rozkazem skoku do procedury wyświetlania na polu odczytowym zapytania o kolejny pomiar.

108 I 1. Programy, podprogramy, segmenty

r


RETI

podprogram obsługi przerwania PPTO:

RET

podprogram

KLAW:

RET

podprogram WYS LCD:


LJMP POMIAR LCALLWYS LCD


LCALL KLAW


LCALL WYS LCD POMIAR:


LCALL INIT-LCD


sygnał przerwania

JROG_GL:

HOBh LJMP PP TO


Oh


LJMP PRÓG GL


Start programu


Rys. 11-2 Wywoływanie podprogramów.

Jeżeli w trakcie wykonywania programu zostanie przyjęty sygnał przerwania, to zgodnie z wcześniej omówionymi zasadami, procesor przejdzie do obsługi tego przerwania wywołując odpowiedni podprogram rozkazem LjMF PPTO.

Wywoływanie podprogramów może następować z dowolnego miejsca - z podprogramów obsługi przerwań jak i z innych podprogramów. Umieszczenie podprogramów względem programu głównego może być dowolne. 1

Rozkazy skoków, wywołania i powrotów z podprogramów są przedstawione w poniższych tabelach:

Tabela 11-1.    Rozkazy skoków

instrukcje:

zapis binarny instrukcji

wykonywane operacje

AJMP adr_ll

AldAyAg00010

A7 + A0

PC <- PC + 2, PC<- ADR_11

LJMP adr_16

00000010

Ais Ag A7-A0

PC <- PC + 3, PC <- adr_16

SJMP rei

10000000

rei

PC <- PC + 2, PC <- PC + rei

JMP @A + DPTR

01110011

PC <- PC + 2,

PC <- A + DPTR

Instrukcje skoków bezwarunkowych powodują wpisanie do licznika rozkazów PC adresu następnego wykonywanego programu. Adres może być podany w sposób bezpośredni, ale uniemożliwia to przesuwanie programów, lub w postaci etykiety, co jest najczęściej stosowane. Rozkaz ACALL operuje tylko adresem 11-bitowym. Umożliwia to wykonywanie skoków w obszarze 2 KB bloku pamięci programu. Rozkaz LCALL daje możliwość wykonywania skoków w całym 64 KB obszarze pamięci programu. Rozkaz SJMP traktuje wartość rei jako 8 bitową liczbę ze znakiem o zakresie -128 ^ +127. W miejsce wartości rei można także wstawić etykietę, a asembler sam wyliczy odpowiednią wartość. W większości asemblerów wystarczy podać tylko rozkaz JMP, a asembler sam dobierze odpowiedni rozkaz do długości skoku. W rozkazie JMP @A+DPTR do rejestru PC jest wpisywana suma zawartości akumulatora i rejestru DPTR, przy czym liczba w akumulatorze jest traktowana jako liczba całkowita bez znaku, tzn. o zakresie 0 + 255.

Tabela 11-2.    Rozkazy wywołania podprogramów.

instrukcje:

zapis binarny instrukcji

wykonywane operacje

ACALL adrii

AllAAi00001 Ay -r A0

PO-PC + 2, SP<~SP+1 (SP)<-PC70, SP*-SP+1 (SP)<-PCj5 g, PC10 0<-adr_l 1

LCALL adr_16

00010010

A1!; + A8 A7-Ao

PC<—PC+3, SP<-SP+1 (SPJ^PC**, SP<-SP+1 (SP)<-PC15 „ PC<-adr_16

Rozkazy wywołania podprogramów powodują schowanie na stos adresu, °d którego będzie wykonywany program po powrocie z podprogramu, a do licznika jest wpisywany adres, od którego zaczyna się podprogram. Zakresy


Wyszukiwarka

Podobne podstrony:
Untitled56 .    11. Programy, podprogramy, segmenty Wszystkie procesory, a więc i mikro
Untitled59 110 1 1. Programy, podprogramy, segmenty adresów są takie same jak odpowiednio w rozkazac
Untitled 108 Podawanie słów zaczynających siętaką samą głoską Słowa zaczynające się taką samą
Untitled6(1) 108 Rezultaty polityki neoliberalnej. .. -    dobór w procesie prywatyza
108 109 2 108 Programowanie liniowe całkowitoliczbowe Rysunek 2.1 Rozpatrzymy najpierw możliwość pod
Untitled4(3) Na rys. 1 zjawisko wahań cyklicznych w gospodarce rcr się zostało przedstawione w ten s
Skanuj0054 108 Lekcja piętnasta —    Per o, hombre, £que trabajo te costaba deci
Untitled 17 60 I. Teoria granic [35 Aby znaleźć tę granicę, przejdźmy do granicy w napisanej powyżej
Untitled 25252525281 2525252529 T > 15 SMTP 5 55hl F    ^ ^5 li i<iJ C tę o>
Untitled59 110 11. Programy, podprogramy, segment) adresów są takie same jak odpowiednio w rozkazach
Untitled57 106 11. Programy, podprogramy, segmenty pętla Ponieważ od tego momentu użytkownik przyrzą
227 (3) 227 wiającej dopisywanie podprogramów własnych przez użytkownika. Podstawowy segment tego pr
4. Wykonanie podprogramu jest kończone zawsze rozkazem powrotu do programu głównego. Wykonanie tego
Języki proceduralne Języki proceduralne pozwalają programiście na definiowanie podprogramów (procedu

więcej podobnych podstron