190
7. Wybrane techniki programowania
Offsc!
Stos
SP, nowe BP
+ 2 +4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + 22 + 24 + 26
BP (poprzednia wartość)
BAJT
DI
SI
CX
BX
IP
CS
OFFSET WYNIK
LENGHT TABLICA
OFFSET TABLICA
SLOWO_2 (HIGH) SLOWOJ2 (IX)W)
SŁOWO
Stan rejestrów w chwili wywołania
Adres
powrotu
Parametry
Rys. 7.4. Zawartość stosu
Przerwanie (ang. intemipt) jest zewnętrznym lub wewnętrznym zdarzeniem, które przerywa realizowany program i przekazuje sterowanie do specjalnego podprogramu obsługi przerwania. Przerwania zewnętrzne umożliwiają optymalną obsługę urządzeń zewnętrznych takich jak: zegar, klawiatura, układy standardowych i niestandardowych wejść-wyjść itp., bez konieczności ciągłego, sekwencyjnego przeglądania (ang.polling)
Procesor 8086/8088
Rozkaz INI' n
Rozkaz INTO
Układ sterowania systemem przerwań
Błąd przy dzieleniu
Praca krokowa
INTR
8259A |
IR0 IR1 |
IR7 |
Zewnętrzne
urządzenia
przerywające
Magistrala danych
Rys. 75. Źródła przerwań
powered by
7.2. Przerwania sprzętowe i programowe
stanu odpowiednich wejść. Procesor może generować także przerwania wewnętrzne, np. po wystąpieniu błędu przy realizacji rozkazu dzielenia. Możliwe źródła przerwań dla mikroprocesorów 8086/8088 przedstawiono na rys. 7.5. Spotykane w systemach mikrokomputerowych struktury systemu przerwań (zewnętrznych) są opisane np. w literaturze poz. [8],[10],[12]. Struktury różnią się między sobą głównie sposobem identyfikowania źródła przerwania i wyszukania adresu obsługi oraz sposobem określania priorytetu obsługi. W mikroprocesorach 8086/8088 występują dwa zewnętrzne wejścia przerywające.
NMI (przerwanie niemaskowalne) mające najwyższy priorytet i zawsze przerywające program, wykorzystywane zazwyczaj do meldowania o różnych sytuacjach wymagających natychmiastowej obsługi, np. zanik napięcia zasilania lub błąd parzystości pamięci operacyjnej.
INTR (przerwanie maskowalne - zob. znacznik IF), do którego standardowo przyłącza się sterownik przerwań 8259A (ang. programmable interrupt controler ) obsługujący do ośmiu zewnętrznych źródeł przerwań z urządzeń. W przypadku większej liczby tych urządzeń, jest możliwe kaskadowe łączenie układu 8259A. Podstawowym zadaniem sterownika jest przyjęcie przerwania od urządzenia żądającego obsługi oraz zgodnie z zaprogramowanym priorytetem przekazanie go do procesora. Procesor po przyjęciu przerwania zapytuje sterownik przerwań o typ przerwania określający miejsce w wektorze przerwań, gdzie znajduje się adres procedury obsługi. Wektor przerwań
Pamięć
operacyjna
r*
00400H
003FCH
typ 255
Przerwania do
dyspozycji
użytkownika
4-bajiowy wektor
przerwania | ||
SEGMENT | ||
OFFSET |
Adres procedury obsługi przerwania
Typy przerwań rezerwowane przez firmę Intel
L
00010H 0000CH 00008II 00004H 00000H
typ 4 (a)
typ 3 (b)
typ2(c)
typl(d)
typ 0 (e)
r
j
(a) Rozkaz INTO
(b) Przerwanie od punktu kontrolnego
(c) Przerwanie NMI
(d) Praca krokowa
(e) Błąd przy dzieleniu
%s. 7.6. Wektor przerwań procesorów 8086/8080