|
Serwis Edukacyjny nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Tłumaczenie: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
CALL nn |
CALL SUBROUTINE = Wywołaj podprogram |
|||||||||||||||||||||||||||||||||||
| Operacja: | (SP-1) ← PCH. (SP-2) ← PCL. PC ← nn, SP ← SP - 2 | |||||||||||||||||||||||||||||||||||
| Mnemonik: | CALL | |||||||||||||||||||||||||||||||||||
| Argumenty |
nn
Pierwszy z bajtów argumentu nn w kodzie |
|||||||||||||||||||||||||||||||||||
| Opis: |
Bieżąca zawartość Licznika Rozkazów (PC - Program Counter) jest umieszczana na szczycie zewnętrznego stosu w pamięci. Następnie argument nn jest ładowany do PC w celu wskazania komórki pamięci, w której znajduje się pierwsza instrukcja wywoływanego podprogramu. Od tej instrukcji rozpocznie się dalsze wykonywanie programu. Na końcu podprogramu można zastosować instrukcję RET (ang. RETurn - powrót z podprogramu) w celu powrotu do pierwotnego miejsca w programie przez pobranie ze szczytu stosu umieszczonego tam wcześniej adresu powrotu i załadowanie go z powrotem do rejestru licznika rozkazów PC. Umieszczenie tego adresu przez instrukcję CALL jest wykonywane przez wcześniejsze zmniejszenie bieżącej zawartości rejestru Wskaźnika Stosu (SP - Stack Pointer), załadowanie starszego bajtu zawartości rejestru PC do komórki pamięci wskazywanej teraz przez SP; następnie wskaźnik stosu SP jest ponownie zmniejszany i pod wskazywane przez niego adres jest umieszczany młodszy bajt licznika rozkazów PC - adres powrotny znajduje się zatem na szczycie stosu przy wejściu do podprogramu i z tego miejsca może pobrać instrukcja RET. Ponieważ jest to instrukcja trzybajtowa, licznik rozkazów PC zostaje zwiększony o 3 przed umieszczeniem go na stosie i wskazuje następną instrukcję za instrukcją CALL.
|
|||||||||||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | |||||||||||||||||||||||||||||||||||
| Przykład: | Jeśli licznik rozkazów PC posiada zawartość 1A47H,wskaźnik stosu SP ma zawartość 3002H, a komórkipamięci: 1A47H zawiera 0CDH1A48H zawiera 35H1A49H zawiera 21Hto gdy rozpocznie się sekwencja pobrania instrukcji, |
|||||||||||||||||||||||||||||||||||
CALL cc,nn |
CALL SUBROUTINE = Wywołaj podprogram warunkowo |
|||||||||||||||||||||||||||||||||||
| Operacja: |
Jeśli cc jest prawdziwe, to (SP-1) ← PCH, (SP-2) ←
PCL,, PC ← nn, SP ← SP - 2 Jeśli cc jest fałszywe, to PC ← PC + 3 |
|||||||||||||||||||||||||||||||||||
| Mnemonik: | CALL | |||||||||||||||||||||||||||||||||||
| Argumenty |
cc,nn
Pierwszy z bajtów argumentu nn w kodzie operacyjnym instrukcji |
|||||||||||||||||||||||||||||||||||
| Opis: |
Jeśli warunek cc jest spełniony, to bieżąca zawartość Licznika Rozkazów (PC - Program Counter) jest umieszczana na szczycie zewnętrznego stosu w pamięci. Następnie argument nn jest ładowany do PC w celu wskazania komórki pamięci, w której znajduje się pierwsza instrukcja wywoływanego podprogramu. Od tej instrukcji rozpocznie się dalsze wykonywanie programu. Na końcu podprogramu można zastosować instrukcję RET (ang. RETurn - powrót z podprogramu) w celu powrotu do pierwotnego miejsca w programie przez pobranie ze szczytu stosu umieszczonego tam wcześniej adresu powrotu i załadowanie go z powrotem do rejestru licznika rozkazów PC. Umieszczenie tego adresu przez instrukcję CALL jest wykonywane przez wcześniejsze zmniejszenie bieżącej zawartości rejestru Wskaźnika Stosu (SP - Stack Pointer), załadowanie starszego bajtu zawartości rejestru PC do komórki pamięci wskazywanej teraz przez SP; następnie wskaźnik stosu SP jest ponownie zmniejszany i pod wskazywane przez niego adres jest umieszczany młodszy bajt licznika rozkazów PC - adres powrotny znajduje się zatem na szczycie stosu przy wejściu do podprogramu i z tego miejsca może go pobrać instrukcja RET.
Ponieważ jest to instrukcja trzybajtowa, licznik rozkazów PC które odpowiadają bitom w rejestrze znaczników F. W kodzie instrukcji stany te są przedstawiane następująco:
|
|||||||||||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | |||||||||||||||||||||||||||||||||||
| Przykład: | Jeśli znacznik C jest wyzerowany, licznik rozkazów PC posiada zawartość 1A47H, wskaźnik stosu SP ma zawartość
3002H,a komórki pamięci: 1A47H zawiera 0D4H1A48H zawiera 35H1A49H zawiera 21Hto gdy rozpocznie się sekwencja pobrania instrukcji, trzybajtowa |
|||||||||||||||||||||||||||||||||||
RET |
RETURN FROM SUBROUTINE = Wróć z podprogramu |
|||||||||||||||||
| Operacja: | PCL ← (SP), PCH ← (SP+1), SP ← SP + 2 | |||||||||||||||||
| Mnemonik: | RET | |||||||||||||||||
| Kod operacyjny |
|
|||||||||||||||||
| Opis: |
Bajt w komórce pamięci o adresie określonym przez zawartość wskaźnika stosu SP jest umieszczany w młodszych ośmiu bitach rejestru licznika rozkazów PC. Następnie SP jest zwiększany o 1 i kolejny bajt z pamięci wskazywany przez SP zostaje pobrany i umieszczony w starszych ośmiu bitach rejestru PC. Po pobraniu tego bajtu SP jest ponownie zwiększany o 1 i wskazuje adres o 2 większy od wartości przed wykonaniem instrukcji RET. Instrukcję tę zwykle używa się do zakończenia wykonywania programu, do którego wejście nastąpiło przy pomocy instrukcji CALL.
|
|||||||||||||||||
| Zmieniane znaczniki: | Żaden | |||||||||||||||||
| Przykład: | Jeśli licznik rozkazów PC (ang.
Program Counter) ma zwartość 3535H, rejestr
wskaźnika stosu SP(ang. Stack Pointer) ma zawartość 2000H, a komórkipamięci o kolejnych adresach 2000H i 2001Hzawierają odpowiednio bajty
0B5H i 18H, to powykonaniu instrukcji
RET wskaźnik stosu zmieni sięna 2002H, a rejestr
licznika rozkazów otrzyma nowązawartość 18B5H, która
będzie adresem następnejinstrukcji do wykonania w programie. |
RET cc |
RETURN FROM SUBROUTINE = Wróć z podprogramu warunkowo |
|||||||||||||||||||||||||||||
| Operacja: |
Jeśli cc jest prawdziwe, to PCL ← (SP),
PCH ← (SP+1), SP ← SP + 2 Jeśli cc jest fałszywe, to PC ← PC + 1 |
|||||||||||||||||||||||||||||
| Mnemonik: | RET | |||||||||||||||||||||||||||||
| Argumenty |
cc
|
|||||||||||||||||||||||||||||
| Opis: |
Jeśli warunek cc jest prawdziwy, to bajt w komórce pamięci o adresie określonym przez zawartość wskaźnika stosu SP jest umieszczany w młodszych ośmiu bitach rejestru licznika rozkazów PC. Następnie SP jest zwiększany o 1 i kolejny bajt z pamięci wskazywany przez SP zostaje pobrany i umieszczony w starszych ośmiu bitach rejestru PC. Po pobraniu tego bajtu SP jest ponownie zwiększany o 1 i wskazuje adres o 2 większy od wartości przed wykonaniem instrukcji RET. Instrukcję tę zwykle używa się do zakończenia wykonywania programu, do którego wejście nastąpiło przy pomocy instrukcji CALL. Jeśli warunek cc jest fałszywy, to
rejestr licznika rozkazów PC jest odpowiadają bitom w rejestrze znaczników F. W kodzie instrukcji stany te są przedstawiane następująco:
|
|||||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | |||||||||||||||||||||||||||||
| Przykład: | Jeśli znacznik S w rejestrze znaczników F jest
ustawiony na 1, licznik rozkazów PC (ang. Program Counter) ma zwartość 3535H,rejestr wskaźnika stosu SP (ang. Stack Pointer) ma zawartość , a komórki pamięci o kolejnych adresach 2000H
i 2001Hzawierają odpowiednio bajty 0B5H i
18H, to po wykonaniuinstrukcji RET M wskaźnik
stosu zmieni się na 2002H, a rejestrlicznika rozkazów otrzyma nową zawartość 18B5H, która będzieadresem następnej instrukcji do wykonania w programie. |
|||||||||||||||||||||||||||||
RETI |
RETURN FROM INTERRUPT = Wróć z przerwania maskowanego |
||||||||||||||||||||||||||
| Operacja: | Patrz: opis | ||||||||||||||||||||||||||
| Mnemonik: | RETI | ||||||||||||||||||||||||||
| Kod operacyjny |
|
||||||||||||||||||||||||||
| Opis: |
|
||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | ||||||||||||||||||||||||||
| Przykład: | Dane są: dwa urządzenia przerywające A i B połączone w
konfiguracji szeregowej - urządzenie A posiada wyższy priorytet od urządzenia B:
B generuje przerwanie, które zostaje zaakceptowane. Wyjście
zezwolenia |
RETN |
RETURN FROM NON MASKABLE INTERRUPT = Wróć z przerwania niemaskowanego |
||||||||||||||||||||||||||
| Operacja: | Patrz: opis | ||||||||||||||||||||||||||
| Mnemonik: | RETN | ||||||||||||||||||||||||||
| Kod operacyjny |
|
||||||||||||||||||||||||||
| Opis: |
Instrukcja jest używana na końcu procedury obsługi przerwania
niemaskowanego w celu przywrócenia zawartości licznikowi rozkazów PC (Program Counter) (analogicznie do instrukcji RET). Stan przerzutnika IFF2 jest kopiowany z powrotem do IFF1, aby przerwania maskowane zostały włączone natychmiast po wykonaniu instrukcji RETN, jeśli były włączone przed przyjęciem przerwania niemaskowanego.
|
||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | ||||||||||||||||||||||||||
| Przykład: | Jeśli zawartość rejestru wskaźnika stosu SP
(ang. Stack Pointer) wynosi 1000H,a licznik rozkazów PC (ang. Program Counter) zawiera adres 1A45, to gdy pojawisię sygnał przerwania niemaskowanego (NMI - Non Maskable Interrupt), mikroprocesor ignoruje kolejną instrukcję i zamiast niej wykonuje skok pod adres . Bieżąca zawartość licznika rozkazów PC, czyli 1A45H,
zostaje umieszczonana zewnętrznym stosie w komórkach pamięci o adresach
0FFFH i 0FFEH - najpierwstarszy bajt, następnie młodszy, a dalej do PC trafia adres 0066H. Pod tym adresemznajduje się początek procedury obsługi przerwań, która kończy się instrukcją RETN.W czasie wykonywania instrukcji RETN poprzednia zawartość rejestru licznikarozkazów PC jest pobierana z zewnętrznego stosu w pamięci, najpierw młodszy, później starszy bajt, co powoduje powrót zawartości wskaźnika stosu do wartości 1000H. Wykonywanie programu jest kontynuowane od punktu
przerwania, czyli odadresu 1A45H. |
RST p |
RESTART = Wywołaj szybko podprogram |
|||||||||||||||||||||||||||||||||
| Operacja: | (SP-1) ← PCH, (SP-2) ← PCL, PCH ← 0, PCL ← p, SP ← SP -2 | |||||||||||||||||||||||||||||||||
| Mnemonik: | RST | |||||||||||||||||||||||||||||||||
| Argumenty |
p
|
|||||||||||||||||||||||||||||||||
| Opis: |
Bieżąca zawartość Licznika Programu PC (ang. Program Counter) jest umieszczana na zewnętrznym stosie w pamięci i w to miejsce ładowany jest adres strony zerowej podany w argumencie p. Następnie wykonanie programu rozpoczyna się od adresu wskazywanego przez PC. Umieszczenie na stosie jest wykonywane najpierw przez zmniejszenie o 1 zawartości wskaźnika stosu SP (ang. Stack Pointer), a następnie przez przesłanie starszego bajtu rejestru PC pod adres wskazywany przez SP, ponowne zmniejszenie o 1 SP i umieszczenie pod adresem SP młodszego bajtu rejestru PC. Instrukcja RST umożliwia skok
pod jeden z ośmiu
|
|||||||||||||||||||||||||||||||||
| Zmieniane znaczniki: | Żaden | |||||||||||||||||||||||||||||||||
| Przykład: | Jeśli Licznik Programu zawiera 15B3H, to
po wykonaniu (kod wynikowy
11011111) licznik rozkazu będziezawierał 0018H
i od tego adresu będzie kontynuowanyprogram. Poprzednia zawartość licznika rozkazów znajduje się na stosie, skąd może być odtworzona rozkazem RET. |
|||||||||||||||||||||||||||||||||
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.