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

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

LEKCJA TEMAT: Współczesne procesory.

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Architektura komputerów

Architektura systemów komputerowych

Organizacja typowego mikroprocesora

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

organizacja procesora 8086

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

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Struktura i działanie jednostki centralnej

Mikroprocesor Operacje wejścia / wyjścia

LEKCJA TEMAT: Zasada działania komputera.

Budowa i zasada działania komputera. dr Artur Bartoszewski

ARCHITEKTURA PROCESORA,

Architektura komputerów

Programowanie niskopoziomowe

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Technika mikroprocesorowa I Wykład 2

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

Architektura systemów komputerowych. dr Artur Bartoszewski

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

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

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

Sprzęt i architektura komputerów

Mikroprocesor Intel 8088 (8086)

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

Architektura komputera

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

MIKROKONTROLERY I MIKROPROCESORY

Budowa komputera Komputer computer computare

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

Technika mikroprocesorowa I Wykład 1

Budowa Mikrokomputera

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

Architektura typu Single-Cycle

Architektura komputerów

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

BUDOWA I DZIAŁANIE MIKROPROCESORA

Przykładowe pytania DSP 1

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

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

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

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

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Architektura komputerów

SYSTEM MIKROPROCESOROWY

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Magistrala systemowa (System Bus)

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Sprzęt i architektura komputerów

Architektura komputerów. Asembler procesorów rodziny x86

Projektowanie. Projektowanie mikroprocesorów

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

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

Programowanie Niskopoziomowe

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

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

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

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury

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]

Podstawy Techniki Mikroprocesorowej

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

Architektura komputerów wer. 7

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura komputerów

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

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

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

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

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Rozszerzalne kody operacji (przykład)

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Podstawy Informatyki Układ sterujący

Wstęp Architektura... 13

WPROWADZENIE Mikrosterownik mikrokontrolery

Podstawy Informatyki

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

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Technika mikroprocesorowa I Wykład 1

architektura komputerów w 1 1

Programowanie w językach asemblera i C

4.1 Charakterystyka ogólna procesora INTEL 8080 i jego

Architektura mikroprocesorów z rdzeniem ColdFire

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Budowa systemów komputerowych

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Architektura komputerów wer. 3

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Transkrypt:

Podstawowa budowa procesora sprowadza si ę do jednostki wykonawczej EU (Execution Unit), która przetwarza informacje wykonując wszelkie operacje arytmetyczne i logiczne oraz jednostki sterują cej CU, która określa rodzaj wykonywanych operacji. W skład jednostki wykonawczej wchodz ą ALU oraz zestaw współpracujących z ni ą rejestrów.

Zadaniem centralnej jednostki przetwarzającej CPU (ang. Central Processing Unit), oprócz przetwarzania informacji jest sterowanie pracą pozostałych układów systemu. W skład CPU wchodzą mikroprocesor oraz układy pomocnicze, takie jak zegar czy sterownik magistral. Mikroprocesor jest układem przetwarzającym informację i kierującym pracą reszty układów. Zegar systemowy wytwarza przebiegi czasowe niezbędne do pracy mikroprocesora i systemu. Sterownik magistral jest układem, który pośredniczy w sterowaniu magistralami, wytwarzając na podstawie informacji otrzymanych z mikroprocesora (sygnałów statusowych i sterujących) sygnały sterujące pracą układów pamięci i układów wejścia/wyjścia. Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Rejestry procesora dostępne programowo

Rejestry procesora dostępne programowo UTK Akumulator Akumulatorem nazywamy rejestr, który zawiera jeden z operandów (argumentów) wykonywanej operacji i do którego jest ładowany wynik wykonywanej operacji. Definicja akumulatora pojawiła się po raz pierwszy przy omawianiu jednostki arytmetyczno-logicznej. W starszych procesorach definicja ta obowiązywała ściśle, w nowszych notuje się liczne odstępstwa mające na celu przyspieszenie realizacji programu. Przykładowo w procesorach rodziny 80x86 wynik dodawania może być umieszczany także w rejestrze innym niż akumulator.

Rejestry procesora dostępne programowo UTK Rejestr flagowy Rejestrem flagowym nazywamy rejestr zawierający dodatkowe cechy wyniku wykonywanej operacji potrzebne do podjęcia decyzji o dalszym sposobie przetwarzania informacji. Cechami tymi mogą być przykładowo znak wyniku, wystąpienie przekroczenia zakresu czy parzystość (na przykład parzysta bądź nieparzysta liczba jedynek w wyniku). Wystąpienie określonego przypadku, na przykład wyniku dodatniego bądź ujemnego, sygnalizowane jest ustawieniem lub wyzerowaniem określonego bitu w rejestrze flagowym. Lista najczęściej używanych flag: CY lub CF (ang. curry flag) flaga przeniesienia lub pożyczki. Ustawiana (czyli przyjmuje wartość 1), gdy rezultat operacji przekracza zakres długości słowa, w którym zapisywany jest wynik. Istotna dla operacji arytmetycznych na liczbach bez znaku. Z lub ZF (ang. zero flag) flaga sygnalizująca, że wynikiem ostatnio wykonywanej operacji jest 0. S lub SF (ang. sign flag) flaga znaku. Ustawiana, gdy najstarszy bit wyniku wykonywanej operacji jest równy 1. Zasadniczo flaga ta ma znaczenie dla operacji arytmetycznych interpretowanych jako liczby ze znakiem (w kodzie U2). P lub PF (ang. parity flag) flaga parzystości. Sygnalizuje parzystą lub nieparzystą liczbę jedynek w wyniku (np. w jego najmłodszym bajcie). Dokładna reguła ustawiania tej flagi zależy od typu procesora. OV lub OF (ang. overflow flag) flaga przepełnienia. Sygnalizuje przekroczenie zakresu dla operacji arytmetycznych, gdy są interpretowane jako operacje na liczbach ze znakiem zapisanych w kodzie U2. AC lub AF (ang. auxiliary carry flag) flaga przeniesienia pomocniczego lub połówkowego. Ustawiana, gdy występuje przeniesienie lub pożyczka z najstarszego bitu pierwszej tetrady wyniku. Istotna przy interpretowaniu wyniku operacji arytmetycznych w kodzie prostym BCD.

Rejestry procesora dostępne programowo UTK Licznik rozkazów Licznik rozkazów jest jednym z istotniejszych rejestrów umożliwiających zrozumienie działania mikroprocesora i systemu mikroprocesorowego. W nowszych mikroprocesorach nosi on nazwę IP wskaźnika instrukcji (ang. Instruction Pointer), co jest chyba trafniejsze. Definicja tego rejestru jest następująca: Licznikiem rozkazów (wskaźnikiem instrukcji) nazywamy rejestr mikroprocesora zawierający adres komórki pamięci, w której przechowywany jest kod rozkazu przeznaczonego do wykonania jako następny. Z definicji tej wynika, że po wczytaniu kolejnego kodu rozkazu zawartość licznika rozkazów powinna zostać zmieniona tak, aby wskazywał kolejny rozkaz przeznaczony do wczytania do mikroprocesora. Ponieważ w przeważającej części program jest wykonywany kolejno, instrukcja po instrukcji (chociaż są od tego odstępstwa omawiamy je w podrozdziale poświęconym liście rozkazów), to pobranie kodu rozkazu z kolejnej komórki pamięci powoduje zwiększenie zawartości licznika rozkazów o 1. W pewnych przypadkach zawartość licznika rozkazów jest zmieniana w wyniku wykonania określonego rozkazu (dlatego jest rejestrem dostępnym programowo). O tego typu rozkazach będzie mowa przy omawianiu listy rozkazów.

Rejestry procesora dostępne programowo UTK Wskaźnik stosu Przed podaniem definicji wskaźnika stosu musimy najpierw wyjaśnić pojęcie stosu. Stosem nazywamy wyróżniony obszar pamięci używany według następujących reguł: 1.Informacje zapisywane są na stos do kolejnych komórek (pod kolejnymi adresami), przy czym żadnego adresu nie wolno pominąć. 2. Odczytujemy informacje w kolejności odwrotnej do ich zapisu. 3. Informacje odczytujemy z ostatnio zapełnionej komórki, natomiast zapisujemy do pierwszej wolnej, przy czym komórkę odczytaną traktujemy jako wolną. Stos jest więc rodzajem pamięci (czy też buforem) oznaczanej przez LIFO (ang. last In first out ostatni wchodzi, pierwszy wychodzi). Pamięć taką można porównać do stosu talerzy (stąd zresztą nazwa). Talerze dokładamy do stosu, kładąc je na wierzchu, a zabieramy, zdejmując je także z wierzchu, gdyż w przypadku zmiany kolejności grozi nam katastrofa, co odnosi się także do stosu komputerowego. W przypadku pojęcia stosu w pamięci, zgodnie z regułą 3, konieczna jest znajomość adresu ostatniej zapełnionej komórki stosu, przy czym komórkę odczytaną uważamy za pustą (zdjęliśmy talerz). Komórka ta zwana jest wierzchołkiem stosu. Wskaźnikiem stosu nazywamy rejestr zawierający adres ostatniej zapełnionej komórki stosu (wierzchołka stosu).

Rejestry procesora dostępne programowo UTK Rejestry robocze (uniwersalne) Oprócz wymienionych rejestrów wykonujących ściśle określone zadania każdy mikroprocesor dysponuje pewnym zestawem rejestrów zwanych rejestrami roboczymi lub rejestrami ogólnego przeznaczenia (ang. General Purpose Registers GPR). Przykładowo rejestry takie mogą przechowywać argumenty wykonywanych operacji, wyniki czy też adresy tychże w pamięci. Rejestry te mogą pełnić pewne dodatkowe funkcje przewidziane przez projektanta mikroprocesora, na przykład liczników wykonywanych pętli. Przykładem rejestrów roboczych w mikroprocesorze 8080 są: B, C, D, E, H, L. Każdy z nich może zawierać dane do wykonywanych operacji. Ponadto para rejestrów H, L może zawierać adres komórki pamięci w przypadku używania tak zwanego trybu adresowania rejestrowego.

Cykl rozkazowy Realizując program, system mikroprocesorowy wykonuje pewne powtarzające się czynności, polegające na cyklicznym pobieraniu kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania mikroprocesora, a następnie realizacji rozkazu, którego kod został pobrany. W cyklu możemy wyróżnić dwa etapy zwane fazą pobrania (ang. fetch) i fazą wykonania (ang. execution).

Cykl rozkazowy cd. Faza pobrania polega na pobraniu kodu rozkazu z komórki pamięci o adresie przechowywanym w liczniku rozkazów, a następnie na umieszczeniu tego kodu w rejestrze rozkazów IR znajdującym się w układzie sterowania mikroprocesora. Kod rozkazu przesyłany jest do mikroprocesora magistralą danych. Następnie zawartość licznika rozkazów jest modyfikowana tak, aby wskazywał on na kolejny kod rozkazu przeznaczony do pobrania. Po zakończeniu fazy pobrania następuje faza wykonania. Polega na zdekodowaniu kodu rozkazu znajdującego się w rejestrze IR, czyli stwierdzeniu, jaki to rozkaz. Po zdekodowaniu kodu rozkazu układ sterowania wytwarza wewnętrzne i/lub zewnętrzne sygnały sterujące realizujące dany rozkaz (patrz schemat blokowy mikroprocesora i systemu mikroprocesorowego).

Cykl rozkazowy cd. Kolejne etapy realizacji fazy pobrania i fazy wykonania rozkazu można przedstawić następująco: I) Faza pobrania 1. Adresowanie podanie zawartości licznika rozkazów do magistrali adresowej: AB (PC). 2. Wczytanie zawartości zaadresowanej komórki pamięci do rejestru rozkazów mikroprocesora: IR M(PC). 3. Zwiększenie zawartości licznika rozkazów: (PC) (PC) + 1. II) Faza wykonania 4. Zdekodowanie kodu rozkazu i wytworzenie sygnałów sterujących realizujących dany rozkaz.

Cykl rozkazowy cd. Oczywiście w przypadku kodów rozkazów zajmujących kilka komórek pamięci etapy 1 3 muszą być kilkakrotnie powtórzone, zanim przejdziemy do ostatecznego wykonania rozkazu. Realizacja wszystkich wymienionych etapów wykonania rozkazu tworzy pewien cykl, zwany od nazwiska jego twórcy cyklem von Neumana. Linia przerywana oznacza wykonanie kolejnych cykli pobrania dla kodów rozkazów wielobajtowych(wielokomórkowych). Jak pokazuje poprzedni rysunek, w cyklu rozkazowym następują po sobie na przemian faza pobrania i faza wykonania. W celu przyspieszenia pracy systemu stosuje się modyfikację tego cyklu zwaną prefetchingiem, czyli wstępnym pobieraniem instrukcji.

Lista rozkazów, tryby adresowania Komputer, będący systemem mikroprocesorowym, przetwarza informację zgodnie z wykonywanym programem. Program jest ciągiem instrukcji realizujących określony algorytm działania systemu. W pamięci systemu mikroprocesorowego program przechowywany jest w postaci binarnych kodów instrukcji maszynowych (rozkazowi właściwych dla danego mikroprocesora. Poniżej podaję definicje zarówno rozkazu, jak i listy rozkazów. Następnie omówimy podział listy rozkazów, pojęcie formatu rozkazu, podstawowe tryby adresowania oraz sposób prezentacji rozkazu. Na koniec podam przykłady kilku rozkazów ilustrujących poszczególne grupy rozkazów.

Rozkazem (instrukcją maszynową) nazywamy najprostszą operację, której wykonania programista może zażądać od procesora. Sposób realizacji rozkazu nie jest istotny dla użytkownika systemu i z reguły nie jest znany. Nawet jeżeli wiemy, że dany rozkaz jest realizowany jako ciąg prostszych operacji, zwanych mikrooperacjami czy mikrorozkazami, i tak nie mamy żadnego wpływu na sposób realizacji rozkazu. Został on po prostu wyznaczony przez projektanta mikroprocesora. Rozkazy są więc najprostszymi operacjami, których możemy używać podczas tworzenia programów. Tworzenie programów bezpośrednio za pomocą rozkazów jest nazywane programowaniem w asemblerze. To sposób pisania programów bardzo efektywnych, jest jednak dość żmudny i nie nadaje się do tworzenia bardzo rozbudowanych programów. W takich wypadkach używamy języków wysokiego poziomu (np. Pascala, C++ itp.). W językach tych jednej instrukcji odpowiada wiele instrukcji maszynowych, czyli rozkazów. Tłumaczeniem instrukcji języków wyższych poziomów na instrukcje maszynowe zajmują się specjalne programy zwane kompilatorami. Zestaw instrukcji, ich liczba i rodzaj zależą od konkretnego procesora.

Listą rozkazów nazywamy zestaw wszystkich instrukcji maszynowych (rozkazów), jakie potrafi wykonać dany procesor. Rozkazy tworzące listę rozkazów możemy podzielić na kilka podstawowych grup w zależności od ich przeznaczenia. Rozróżniamy: 1. rozkazy przesłań, 2. rozkazy arytmetyczne i logiczne, 3. rozkazy sterujące (skoki, wywołania podprogramów, pętle itp.), 4. inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w trybie chronionym). Ad 1. Rozkazy przesłań są najczęściej wykonywanymi rozkazami. Nie zmieniają wartości informacji, natomiast przenoszą ją z miejsca na miejsce. Ich duża częstotliwość wykonywania jest dość oczywista. Jeśli chcemy wykonać jakąś operację, musimy zwykle pobrać jej argumenty, a po jej wykonaniu zapisać wynik. Wśród rozkazów przesłań wyróżnia się czasami operacje na stosie (będące jednak też formą przesłań) czy instrukcje wejścia/wyjścia, przesyłające lub odczytujące dane z portów wejścia/wyjścia.

Listą rozkazów Ad 2. Rozkazy arytmetyczne i logiczne służą do przetwarzania informacji, czyli w wyniku ich wykonania jest ona zmieniana. Do rozkazów tych prócz wykonujących podstawowe działania arytmetyczne czy logiczne należą na przykład rozkazy cyklicznego przesuwania informacji, rozkazy porównań itp. Ad 3. Rozkazy sterujące stanowią grupę rozkazów pozwalającą zmieniać kolejność wykonywania instrukcji programu. Należą do nich przykładowo rozkazy skoków bezwarunkowych i warunkowych (warunkiem w takim skoku jest wartość określonej flagi, inaczej znacznika), bezwarunkowe i warunkowe wywołania podprogramów czy też instrukcje pętli (czyli instrukcje powodujące kilkakrotne powtórzenie pewnego ciągu instrukcji). Ad 4. Pozostałe instrukcje są zwykle charakterystyczne dla danego typu procesora. Przykładowo dla rodziny 80x86 mogą to być rozkazy sterujące współpracą z koprocesorem czy też instrukcje tak zwanego trybu chronionego.

Format rozkazu i tryby adresowania Rozkazy, jak każdy inny rodzaj informacji w systemie mikroprocesorowym, są przechowywane w postaci kodów binarnych. Kod rozkazu musi zawierać informacje niezbędne do jego poprawnej realizacji. Informacje te muszą być rozmieszczone w rozkazie w określony sposób. Formatem rozkazu nazywamy sposób rozmieszczenia informacji w kodzie rozkazu. Kod rozkazu: 1. musi zawierać określenie rodzaju wykonywanej operacji, czyli tak zwany kod operacji. Kod operacji musi być określony w początkowej części (pierwszym bajcie lub bajtach) kodu rozkazu w celu określenia, w jaki sposób ma przebiegać dalsza realizacja rozkazu przez mikroprocesor; 2. może zawierać operandy i/lub adresy operandów wykonywanych operacji (dotyczy to także adresów wyników). Oczywiście w przypadku rozkazów wymagających argumentów informacja ta musi być zawarta w rozkazie. Trybem adresowania nazywamy sposób określenia miejsca przechowywania argumentów rozkazu. Argumenty rozkazu (przypominam, że może to dotyczyć zarówno danych, jak i w pewnych przypadkach wyników) mogą być przechowywane w rejestrach, w pamięci lub w kodzie rozkazu.

Format rozkazu i tryby adresowania 1. Adresowanie natychmiastowe Przy adresowaniu natychmiastowym argument rozkazu zawarty jest w kodzie rozkazu. Widzimy więc, że adresowanie natychmiastowe w zasadzie nie jest adresowaniem w zwykłym sensie. Argument jest umieszczony w kodzie rozkazu, z czego między innymi wynika fakt, że musi być znany w momencie pisania programu. 2. Adresowanie bezpośrednie Przy adresowaniu bezpośrednim kod rozkazu zawiera adres komórki pamięci, w której przechowywany jest rozkaz. Konsekwencją takiego określenia adresowania bezpośredniego jest to, że jeśli używamy tego adresowania, w momencie pisania programu musimy znać (lub inaczej zarezerwować) adres przechowywania argumentu. 3. Adresowanie rejestrowe Przy adresowaniu rejestrowym w kodzie rozkazu określony jest rejestr, w którym przechowywany jest argument. Zaletami użycia tego trybu adresowania są krótkie kody rozkazów oraz szybkie ich wykonywanie.

Format rozkazu i tryby adresowania 4. Adresowanie pośrednie Adresowanie pośrednie, zwane też adresowaniem rejestrowym pośrednim, umożliwia modyfikację położenia argumentu w pamięci w trakcie wykonywania programu. Inaczej mówiąc, adres przechowywania tego argumentu może zostać wyliczony przez program, co jest bardzo użyteczną własnością. Ponadto kody takich rozkazów są krótkie. W trybie adresowania pośredniego kod rozkazu zawiera określenie rejestru bądź rejestrów, w których znajduje się adres komórki pamięci zawierającej argument. 5. Adresowanie indeksowe z przemieszczeniem W procesorach rodziny Intel 80x86 istnieje 12 trybów adresowania. Część z nich jest kombinacją dwóch lub trzech trybów podstawowych. Nie będziemy opisywać wszystkich tych trybów, a osoby zainteresowane odsyłamy do literatury. W tym podpunkcie opisujemy ostatni z trybów adresowania, który można zaliczyć do podstawowych. W trybie adresowania indeksowego z przemieszczeniem adres argumentu przechowywanego w pamięci obliczany jest jako suma zawartości rejestru określonego w kodzie rozkazu i wartości umieszczonej w kodzie rozkazu, zwanej przemieszczeniem.

Sposób prezentowania rozkazu Poprawne i efektywne użycie rozkazów wymaga znajomości określonego zestawu informacji na temat rozkazu. Lista rozkazów procesora powinna zawierać następujące informacje: 1. Oznaczenie symboliczne rozkazu. Rozkazy przechowywane są w pamięci komputera w postaci binarnej. Jednak zapis binarny rozkazu, nawet w formie heksadecymalnej, byłby niewygodny, nieczytelny i nieużyteczny. Dlatego też np. podczas pisania programów w asemblerze, a ogólnie tam, gdzie prezentuje się go człowiekowi (na przykład w programach typu debugger), używa się oznaczenia symbolicznego rozkazu. Składa się ono z mnemonika i pola argumentów. Rozpatrzmy przykładowy rozkaz o symbolicznym oznaczeniu: JMP SHORT etykieta Rysunek przedstawia przykładowy symbol konkretnej wersji tego rozkazu mnemonik i pole argumentu. Mnemonik jest skrótem, który powinien sugerować rodzaj operacji wykonywanej przez rozkaz.

Opis działania rozkazu Opis działania rozkazu możemy podać zarówno w formie słownej, jak i symbolicznej. Opis słowny byłby następujący: wykonaj skok i pobierz kod rozkazu z komórki pamięci o adresie równym etykieta (u nas NEXT = 100). Argumentem rozkazu nie jest jednak wartość adresu, lecz długość skoku (interpretowana w kodzie U2). Słowo SHORT oznacza, że chodzi o tak zwany skok bliski, czyli w zakresie od 127 bajtów w górę do 128 bajtów w dół (wartość takiego skoku można zapisać w postaci jednego bajtu). W naszym przykładzie zostanie wykonany skok do komórki oddalonej o 3 bajty od kodu rozkazu JMP. Argumentem rozkazu jest liczba komórek, o którą mamy skoczyć, więc symbolicznie wykonanie tego rozkazu możemy zapisać: (PC) (PC) + przemieszczenie co oznacza: w liczniku rozkazów umieść jego zawartość zwiększoną o przemieszczenie, gdzie przemieszczenie (dodatnie bądź ujemne) jest liczbą komórek, o które mamy się przesunąć.

Format rozkazu Jak pamiętamy, jest to sposób rozmieszczenia informacji w kodzie rozkazu. W przypadku rozkazu JMP SHORT etykieta jest następujący: W formacie rozkazu oprócz sposobu rozmieszczenia informacji w kodzie rozkazu zawarta jest także informacja o jego długości. W naszym przypadku mamy do czynienia z rozkazem dwu bajtowym. Długość rozkazów jest istotna wówczas, gdy chcemy utworzyć program zajmujący możliwie mało miejsca w pamięci. Ustawiane flagi. Kolejną istotną informacją o rozkazie jest, czy i ewentualnie jakie flagi są ustawiane przy wykonaniu danego rozkazu. Reguły ustawiania poszczególnych flag podane są zwykle przy opisie rejestru flagowego. W opisie rozkazu podaje się, które flagi są ustawiane. Dla naszego przykładowego rozkazu opis brzmiałby: żadne flagi nie są ustawiane. Szybkość wykonania rozkazu. Informacja ta jest istotna w przypadku optymalizacji programu pod kątem szybkości jego działania. Szybkość wykonywania rozkazów jest zwykle podawana jako liczba taktów zegara procesora potrzebnych do wykonania danego rozkazu. Przykładowo rozkaz JMP SHORT jest wykonywany przez procesor 80386 w 7 taktach (w zależności od szybkości zegara oznacza to różny czas wykonania).

Sposób prezentowania rozkazu Poprawne i efektywne użycie rozkazów wymaga znajomości określonego zestawu informacji na temat rozkazu. Lista rozkazów procesora powinna zawierać następujące informacje: 1. Oznaczenie symboliczne rozkazu. Rozkazy przechowywane są w pamięci komputera w postaci binarnej. Jednak zapis binarny rozkazu, nawet w formie heksadecymalnej, byłby niewygodny, nieczytelny i nieużyteczny. Dlatego też np. podczas pisania programów w asemblerze, a ogólnie tam, gdzie prezentuje się go człowiekowi (na przykład w programach typu debugger), używa się oznaczenia symbolicznego rozkazu. Składa się ono z mnemonika i pola argumentów. Rozpatrzmy przykładowy rozkaz o symbolicznym oznaczeniu: JMP SHORT etykieta Rysunek przedstawia przykładowy symbol konkretnej wersji tego rozkazu mnemonik i pole argumentu. Mnemonik jest skrótem, który powinien sugerować rodzaj operacji wykonywanej przez rozkaz.

Magistrale i sygnały sterujące mikroprocesora Zadania poszczególnych sygnałów są następujące: RESET restart mikroprocesora (wpis do rejestrów procesora wartości początkowych i rozpoczęcie nowego cyklu rozkazowego). CLK (clock) przebieg taktujący (zegar) pracę procesora. RDY# (ready) sygnał gotowości układów współpracujących z procesorem (zwykle pamięci). # oznacza, że sygnałem aktywnym (gotowości) jest 0 (poziom niski). M/IO# (memory/input/output) sygnał oznaczający operację dotyczącą pamięci (1) lub układów wejścia/wyjścia (0). D/C# (data/code) sygnał oznaczający obecność na magistrali danych danej (1) lub kodu rozkazu (0). W/R# (write/read) sygnał oznaczający operację zapisu (1) lub odczytu (0). HOLD sygnał żądania przejścia procesora w stan zawieszenia (czyli przełączenia wejść i wyjść magistral w stan wysokiej impedancji). HLDA (hold acknowledge) sygnał potwierdzenia przejścia procesora w stan zawieszenia. INTR (interrupt request) sygnał żądania (zgłoszenia) przerwania maskowanego. NMI (non-maskable interrupt) sygnał zgłoszenia przerwania niemaskowanego.