Theorie
 
 
 
 
 
Computertechnik
 
 
 
 
 
.. Stichwort: SoftINT -Liste
 
 
 
 
 

 
 
 
 

 

Die nachfolgende Liste gibt alle, in dem RTOS-Betriebssystem der IPC@CHIP Webserver benutzten Software-Interrupts wieder. Sie bezieht sich auf die Betriebssystem-Version 1.04. Die schwarz beschrifteten Interrupts lassen sich auch im DOS von IBM-kompatiblen PCs wiederfinden, wobei Abweichungen grau hinterlegt sind.

 

 

 

 

 


 

 

Offset

INT

Auslöser

Bemerkung

 

 

0000

00

CPU

Division durch Null

 

 

0004

01

CPU

Debugger, Einzelschritt der 80186-CPU

 

 

0008

02

Hardw.

NMI (nicht maskierbarer Interrupt)

 

 

000C

03

CPU

Debugger, Breakpoint (Unterbrechung im Programm)

 

 

0010

04

CPU

Arithmetik Überlauf

 

 

0014

05

Softw.

Array Grenzen Exception Handler

 

 

0018

06

CPU

Unzulässiger Opcode Exception Handler

 

 

001C

07

CPU

ESC Opcode, Coprozessor nicht verfügbar

 

 

0020

08

Hardw.

Timer 0 Handler

 

 

0024

09

frei

für Anwenderappl.           (bei PC, IRQ1 Tastatur)

 

 

0028

0A

Hardw.

DMA0/INT5 Handler      (bei PC, 2.IRQ Controller)

 

 

002C

0B

Hardw.

DMA1/INT6 Handler      (bei PC, IRQ3, COM2)

 

 

0030

0C

Hardw.

INT0 Handler                  (bei PC, IRQ4, COM1)

 

 

0034

0D

Hardw.

INT1 Ethernet                  (bei PC, IRQ5, LPT2)

 

 

0038

0E

Hardw.

INT2 Handler                  (bei PC, IRQ6 DiskController)

 

 

003C

0F

Hardw.

INT3 Handler                  (bei PC, IRQ7, LPT1)

 

 

0040

10

Softw.

Bios-API

 

 

0044

11

Softw.

Bios-API

 

 

0048

12

Hardw

Timer1 Handler

 

 

004C

13

Hardw

Timer2 Handler

 

 

0050

14

Softw.

Fossil-API

 

 

0054

15

frei

für Anwenderapplikationen

 

 

0058

16

Softw.

Bios-API

 

 

005C

17

frei

für Anwenderapplikationen

 

 

0060

18

frei

für Anwenderapplikationen

 

 

0064

19

frei

für Anwenderapplikationen

 

 

0068

1A

Softw.

Bios-API

 

 

006C

1B

frei

für Anwenderapplikationen

 

 

0070

1C

Softw.

Timer Interrupt, siehe Set timer 1C interval

 

 

0074

1D

frei

für Anwenderapplikationen

 

 

0078

1E

frei

für Anwenderapplikationen

 

 

007C

1F

frei

für Anwenderapplikationen

 

 

0080

20

Softw.

Terminate Program (aus Kompatibilität siehe 0x4C )

 

 

0084

21

Softw.

DOS-API

 

 

0088

22

frei

für Anwenderapplikationen

 

 

...

 

frei

für Anwenderapplikationen

 

 

27C

9F

frei

für Anwenderapplikationen

 

 

0280

A0

Softw.

Bios-API, SC12-Chip bezogenes BIOS

 

 

0284

A1

Softw.

Hardware-API (HAL)

 

 

0288

A2

Softw.

Hardware-API (PFE)

 

 

028C

A3

frei

für Anwenderapplikationen

 

 

...

 

frei

für Anwenderapplikationen

 

 

02A4

A9

frei

für Anwenderapplikationen

 

 

02A8

AA

Softw.

I2C-Bus-API / SPI-API

 

 

02AC

AB

Softw.

CGI-API / SSI-API

 

 

02B0

AC

Softw.

TCP-IP-API / SSL-API / DNS-API / PPP-API

 

 

02B4

AD

Softw.

RTOS-API

 

 

02B8

AE

Softw.

Ethernet-API

 

 

02BC

AF

Softw.

Timer Interrupt, siehe Set timer AF interval Timer

 

 

02C0

B0

Softw.

externes Diskettenlaufwerk API

 

 

02C4

B1

Softw.

Externes Diskettenlaufwerk Driver

 

 

02C8

B2

frei

für Anwenderapplikationen

 

 

...

 

frei

für Anwenderapplikationen

 

 

02F8

BE

frei

für Anwenderapplikationen

 

 

02FC

BF

Softw.

USB / CAN-Bus Schnittstelle

 

 

0300

C0

frei

für Anwenderapplikationen

 

 

...

 

frei

für Anwenderapplikationen

 

 

03FC

FF

frei

für Anwenderapplikationen

 

 

 
 
 
 
 
In der obigen Tabelle bedeutet CPU, dass die 80x86 CPU diesen SoftINT fest belegt und ihn bei Ausnahmezuständen aufruft. Hardw., dass dieser Vektor durch Gegebenheiten der Hardware bestimmt ist und durch bestimmte elektrische Signale an den Pins der CPU ausgelöst wird, sowie Softw., dass es sich bei diesen Software-Interrupts um Zeiger des Betriebsystems auf API-Unterprogramme handelt, die typischer Weise durch einen INT x Assemblerbefehl aufgerufen werden können. Die freien Vektoren können durch jedes Anwendungsprogramm belegt und für eigene Zwecke benutzt werden.
Natürlich lassen sich die mit CPU und Hardw. gekennzeichneten Softwareinterrupts auch über einen INT-Befehl erreichen. Das macht zwar normalerweise keinen Sinn, aber wer es dennoch tun will, kann beispielsweise mit dem INT 0 spielen ...
 
 
 
 
 
SoftINT 0
Der Softwareinterrupt 0 wird von der CPU aufgerufen, wenn diese in einem Maschinenprogramm vor das unlösbare Problem gestellt wird, eine Zahl durch Null zu teilen. Als Ergebnis müsste die CPU eine unendlich große Zahl generieren und das kann auch sie nicht. Also gibt sie das Problem an die Programmierer des Rechners zurück, indem sie den Softwareinterrupt 0 aufruft. Der Systemprogrammierer hat gut getan, wenn er hier die Adresse eines Programms in seinem Betriebssystem angegeben hat, welches der CPU nun hilft. Allerdings sind die Standardlösungen dieser Unterprogramme ebenfalls etwas hilflos. Sie geben zum Bildschirm 'Division Error' aus und beenden das Programm. Das es so ist, kann man ausprobieren, wenn man folgende Zeilen programmiert...
 
 
 
 

 

#include <stdio.h>

void main (void)
{
 printf("INT 0 wird aufgerufen ..\r\n");
 asm{
     int 0
    }
}

 

 

 

 
Die Bildschirmausgabe dieses Programms führt zu ..

INT 0 wird aufgerufen ..
Division Error

.. und das Programm ist beendet. Soll das Programm nicht enden, so muss ein Anwendungsprogrammierer im Soft-INT 0-Vektor ein eigenes Unterprogramm mit seiner Adresse eintragen, welches anders reagiert, als das des Betriebssystems.
 
 
 
 
www..de