                
                
                Interrupts aufgeschlsselt
                

Nach der stark theoretischen Einleitung, folgt nun eine pro-
grammierbezogene Darstellung der Interrupts, besser gesagt
eines einzigen Interrupts.
Es folgte eine kurze Beschreibung des Interrupts 19h, der das
System neustartet. 

In einem Maschinenspracheprogramm eingebunden liest er sich ein-
fach als 'INT 19h', in Wirklichkeit steckt hinter diesem Befehl
aber eine sehr umfangreiche Befehlsfolge, die wir im folgenden 
auflisten werden:

 Instruction Pointer  Mnemonics                     Speicher

 1990                 CS: CMP BYTE PTR [210A],00    CS:210A=00
 1996                 JNZ 199B            
 1998              /  CALL 1153
 1153             /    PUSH AX 
 1154            /     PUSH BX
 1155          1|      PUSH CX
 1156           |      PUSH DX
 1157           |      PUSH SI
 1158           |      PUSH DI
 1159           |      PUSH BP
 115A           |      CS: INC BYTE PTR [210A]      CS:210A=00    
 115F           |    / CALL 1114
 1114           |  2|   CS: CMP WORD PTR [23B0],00  CS:23B0=00
 111A           |  2|   JZ 1152
 1152           |    \ RET
 1162           |      CS: CMP WORD PTR [23B0],00   CS:23B0=00
 1168           |      JNZ 115F
 116A           |      CS: DEC BYTE PTR [210A]      CS:210A=01
 116F           |      POP BP
 1170           |      POP DI
 1171           |      POP SI
 1172           |      POP DX
 1173          1|      POP CX
 1174            \     POP BX
 1175             \    POP AX
 1176              \  RET
 199B                 CS: JMP FAR [23DC]            CS:23DC=002F                       
 002F                 JMP 02A6:062B                 CS = 04FA
 062B                 CLI                           CS = 02A6
 062C                 CS: TEST WORD PTR [08FA],0001 CS:08FA=0021
 0633                 JZ 063E
 0635                 CS: AND WORD PTR [08FA],-02   CS:08FA=0021
 063B               / CALL 0514
 0514              /   PUSH AX
 0515            3|    PUSHF
 0516             |    CLI
 0517             |    CS: OR WORD PTR [08FA],40    CS:08FA=0020
 051D             |    CS: DB 66
 0527             |    MOV AL,0F
 0529             |    OUT 84,AL
 052D            3|    OUT 85,AL
 Und tsch.........


Gut zu erkennen sind die 2 geschachtelten 'Prozeduraufrufe' (1,2)  
(CALLs), die sich ja wohl selbst dokumentieren und der am Ende 
offene CALL (3). Ernst beiseite: Typsch fr alle Interrupts ist 
das Retten der wichtigsten CPU-Register auf den Stack, sowie das
sptere 'POPen' der selbigen. 
Wir wollen jetzt nicht nher auf die Arbeitsweise des Interrupts
eingehen. Es sollte nur mal deutlich gemacht werden, wie umfang-
reich selbst einer der krzesten Interrupts sein kann. 


Mehr ber Interrupts gibt hs im nchsten MC.


                                       Kemil und Gabriel.

