"
Przerwania procesora "
Przerwanie (ang. interrupt) - jest sygnałem dla procesora mówiącym mu, że ma czasowo przerwać aktualnie wykonywany proces i zająć się czymś innym. Bez przerwań procesor musiałby stale kontrolować wszystkie urządzenia zewnętrzne typu klawiatura, podczas gdy z przerwaniami procesor może wykonywać jakiś program i nadal ma możliwość reagować na wydarzenie zewnętrzne (np. naciśnięcie klawisza) od razu po jego wystąpieniu.
Procesor ma też instrukcję, która
umożliwia wyłączenie przerwań - jeśli aktualnie wykonywany
proces nie może być zakłócany. Istnieją jednak pewne
specyficzne sytuacje, podczas których konieczna jest reakcja
procesora - np. awaria sprzętu, pamięci czy odcięcie dopływu
prądu - nie ważne jak istotny jest wykonywany aktualnie proces.
Do poinformowania procesora o tych ekstremalnych wypadkach
służą tzw. non maskable interrupts (NMI -
przerwania niemaskowalne).
Procesor posiada 256 różnych przerwań - można je podzielić na dwie grupy:
No właśnie: Każde z przerwań - bez
względu na to, czy jest to przerwanie programowe czy sprzętowe
- posiada procedurę obsługi - procedurę, która jest
wykonywana w momencie wystąpienia danego przerwania - w
przypadku przerwania klawiatury będzie to odczytanie znaku i
jego zapis do bufora klawiatury.
Procedury obsługi danego przerwania można oczywiście zmienić
tak, żeby procesor po wystąpieniu przerwania wykonywał zamiast
standardowej obsługi - np. część naszego programu. Na tym
właśnie polega pisanie programów rezydentnych tzw. tsr'ów.
Po wykonaniu procedury obsługi danego
przerwania procesor powraca do programu, który wykonywał przed
wystąpieniem sygnału przerwania i wykonuje ten program.
Ważniejsze przerwania to:
1. Sprzętowe:
08H - zegar - przerwanie wykonywane 18.2 razy na sekundę;
09H - klawiatura - przerwanie wykonywane, gdy został
naciśnięty lub puszczony jakikolwiek klawisz.
70H - RTC - zegar czasu rzeczywistego.
(Są to oczywiście tylko te przerwania, które nas -
początkujących assemblerowców - będą interesować jako te,
które się przydają:)).
2. Przerwania programowe:
05H - bios - print screen - przerwanie uaktywniane, gdy
naciśnięty zostaje klawisz
10H - bios obsługa karty graficznej
16H - bios - obsługa klawiatury
20H - dos - zakończenie programu
21H - dos - główne przerwanie funkcji/procedur
Już na wstępie radziłbym zaopatrzyć się w mniej lub bardziej dokładny spis przerwań z opisem ich funkcji - jest to niezbędne, gdyż nie sposób zapamiętać kilkuset różnych użytecznych funkcji.
W tym kursie można znaleźć kilka tabel przerwań, które znajdują się w dziale "Tabele, wykazy...", w rozdziale "Tabele przerwań".
Kwestię przerwań a dokładniej - ich praktycznego użycia - zgłębimy nieco później - podczas omawiania instrukcji int.
Copyright by Grzegorz Złotowicz
Form and Graphics: Michał Stanek