MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Podobne dokumenty
SYSTEM MIKROPROCESOROWY

Architektura komputerów

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Rozszerzalne kody operacji (przykład)

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Organizacja typowego mikroprocesora

Logiczny model komputera i działanie procesora. Część 1.

Technika mikroprocesorowa I Wykład 2

Architektura typu Single-Cycle

Struktura i działanie jednostki centralnej

ARCHITEKTURA PROCESORA,

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Budowa i zasada działania komputera. dr Artur Bartoszewski

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Mikroprocesor Operacje wejścia / wyjścia

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Architektura komputerów. Asembler procesorów rodziny x86

Projektowanie. Projektowanie mikroprocesorów

Architektura komputerów

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

LEKCJA TEMAT: Współczesne procesory.

organizacja procesora 8086

Architektura komputerów

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Sprzęt i architektura komputerów

Mikrokontroler ATmega32. Język symboliczny

Lista rozkazów mikrokontrolera 8051

Lista instrukcji mikroprocesora Programowanie w assemblerze

MIKROKONTROLERY I MIKROPROCESORY

architektura komputerów w 1 1

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

LEKCJA TEMAT: Zasada działania komputera.

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Model programowy komputera I: format rozkazów, lista rozkazów, tryby adresowania, cykl rozkazowy, realizacja programu w komputerze.

Mikrooperacje. Mikrooperacje arytmetyczne

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Przykładowe pytania DSP 1

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Budowa komputera Komputer computer computare

Przerwania, polling, timery - wykład 9

Metody obsługi zdarzeń

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Programowanie niskopoziomowe

Magistrala systemowa (System Bus)

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Tranzystor JFET i MOSFET zas. działania

1. Operacje logiczne A B A OR B

Zarządzanie pamięcią w systemie operacyjnym

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Architektura systemów komputerowych

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Techniki mikroprocesorowe i systemy wbudowane

Sprzęt i architektura komputerów

Układy kombinacyjne. cz.2

Programowanie Niskopoziomowe

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura komputerów

Programowanie Niskopoziomowe

Architektura komputerów

Projekt prostego procesora

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

UTK jednostki wykonawczej EU (Ex ecution Unit), jednostki steruj c ej CU,

Architektura komputerów wer. 7

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Architektura Systemów Komputerowych

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Kurs Zaawansowany S7. Spis treści. Dzień 1

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Architektura komputerów Wykład 2

Algorytm mnożenia sekwencyjnego (wariant 1)

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Lista Rozkazów: Język komputera

Programowanie mikrokontrolera 8051

CPU architektura i rejestry

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

drklaus 1 Model funkcjonalny komputera struktura, funkcje, komputer dr inż. Rafał KLAUS STRUKTURA I DZIAŁANIE KOMPUTERA

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Programowanie sterowników PLC wprowadzenie

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Transkrypt:

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje kombinacyjne i sekwencyjne. W systemach mikrokomputerowych funkcje te są głównie realizowane w sposób programowy. Podstawowe cechy programowe mikroprocesorów są wspólne i dlatego znajomość jednego systemu umożliwia szybkie poznanie innego. Do podstawowych części składowych mikroprocesorów uczestniczących w przetwarzaniu danych zalicza się: rejestr akumulatora (ewentualnie kilka rejestrów), rejestry ogólnego przeznaczenia, rejestr bitów warunków, jednostka arytmetyczno-logiczna.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Akumulator pośredniczy zazwyczaj w przekazywaniu danych 2 lub do układów We-Wy oraz otrzymuje dane powstałe w wyniku operacji arytmetyczno-logicznych. Rejestry ogólnego przeznaczenia służą do przechowywania pośrednich wyników, stałych, a także do przechowywania pośrednich adresów. Rejestr bitów warunków zawiera bieżącą informację o stanie procesora oraz o stanie wyników przeprowadzonych operacji. Jednostka arytmetyczno-logiczna umożliwia prowadzenie operacji arytmetycznych i logicznych na danych znajdujących się w akumulatorach, rejestrach ogólnego przeznaczenia oraz w pamięciach. Układy funkcjonalne procesora związane ze sterowaniem to licznik rozkazów, który zawiera adres pamięci, pod którym znajduje się następna instrukcja programu, rejestr instrukcji zawierający kod aktualnie wykonywanej instrukcji, wskażnik stosu wskazujący aktualnie dostępną lokację stosu, jednostka dekodująca i sterująca oraz wzmacniacze adresów i danych. Poszczególne typy mikroprocesorów różnią się zbiorami wykonywanych instrukcji oraz sposobami adresowania (pobierania danych i operandów). Podstawowe struktury programów tworzone z poszczególnych instrukcji są identyczne dla wszystkich procesorów niezależnie od wielkości komputera (mikrokomputera).

DZIAŁANIE MIKROPROCESORA (PRZYPOMNIENIE) Wykonywanie instrukcji Każda instrukcja w mikroprocesorze jest wykonywana w następujących fazach: pobieranie instrukcji (ang. FETCH), dekodowanie instrukcji, wykonanie instrukcji.

DZIAŁANIE MIKROPROCESORA Wykonywanie instrukcji Faza pobierania instrukcji rozpoczyna się od podania zawartości licznika rozkazów na szynę adresową (rys. 3.18a). Jednocześnie z mikroprocesora jest generowany do pamięci programu sygnał Czytaj". Po czasie równym co najmniej czasowi dostępu do pamięci od wejść adresowych, informacja 8-bitowa z pamięci pojawia się na szynie danych. Informacja ta jest wpisywana do rejestru instrukcji. W ten sposób kończy się faza pobierania instrukcji. Teraz rozpoczyna się faza dekodowania i wykonywania instrukcji. Zawartość licznika rozkazów jest dekodowana (zwykle przez układy PLA (ang. programmable logic arrays) i odpowiednie sygnały sterujące są generowane przez układ sterowania inicjuje to wykonanie instrukcji. Licznik programu zwiększa zawartość o 1 przygotowując adres następnej instrukcji.

DZIAŁANIE MIKROPROCESORA Wykonywanie instrukcji - Pobieranie instrukcji - Dekodowanie - wykonywanie

Definicje: Struktura rozkazu Długość rozkazu słowo lub kilka słów; Kod rozkazu liczba binarna charakterystyczna dla rodzaju operacji (funkcji rozkazu); Pole rozkazu pole kodu operacji + pole argumentów. Rozkaz bez argumentów: Kod operacji Rozkaz z jednym argumentem: Kod operacji Argument Rozkaz z dwoma argumentami: Kod operacji Argument 1 Argument 2

Wykonywanie instrukcji Format instrukcji 1 - bajtowej Przykład instrukcji 2 i 3 - bajtowych Instrukcja 1-bajtowa określa kod instrukcji, tzn. rodzaj operacji wykonywanej przez mikroprocesor. Instrukcja ta składa się z dwóch części. Pierwsza określa niezbędne do wykonania operacje przez poszczególne podzespoły mikroprocesora, druga natomiast adres bloku mikroprocesora (np. akumulator, rejestr itp.) Zazwyczaj instrukcje mikroprocesora są 1-, 2- lub 3-bajtowe. Pierwszy bajt instrukcji określa zawsze kod operacyjny. drugi bajt stanowi operand albo adres operandu (adres strony zerowej pamięci), Podczas wykonywania instrukcji 2- lub 3- bajtowej urządzenie sterujące wykonuje rozkazy kolejnych odwołań do pamięci w celu odczytania drugiego i trzeciego bajtu instrukcji.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Instrukcje Podstawowymi instrukcjami w różnych typach mikroprocesorów są: instrukcje przesuwania danych, instrukcje arytmetyczno-logiczne, instrukcje skoków, instrukcje systemowe. Instrukcje przesuwania danych powodują przesunięcie danych między rejestrami procesora a pamięcią, między rejestrami mikroprocesora itp. Instrukcje arytmetyczno-logiczne modyfikują dane zgodnie z sygnałami arytmetycznymi lub logicznymi: dodawania, odejmowania, mnożenia, dzielenia, zmniejszenia (zwiększenia) o stałą, operacji AND, OR, EXCLUSIVE OR, uzupełnienia, przesunięcia itp.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Rys. Instrukcja dostępu do pamięci

INSTRUKCJE Rys. Wykonywanie instrukcji dodawania Rys. Instrukcja przesuwania

INSTRUKCJE Instrukcje skoków powinny umożliwiać realizację skoków bezwarunkowych w dowolne miejsce pamięci oraz skoków warunkowych. W skład tej grupy instrukcji zalicza się instrukcje bezwarunkowego i warunkowego wywołania i powrotu z podprogramu. Do instrukcji systemowych można zaliczyć instrukcje umożliwiające: realizację operacji przerwania programowego, powrotu z obsługi przerwania, maskowania i zezwalania na przerwanie oraz czekanie na przerwanie; - ustawianie lub zerowanie wskaźników (instrukcje testujące); - realizację operacji oczekiwania; - realizację operacji We-Wy.

INSTRUKCJE Sposoby adresowania Dużą część programu zajmują zwykle operacje przesuwania danych, do których można zaliczyć: przesuwanie danych do mikrokomputera z wejść i z mikrokomputera do wyjść (operacje We-Wy); przesuwanie danych w pamięci (operacje: pamięć -> pamięć); przesuwanie danych w rejestrach (operacje: rejestr-> rejestr); przesuwanie danych między pamięcią a rejestrami (operacje: rejestr pamięć). Operacja przesuwania danych wymaga określenia miejsca położenia źródła i miejsca przeznaczenia. Do określenia położenia źródła i miejsca przeznaczenia są stosowane różne sposoby adresowania. Umożliwiają one określenie położenia operandu występującego w instrukcji.

SPOSOBY ADRESOWANIA Wyróżnia się następujące podstawowe sposoby adresowania: natychmiastowe (ang. immediate), implikowane (ang. implied), bezpośrednie (ang. direct), pośrednie (ang. indirect), indeksowe (ang. indexed), względne (ang. relative), rejestrowe pośrednie (ang. register indirect). Są również możliwe kombinacje adresowania z wymienionych powyżej, a więc: pośrednie indeksowe (ang. indexed indirect), indeksowe pośrednie (ang. indirect indexed), implikowane bezpośrednio (ang. implied immediate).

SPOSOBY ADRESOWANIA Rys.1 Adresowanie bezpośrednie Rys.2 Adresowanie pośrednie Adresowanie implikowane odnosi się do instrukcji 1-bajtowych, w których informacja o źródle lub przeznaczeniu danych znajduje się w kodzie instrukcji. Przykładowo dla mikroprocesora 8080 instrukcja ADD H oznacza dodaj do akumulatora zawartość rejestru H i wynik umieść w akumulatorze". Adresowanie bezpośrednie odnosi się do instrukcji, w których adres operandu jest zawarty w bajcie rozkazowym lub następuje bezpośrednio po nim (rys. 1). Adresowanie bezpośrednie odnosi się zwykle do instrukcji 3-bajtowych, w których dwa ostatnie bajty zawierają adres operandu umieszczonego w pamięci. W niektórych mikroprocesorach jest możliwe określenie adresu jednym bajtem, odnoszącym się do zerowej strony pamięci. Adresowanie bezpośrednie jest stosowane przez programistę wówczas, gdy zna on położenie (adres) operandu. Adresowanie pośrednie dotyczy instrukcji, w których jest zawarty adres. pośredni, pod którym znajduje się adres operandu (rys. 2). Ta metoda adresowania może być stosowana w przypadku, gdy program nie ma przyporządkowanego na stałe obszaru pamięci, w którym działa, a adres. operandu jest obliczany w trakcie programu

SPOSOBY ADRESOWANIA Adresowanie natychmiastowe dotyczy instrukcji 2- lub 3-bajtowych, w których pierwszy bajt zawiera kod instrukcji, a bajty następne zawierają. operand (rys. 4.46). Adresowanie natychmiastowe jest stosowane przez programistę do ładowania danych stałych, znanych podczas pisania programu. Adresowanie indeksowe polega na wyznaczaniu adresu operandu przez sumowanie zawartości rejestru indeksowego (mikroprocesora) i adresu zawartego wewnątrz instrukcji (rys. 4.48); jest stosowane w tych mikroprocesorach, które zawierają rejestry indeksowe. Adresowanie indeksowe jest stosowane w tym przypadku, gdy konieczny jest dostęp do danych, umieszczonych kolejno w pamięci. Założono, że należy uzyskać sekwencyjny dostęp do danych w pamięci, zawartych między adresami N1 i N2. W tym przypadku instrukcja zawiera N1, a w rejestrze indeksowym umieszcza się wartość N2 N 1+1. Tworząc pętlę, ze zmniejszającą się wartością rejestru indeksowego i warunkiem na wyzerowanie rejestru, można uzyskać sekwencyjny dostęp do danych, umieszczonych w bloku pamięci.

Przesunięcie SPOSOBY ADRESOWANIA Rys.1 Adresowanie względne Rys.2 Adresowanie rejestrowe Adresowanie względne (rys. 1) jest stosowane w programach, które mogą pracować w dowolnym miejscu pamięci. Jest stosowane przy wykonywaniu instrukcji skoku. Adres operandu jest tworzony przez dodanie zawartości licznika rozkazów do wartości przesunięcia zawartego w instrukcji. Przesunięcie może być dodatnie lub ujemne. Adresowanie rejestrowe pośrednie polega na bezpośrednim wskazaniu w instrukcji numeru rejestru mikroprocesora, w którym znajduje się operand (rys. 2).

SPOSOBY ADRESOWANIA Rys.1. Adresowanie rejestrowe pośrednie Rys.2. Adresowanie pośrednie indeksowe Adresowanie rejestrowe pośrednie stanowi modyfikację adresowania indeksowego bez adresu bazowego (rys. 1). W tym sposobie adresowania adres operandu jest zawarty w rejestrze mikroprocesora, który jest wskazany w instrukcji. Sposób ten umożliwia dostęp do operandu w różnych miejscach pamięci bez zmiany programów. Adresowanie pośrednie indeksowe adres operandu jest sumą zawartości rejestru indeksowego i adresu bazowego zawartego w pamięci i wskazanego w instrukcji (rys. 2).

SPOSOBY ADRESOWANIA Rys. 1. Adresowanie indeksowe pośrednie Adresowanie indeksowe pośrednie adres operandu jest zawarty w miejscu pamięci określonym przez sumowanie zawartości rejestru indeksowego i adresu bazowego z instrukcji (rys. 1).

Podstawowe struktury programów Programy systemów mikroprocesorowych są realizowane z kilku podstawowych struktur, a mianowicie: 1. prostego, sekwencyjnego ciągu instrukcji; 2. rozgałęzień warunkowych programu; 3. pętli programu; 4. podprogramów które mogą zawierać wcześniej wymienione struktury. Prosta sekwencja ciągu instrukcji składa się z instrukcji umieszczonych kolejno w pamięci i wykonywanych kolejno jedna po drugiej. Na rysunku 42 przedstawiono przykładową prostą sekwencję ciągu instrukcji mikroprocesora 8080. Rozgałęzienia warunkowe programu powstają w wyniku badania zawartości rejestru wskaźników i wykonania zmiany zawartości licznika rozkazów. Skokowa zmiana zawartości licznika rozkazów jest uwarunkowana określonym stanem wskaźników: zero, przeniesienia; znaku, parzystości i innych.

Podstawowe struktury programów Rys. Prosta sekwencja instrukcji: a) lista instrukcji; b) tablica zawartości pamięci; c) schemat czynnościowy. Prosta sekwencja ciągu instrukcji składa się z instrukcji umieszczonych kolejno w pamięci i wykonywanych kolejno jedna po drugiej. Na rysunku przedstawiono przykładową prostą sekwencję ciągu instrukcji mikroprocesora 8080. Rozgałęzienia warunkowe programu powstają w wyniku badania zawartości rejestru wskaźników i wykonania zmiany zawartości licznika rozkazów. Skokowa zmiana zawartości licznika rozkazów jest uwarunkowana określonym stanem wskaźników: zero, przeniesienia; znaku, parzystości i innych. W wyniku powstania określonego stanu tych wskaźników następuje wpisanie do licznika rozkazów adresu skoku i wykonanie programu według nowej sekwencji.

Podstawowe struktury programów Rozgałęzienia warunkowe są realizowane na podstawie instrukcji skoków warunkowych. Przykładowo, w mikroprocesorach korzysta się z następujących instrukcji skoków warunkowych: skocz, jeśli bit zero jest równy 1, skocz, jeśli bit przeniesień jest równy 1, skocz, jeśli wartość akumulatora jest dodatnia itp. Przykład programu napisanego w języku Assembler 8080, ilustrujący rozgałęzienie warunkowe, przedstawiono na rys. obok. Rys. Rozgałęzienie warunkowe programu: a) lista instrukcji; b) tablica zawartości pamięci; c) schemat czynnościowy.

Podstawowe struktury programów Rys. Pętla warunkowa programu: a) lista instrukcji; b) tablica zawartości pamięci; c) schemat czynnościowy Pętla warunkowa programu polega na wielokrotnym wykonywaniu pewnego fragmentu programu aż do wystąpienia zmiany badanego wskaźnika. Na rysunku przedstawiono przykład pętli programowej. Wyjście z tej pętli jest uwarunkowane wyzerowaniem akumulatora

Podstawowe struktury programów Rys. Przykłady pętli warunkowych programu: a) badanie warunku poprzedza wykonanie funkcji; b) wykonanie funkcji poprzedza badanie warunku; c) badanie warunku następuje po wykonaniu funkcji 1 a przed wykonaniem funkcji 2. Na rysunku przedstawiono trzy podstawowe typy pętli warunkowych. W przypadku gdy funkcja występuje przed badaniem warunku, należy zwrócić uwagę na prawidłowe ustawienie wartości wskaźników. Należy też skontrolować, które operacje i w jaki sposób zmieniają wskaźniki.

Podstawowe struktury programów Rys. Metoda korzystania z podprogramu. W wielu przypadkach pewne sekwencje programowe powtarzają się w programie wielokrotnie. Wielokrotny ich zapis w pamięci jest nieekonomiczny i dlatego stosuje się w głównym ciągu programu instrukcje wywoływanie ich jako określonych podprogramów. Podczas wywoływania podprogramu automatycznie jest chroniona w stosie zawartość niektórych rejestrów procesora (licznik rozkazów itp.). Pozostałą część rejestrów można chronić programowo. Na końcu każdego podprogramu jest umieszczona instrukcja lub grupa instrukcji powrotu do programu głównego, które wyprowadzają ze stosu przechowywaną zawartość licznika rozkazów i pozostałych rejestrów. Na rysunku przedstawiono przykład korzystania przez główny ciąg programu z podprogramu mnożenia. W programie tym ustawia się wstępnie w rejestrach B, C dane, na których dokonuje się operacji mnożenia. W przypadku mikroprocesora 8080 wywołanie podprogramu jest determinowane instrukcją CALL, po której zostaje wprowadzony adres wywoływanego podprogramu.

Podstawowe struktury programów (obsługa podprogramów cd) Przykładowo, wywołanie podprogramu umieszczonego pod adresem 14 5FH wymaga następującego ciągu danych: CALL CD instrukcja wywołania 5F 14 adres podprogramu Po instrukcji CALL zostaje automatycznie wysłana do stosu zawartość licznika rozkazów. Zawartość pozostałych rejestrów jest wysyłana do stosu na podstawie następujących instrukcji: PUSH B przesłanie zawartości pary rejestrów BC do stosu, PUSH D przesłanie zawartości pary rejestrów DE do stosu, PUSH H przesłanie zawartości pary rejestrów HL do stosu, PUSH PSW przesłanie zawartości pary rejestrów akumulatora i rejestru wskaźników. Powrót do programu głównego jest określony instrukcją RET (Powrót). W wyniku tej instrukcji do licznika rozkazów jest ładowana zawartość umieszczona na szczycie stosu. Jest to zazwyczaj adres instrukcji w głównym ciągu programu następujący po instrukcji CALL. Przed powrotem do głównego ciągu instrukcji należy załadować rejestry procesora wartościami, które były w nich w chwili wywołania programu obsługi. W celu prawidłowego załadowania rejestrów należy ładować rejestry w odwrotnej kolejności, niż były one uprzednio chronione.

Podstawowe struktury programów (obsługa podprogramów cd) W mikroprocesorach Intela x86 do ładowania rejestrów mikroprocesora zawartością stosu służy grupa instrukcji POP. Na rysunku przedstawiono przykład podprogramu (PP1), który chroni zawartość wszystkich rejestrów mikroprocesora na czas wykonywania żądanych operacji (właściwego podprogramu). Rys. Przykład podprogramu PP1 zawierającego grupę instrukcji ochrony zawartości rejestrów mikroprocesora i grupę instrukcji załadowania rejestrów procesora przechowywaną w stosie informacją. Przed powrotem do głównego programu podprogram PP1 ładuje rejestry mikroprocesora przechowywaną w stosie informacją. Przechowywanie zawartości rejestrów mikroprocesora w stosie w czasie wykonywania podprogramu PP1 stwarza możliwości łatwego programowania głównego programu.

Podstawowe struktury programów (obsługa podprogramów cd) Rys. Stany stosu w kolejnych fazach wykonywania i wywoływania podprogramów PP1 SP-wskaźnik stosu; PC-licznik rozkazów; PSW,A,B,C,D,E,H,L rejestry mikroprocesora. Diagram przedstawia stan stosu w poszczególnych fazach wywoływania podprogramu oraz ochronę zawartości rejestrów i powrotu do głównego programu. Z tego rysunku wynika, że nieprawidłowa kolejność wyprowadzania zawartości rejestrów ze stosu spowoduje zmianę zawartości rejestrów. Korzystanie z podprogramów może być wielopoziomowe, tzn. każdy program może korzystać z innego podprogramu. Jedynym ograniczeniem dla liczby poziomów jest pojemność stosu,