Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Adres komórki z której pobierany będzie następny rozkaz przechowywany jest w specjalnym rejestrze procesora – liczniku rozkazów. Schemat blokowy mikrokomputera ...
Typologia: Schematy
1 / 16
Literatura:
cechą jest możliwość programowania – funkcje, które realizuje zależą nie tylko od rozwiązań sprzętowych lecz głównie od programu, który wykonuje.
Komputery realizują następujące funkcje:
Przetwarzanie danych (Data processing) Przechowywanie danych (Data storage) Przemieszczanie i duplikowanie danych (Data movement) Sterowanie (Control)
reprezentacja danych, mechanizm wejścia-wyjścia, tryby adresowania. np. Czy dostępna jest instrukcja mnożenia?
i ich połączeń Sygnały sterowania, interfejsy, technologia pamięci. np. Czy występuje dedykowana jednostka sprzętowa odpowiedzialna za operacje mnożenia, czy jest ona realizowana poprzez wielokrotne dodawanie?
komputera w postaci ciągu instrukcji.
Ze względu na sposób organizacji pamięci i wykonywania programu:
architektura von Neumanna – zarówno dane, jak i kod programu przechowywany jest w tym samym obszarze pamięci; architektura harwardzka – rozkazy i dane przechowywane są w odseparowanych obszarach pamięci; architektura mieszana – połączenie dwóch powyższych typów: obszary pamięci dla rozkazów i danych są odseparowane, jednak wykorzystują wspólne magistrale.
Instrukcje tworzące program są przechowywane w pamięci w taki sam sposób jak dane (komputer z zapamiętanym programem) – koncepcja Johna von Neumanna Pamięć składa się z pewnej liczby ponumerowanych komórek, dostęp do pamięci następuje poprzez podanie przez procesor numeru komórki – jej adresu. Komputer będzie pobierał kolejne instrukcje programu z kolejnych komórek pamięci (wykonywanie sekwencyjne programu) z wyjątkiem trzech sytuacji:
Organizacja typowego mikroprocesora
Architektura procesora 8086
Wszystkie mikroprocesory zawierają podobne elementy: układ sterowania i synchronizacji, który kontroluje pracę procesora i wytwarza sygnały potrzebne do sterowania poszczególnymi elementami komputera arytmometr, czyli układ, który wykonuje operacje arytmetyczne i logiczne rejestry, tj. układy pamięci wewnętrzne szyny łączące elementy procesora
Podstawowymi rejestrami, które znajdują się w każdym mikroprocesorze, są: licznik rozkazów - zawiera on adres następnego rozkazu do wykonania. Podczas cyklu rozkazowego automatycznie zwiększany o długość bieżącego rozkazu, chyba że ostatnim wykonywanym rozkazem był efektywny skok, wywołano podprogram lub przyjęto przerwanie. rejestr rozkazów - zawiera kod aktualnie wykonywanego rozkazu akumulator , jest używany w czasie wykonywania rozkazów arytmetycznych, logicznych, I/O i in.; niektóre procesory mają kilka takich rejestrów rejestr znaczników - zawiera dodatkowe informacje o wyniku operacji arytmetyczno- logicznych, np. "wynik równy zeru"
W procesorze układ sterowania działa cyklicznie, wykonując cykl rozkazowy. Cykl rozkazowy składa się z dwóch faz Fazy pobrania rozkazów. Fazy wykonania rozkazów.
W fazie pobrania rozkazu na magistralę adresową wysyłana jest zawartość licznika rozkazów. Licznik rozkazów zawiera adres komórki pamięci zawierającej rozkaz, który ma być w danej chwili wykonany. Po odczytaniu z pamięci rozkaz wędruje magistralą danych do procesora i wpisuje się do rejestru rozkazów. Na końcu fazy pobrania rozkazów układ sterowania zwiększa zawartość licznika o liczbę pobranych bajtów.
W fazie wykonania rozkazów układ sterowania odczytuje z rejestru rozkazów rozkaz, dokonuje jego dekodowania i w zależności od rodzajów rozkazów generuje odpowiednie sygnały sterujące. We współczesnych procesorach oba te cykle wykonywane są jednocześnie. W czasie wykonywania rozkazu pobierany jest już następny. Zbiór wszystkich możliwych do wykonania przez procesor rozkazów nazywamy listą rozkazów. Rozkazy te podzielone są na cztery grupy: służące do przesyłania informacji arytmetyczne i logiczne sterujące wykonaniem programu (rozkazy skoków) wejścia-wyjścia Na cykl rozkazowy składają się jeden lub kilka cykli maszynowych.
Cykl maszynowy , to cykl, w którym następuje przesłanie danych (odczyt lub zapis) między jednostką centralną a pamięciową lub układem wejścia – wyjścia, w zależności od rodzaju przesłania rozróżnia się cykl maszynowy: pobrania kodu operacji, odczytu i zapisu pamięci, odczytu i zapisu wejścia - wyjścia, przyjęcia przerwania itd. W każdym cyklu maszynowym następuje wysłanie:
Struktura kodu rozkazu dwuargumentowego
Rozkazy mikroprocesora 8086 są wielobajtowe. Liczba bajtów każdego rozkazu zależy od jego rodzaju i może wynosić od jednego do sześciu.
7 6 5 4 3 2 1 0 kod operacji D W MOD REG R/M
Pierwszy bajt zawiera sześciobitowy kod operacji oraz dwa bity (kierunku i szerokości). Bit D określa kierunek transmisji ( 0 - wynik operacji jest przesyłany z rejestru do pamięci, 1 - z pamięci do rejestru). W zależności od wartości tego bitu w rozkazie rozróżniane są operandy źródłowe i operandy przeznaczenia. Bit W określa szerokość operandu danego rozkazu (0 - operacje bajtowe, 1 - operacje na słowie 16-bitowym).
Jeżeli rozkaz jest wielobajtowy, to drugi bajt rozkazu określa sposób adresowania argumentów. Zawiera on trzy grupy bitów
dwubitowa grupa MOD określa tryb adresowania trzybitowa grupa REG określa numer rejestru, w którym znajduje się operand trzybitowa grupa R/M określa sposób wyznaczenia miejsca operandu
Jeżeli operandy znajdują się w rejestrach mikroprocesora ( MOD = 11), to pola REG i R/M stanowią ich numery (odpowiednio pierwszego i drugiego operandu)
REG R/M
rejestr segmentu : CS, DS, SS, ES
przesunięcie : IP, SP, ARG ( BX, BP, SI, DI )
początki segmentów co 16 bajtów
max długość segmentu : 64 kB
max wielkość pamięci : 1 MB
Wykorzystanie rejestrów segmentów :
CS segment rozkazów, przesunięcie z IP DS segment danych, przesunięcie z ARG SS segment stosu, przesunięcie z ARG ( SP ) ES segment danych dodatkowych, przesunięcie z ARG 16 - bitowy adres segmentu (co 16 bajtów)
20 - bitowy adres pamięci 00000H
0FFFFFH
Segmenty mogą mieć różne rozmiary i mogą się zakładać
Obszar zajęty przez system operacyjny
Segment kodu
Segment kodu
Segment danych
Segment danych
Segment stosu
CS
DS
ES
SS
IP
SI
DI
SP
19 0 15 0 3 0
19 16 15 0
19 0
Pozwala ona przesłać do miejsca przeznaczenia (rejestru, komórki pamięci) zawartość ze źródła (rejestru, komórki pamięci lub wartość liczbowa). Istnieją przy tym pewne ograniczenia, np. nie można wpisać bezpośrednio wartości liczbowej do rejestru segmentowego, dlatego używamy dwóch instrukcji: mov ax, data mov ds, ax
Nie można wpisać wartości do licznika rozkazów (rejestru CS:IP) – służą do tego rozkazy skoku lub wywołania podprogramu. Przykłady wykorzystania rozkazu mov dst, src mov AX, 0B00h mov DS, AX mov CL, ‘A’ mov CH, 01101001b mov BX, 15Eh mov [BX], CX
Trybem adresowania nazywamy sposób wyznaczania adresu operandu, którego to mianem określamy argumenty i wyniki operacji. Adres operandu obliczany jest zgodnie z równaniem
gdzie:
EA - adres efektywny BR - rejestr bazowy IR - rejestr indeksowy p - przemieszczenie Adres efektywny EA jest adresem logicznym "widzianym" przez program. Na podstawie EA układy segmentacji obliczają adres rzeczywisty w pamięci operacyjnej. Rejestrem bazowym może być rejestr BP lub BX , a rejestrem indeksowym może być rejestr SI lub DI. Przemieszczenie jest zawarte w rozkazie i może mieć długość ośmiu lub szesnastu bitów.
Mikroprocesor 8086 realizuje następujące tryby adresowania:
natychmiastowe rejestrowe bezpośrednie pośrednie bazowe indeksowe indeksowo-bazowe adresowanie względne
Instrukcja LEA jest bardziej elastyczna niż operator OFFSET gdyż pozwala pobrać adres zmiennej z indeksem np. lea BX, tablica[4]
Adresowanie bazowe
Adresowanie bazowe jest to rodzaj adresowania pośredniego, gdzie rozkaz wskazuje na jeden z rejestrów bazowych BX lub BP i może zawierać 8- lub 16-bitową wartość stanowiącą lokalne przemieszczenie. Adresem efektywnym jest suma zawartości rejestru bazowego i lokalnego przemieszczenia. Np. mov AX, [BP+2].
Adresowanie indeksowe
Adresowanie indeksowe jest rodzajem adresowania pośredniego, gdzie adres efektywny jest sumą zawartości rejestru indeksowego SI lub DI i lokalnego przemieszczenia. Np. mov AX, [SI+3].
Adresowanie bazowo-indeksowe
W adresowaniu bazowo-indeksowym, adres efektywny jest sumą zawartości jednego z rejestrów bazowych, jednego z rejestrów indeksowych i lokalnego przemieszczenia. Np. mov AX, [SI+BP+4].
Adresowanie względne
Jest stosowane w skokach – służy do przeniesienia sterowania o pewną liczbę pozycji względem
aktualnie wykonywanej instrukcji.
Rozkazy operujące na ciągach słów
Rozkazy operujące na ciągach słów posługują się rejestrami indeksowymi. Rejestry SI i DI zawierają adresy efektywne pierwszego słowa odpowiednio w ciągu źródłowym i wynikowym. Po każdej transmisji rejestry indeksowe są automatycznie inkrementowane lub dekrementowane w zależności od ustawienia bitu DF w rejestrze znaczników.
Rozkazy operujące na rejestrach WE/WY
Rozkazy operujące na rejestrach WE/WY ( in oraz out ) zawierają adres WE/WY (adres natychmiastowy) lub posługują się zawartością rejestru DX (adresowanie pośrednie).