Wenn die Unterbrechungsanforderung empfangen und entgegengenommen ist, muß die zugehörige Einheit bedient werden. Um dies zu tun, arbeitet der Mikroprozessor eine spezielle Bedienungsroutine (Interrupt Service Routine) ab. Dabei ergeben sich zwei Probleme:
Zum einen muß der Status des gerade abzuarbeitenden Programms zum Zeitpunkt, in dem die Unterbrechungsanforderung entgegengenommen wurde, gerettet werden. Das beinhaltet, daß alle Registerinhalte im Mikroprozessor abgesichert werden müssen. Diese Register werden auf dem Stapel (stack) abgespeichert. Zumindest muß der Programmzähler auf den Stapel gebracht werden, da an seine Stelle die Anfangsadresse der Unterbrechungsroutine gesetzt werden muß. Das Retten der restlichen Register kann mittels Hardware geschehen oder liegt in der Hand der Interrupt Service Routine. Wenn der Programmzähler (und eventuell die anderen Register) auf den Stapel gebracht ist, springt der Mikroprozessor zu der Unterbrechungsroutine. An dieser Stelle ergibt sich das zweite Problem:
Eine ganze Reihe von E/A-Einheiten kann an dieselbe Unterbrechungsleitung angeschlossen sein. Wohin soll der Mikroprozessor springen, um die richtige Einheit zu bedienen? Das Problem liegt darin, die Einheit, die die Unterbrechung anforderte, ausfindig zu machen. Diese Ermittlung kann durch Hardware, durch Software oder eine Kombination von beidem geschehen.
|