zurück Home

MS-DOS - Interrupt 21

Allgemeines

Der Interrupt 21 aus MS-DOS wird z.T. heute noch verwendet
Abkürzungen
  • AUX: serielle Schnittstelle
  • CON: Bildschirm- und Tastaturtreiber
  • DTA: Datenübertragungsbereich
  • EOF: Ende der Datei
  • FAT: Tabelle, die MS-DOS anzeigt, welche Bereiche des Festplattenspeichers noch frei und welche belegt oder unbrauchbar sind
  • FCB: im Arbeitsspeicher abgelegter Datei-Steuerblock
  • LSB: Niederwertiger Teil einer 16-BitAdresse
  • MSB: Höherwertiger Teil einer 16-BitAdresse
  • PRN: Gerätebezeichnung des Druckers
  • PSP: Programm-Segment-Prefix
  • RRF: Nummer eines relativen Datensatzes
Funktionen
F-Nr. Eingabe Ausgabe Bedeutung
0 CS = Segmentadresse des PSP- Beendet Programm und setzt Interruptvektoren im PSP zurück.
1 - AL=ASCII-Zeichen liest ASCII-Zeichen von »CON« (Tastatur) mit Ausgabe auf dem Bildschirm
2 DL=ASCII-Zeichen - gibt ASCII-Zeichen ab Cursorposition auf »CON« (Bildschirm) aus
3 - AL=ASCII-Zeichen liest ASCII-Zeichen von »AUX« (serielle Schnittstelle) ein
4 DL=ASCII-Zeichen - gibt ASCII-Zeichen auf »AUX« (serielle Schnittstelle) aus
5 DL=ASCII-Zeichen - gibt ASCII-Zeichen auf »PRN« (Drucker) aus
6 DL=FFhex: liest ASCII-Zeichen
DL=ASCII-Zeichen
AL=ASCII-Zeichen (wenn gelesen Z=1: kein Zeichen gelesen)
-
liest ASCII-Zeichen von »CON« (Tastatur)
schreibt ASCII-Zeichen auf »CON« (Bildschirm)
7 - AL=ASCII-Zeichen liest ASCII-Zeichen von »CON« (Tastatur) und erkennt [Strg-C] nicht
8 - AL=ASCII-Zeichen liest ASCII-Zeichen von »CON« (Tastatur) und erkennt [Strg-C]
9 DS:DX=Zeiger auf Zeichenkette ($=Ende) - gibt Zeichenkette ab Cursorposition auf »CON« (Bildschirm) aus
OA hex DS:DX=Zeiger auf Eingabepuffer
(DS:DX)=maximal erlaubte Zeichenzahl
(DS:DX+1)=tatsächliche Zeichenzahl
(DS:DX+2)=erstes Zeichen
liest Zeile von »CON« (Tastatur) als Zeichenkette ein
OB hex - Al-=O: keine Taste, AL=FFhex: Taste gedrückt überprüft, ob Taste gedrückt wurde
OC hex AL=1/6/7/8/A: löscht Puffer und führt in AL angegebene Funktion aus
AL=anderer Wert: nur Löschen-
Al-=O: Puffer nur gelöscht löscht Tastaturpuffer (und führt weitere Funktion aus)
OD hex - - setzt Standardlaufwerk zurück
OE hex DI-=O: Laufwerk A
DL=1: Laufwerk B und so weiter
AL=Anzahl der Laufwerke wählt Standardlaufwerk aus
OF hex DS:DX=ungeöffneter FCB Al-=O: Datei gefunden AL=FFhex: Datei nicht gefundenfunden- öffnet Datei über FCB
10 hex DS:DX=geöffneter FCB Al-=O: Datei gefunden AL=FFhex: Fehler aufgetreten- schließt Datei über FCB
11 hex DS:DX=ungeöffneter FCB AL=0: Datei gefunden AL=FFhex: Datei nicht gefunden- sucht erst passende Datei über FCB
12 hex DS:DX=ungeöffneter FCB Al-=O: Datei gefunden AL=FFhex: Datei nicht gefunden- sucht nächste passende Datei über FCB
13 hex DS:DX=ungeöffneter FCB Al-=O: Datei gefunden AL=FFhex: Datei nicht gefunden- löscht Datei über FCB
14 hex DS:DX=geöffneter FCB AL = 0: kein Fehler
AL=1: EOF erreicht, keine Daten gelesen
AL=2: DTA zu klein, keine Daten gelesen
AL=3: EOF neu gesetzt, weil altes EOF nicht korrekt
liest Datensatz aus sequentieller Datei
15 hex DS:DX=geöffneter FCB AL = 0: kein Fehler
AL=1: Diskette voll, keine Daten geschrieben
AL=2: DTA zu klein, keine Daten geschrieben
Schreibt Datensatz in sequentielle Datei
16 hex DS:DX=ungeöffneter FCB AL=O: Datei angelegt
AL=FFhex: Datei nicht angelegt, weil Verzeichnis voll
legt Datei über FCB an
17 hex DS:DX=modifizierter FCB AL=0: Datei gefunden
AL=FFhex: Datei nicht gefunden/Datei existiertbereits
benennt Datei über FCB um
18 hex - - für MS-DOS reserviert
19 hex - AL=0: Laufwerk A
AL=1: LaufwerkB usw.
bestimmt Standardlaufwerk
1A hex DS: DX = Zeiger auf neuen DTA - definiert neuen auf neuen DTA
1B hex - AL=Sektoren pro Datengruppe
CX = Dektorgröße in Byte
DX=Datengruppe pro Laufwerk
DS:BX=Zeiger auf ID der FAT
Liest Daten des Standardlaufwerks
1C hex DL=0: Standardlaufwerk
DL=l: Laufwerk A
DL=2: Laufwerk B und so weiter
AL=Sektoren pro Datengruppe
CX=Sektorengröße in Byte
DX=Datengruppe pro Laufwerk
DS:BX=Zeiger auf ID der FAT
liest Daten eines Laufwerkes
1E hex - - für MS-DOS reserviert
1F hex - - für MS-DOS reserviert
20 hex - - für MS-DOS reserviert
21 hex DS:DX=geöffneter FCB AL=0: kein Fehler l
AL=1: EOF erreicht, keine Daten eingelesen
AL=2: DTA zu klein, keine Daten eingelesen
AL=3: EOF neu gesetzt, weil altes EOF nicht korrekt
liest Datensatz wahlfrei
22 hex DS:DX=geöffneter FCB AL=0: kein Fehler
AL=1: Diskette voll, keine Daten geschrieben
AL=2: DTA zu klein, keine Daten geschrieben
schreibt Datensatz wahlfrei
23 hex DS:DX=ungeöffneter FCB AL=0: Datei gefunden
AL=1FFhex: Datei nicht gefunden
ermittelt Dateigröße
24 hex DS:DX=geöffneter FCB - setzt RRF neu
25 hex AL=Interruptnummer
DS:DX =Interruptvektor
-setzt Interruptvektor neu
26 hex DX=Segmentadresse des PSP - legt neuen PSP an
27 hex CX=Anzahl der Datensätze
DS:DX=geöffneter FCB
AL=0: kein Fehler
AL=1: EOF erreicht, keine Daten gelesen
AL=2: DTA zu klein, keine Daten gelesen
AL=3: EOF neu gesetzt, weil altes EOF nicht korrekt, CX=Anzahl der gelesenen Datensätze
liest mehrere Datensätze einer Datei
28 hex CX=Anzahl der Datensätze
DS:DX=geöffneter FCB
AL=0: kein Fehler
AL=1: EOF erreicht, keine Daten geschrieben
AL=2: DTA zu klein, keine Daten geschrieben
schreibt mehrere Datensätze in eine Datei
29 hex AL=Suchcode
ES:DI=ungeöffneter FCB
DS:SI =Zeiger auf Befehlszeile
AL=0: keine Stellvertreterzeichen
AL=1: Stellvertreterzeichen enthalten
AL=FFhex: Laufwerk ungültig
DS:SI=Zeiger auf unbearbeiteten Teil der Befehlszeile, ES:DI=ungeöffneter FCB
isoliert Dateinamen aus Befehlszeile und reserviert FCB
2A hex - AL=Wochentag
CX=Jahr
DH=Monat
DL=Tag
liest Datum
2B hex CX=Jahr, DH=Monat, DL=Tag AL=0: gültiges Datum
AL=FFhex: ungültiges Datum
setzt Datum
2C hex - CH=Stunde, CL=Minute, DH=Sekunde
DL=1/100 Sekunden
liest Uhrzeit
2D hex CH=Stunde
CL=Minute, DH=Sekunde
DL=1/100 Sekunden
AL=0: gültige Uhrzeit
AL=FFhex: ungültige Uhrzeit
Setzt Uhrzeit
2E hex AL=0:löscht Statusbit, AL=1: setzt Statusbit - setzt/löscht Verify-Statusbit
2F hex ES:BX=Zeiger auf DTA liest DTA-Adresse
30 hex - AX=Version (zum Beispiel 3.2)
BH=OEM-Seriennummer
BL:CX=24-Bit-Seriennummer
liest MS-DOS-Version und Seriennummer
31 hex AL=Fehlercode
DX=Speicherbedarf in 16-Byte-Einheiten
- beendetProgramm und behält es für Neustart im Arbeitsspeicher
32 hex - - MS-DOS reserviert
33 hex AL = 1: ändert Break-Statusbit
DL=0: löscht Break-Statusbit
DL=1: setzt Break-Statusbit
AL=FFhex: Fehler aufgetreten
DL=0: Break-Statusbit gelöscht
DL=1: Break-Statusbit gesetzt
liest/ändert Break-Statusbit ([Strg-C1)
34 hex - - für MS-DOS reserviert
35 hex AL=Interruptnummer ES:BX=Interruptvektor liest Interruptvektor 2.0
36 hex DL=0: Standardlaufwerk
DL=1: Laufwerk A
DL=2: Laufwerk B usw
AX=FFFFhex (Laufwerk ungültig)
AX = Sektoren pro Datengruppe
CX = Sektorgröße in Byte
BX = verfügbare Datengruppen
DX = Datengruppen pro Laufwerk
ermittelt freien Diskettenspeicher
37 hex - für MS-DOS reserviert
38 hex AL=0: voreingestellte Landeskennzahl verwenden
AL=FFhex: BX=Landeskennzahl -255 sonst:
AL=Landeskennzahl
DS:DX=Pufferbeginn für gewünschte Informationen
BX=Landeskennzahl, wenn C=1: AL=2 liest Landeskennzahl
38 hex DX=FFFFhex AL=FFhex:
BX=Landeskennzahl-255 sonst:
AL=Landeskennzahl
C=1:AL=2 setzt Landeskennzahl
39 hex DS:DX=Zeiger auf Pfadnamen C=1: AL=3/5 legt neues Verzeichnis an
3A hex DS:DX=Zeiger auf Pfadnamen AL=3/5/10 leeres Verzeichnis
3B hex DS:DX=Zeiger auf Pfadnamen C=1: AL=3 wechselt aktuelles Verzeichnis
3C hex CX=Dateiattribut
DS:DX=Zeiger auf Dateieintrag
AX=Handle C=1: AL=3/4/5 legt Handle für neue Datei an
3D hex AL=0: Lesen
AL=1: Schreiben
AL=2: Lesen und Schreiben auf Eingabepuffer
DS:DX= Zeiger auf Pfadnamen
AX=Handle C=1: AL=2/4/5/C öffnet Handle auf Datei
3E hex BX=Handle C=1: AL=6 Handle auf Datei
3F hex BX = Handle
CX=Anzahl der zu lesenden Zeichen
DS:DX=Zeiger auf Eingabepuffer
AX=Anzahl der gelesenen Zeichen
AX = 0: EOF erreicht C=1: AL=5/6
liest über Handle aus Datei oder von Gerät
40 hex BX = Handle
CX=Zahl der zu schreibenden Zeichen
DS:DX=Zeiger auf Ausgabepuffer
AX=Anzahl der geschriebenen Zeichen
AX=O: Diskette voll
C=1:AL=5/6
Schreibt über Handle in Datei oder Gerät
41 hex DS:DX=Zeiger auf Dateieintrag C=1:AL=2/5 löscht Datei
42 hex AL=0: Dateianfang und Offset
AL=1: alte Zeigerposition und Offset
AL=2: Dateiende und Offset
BX=Handle, CX:DX=Offset
DX:AX=neue Zeigerposition
C=1:AL=1/6
positioniert Schreib-/Lesezeiger innerhalb einer Datei auf die durch den Wert von AL definierte Art
43 hex AL=1: liest Dateiattribut
DS:DX=Zeiger auf Dateieintrag
CX=Dateiattribut C=1: AL=1/3/5 liest Dateiattribut
43 hex AL=1: ändert Dateiattribut
CX=Dateiattribut DS:DX=Zeiger auf Dateieintrag
C=1: AL=1/3/5 ändert Dateiattribut
44 hex AL=Unterfunktion, weitere Register: je nach Funktion Register: je nach Funktion C=1:AL=1%5/6/D/F ändert/liest Geräteinformationen, gerätespezifische Ein-/Ausgabe (IOCTL-Funktion)
4400 hex BX=Handle DX=Kanalcode C=1: AL=1/6 liest Kanalinformationen
4401 hex BX=Handle DX=Kanalcode C=1: AL=1/6 schreibt Kanalinformation
4402 hex BX=Handle
CX=Anzahl der zu sendenden Zeichen
DS:DX=Zeiger auf Sendepuffer
AX=Anzahl der gesendeten Zeichen
C=1:AL=1/6
sendet Steuerzeichen an zeichenorientiertes Gerät
4403 hex BX=Handle
CX=Anzahl der zu empfangenden Zeichen
DS:DX=Zeiger auf Empfangspuffer
AX=Anzahl der empfangenen Zeichen
C=1:AL=1/6
empfängt Steuerzeichen von zeichenorientiertem Gerät
4404 hex BL=0: angewähltes Laufwerk
BL = 1: Laufwerk A
BL = 2: Laufwerk B usw.
CX= Anzahl der zu sendenden Zeichen
DS: Dx=Zeiger auf Sendepuffer
AX=Anzahl der gesendeten Zeichen
C=1: AL=1/5
sendet Steuerzeichen an blockorientiertem Gerät
4405 hex BL=0: angewähltes Laufwerk
BL = 1: Laufwerk A
BL = 2: Laufwerk B usw.
CX= Anzahl der zu empfangenden Zeichen
DS: Dx=Zeiger auf Empfangspuffer
AX=Anzahl der empfangenen Zeichen
C=1: AL=1/5
empfängt Steuerzeichen von blockorientiertem Gerät
4406 hex BX = Handle AL = 0: Gerät nicht empfangsbereit/ EOF der Datei erreicht, AL = FFhex: Gerät empfangsbereit / Datei kann beschrieben werden Prüft Empfangsbereitschaft der Datei / des Gerätes
4407 hex BX = Handle AL = 0: Gerät nicht sendebereit/ Datei kann gelesen werden, AL = FFhex: Gerät empfangsbereit / Datei kann beschrieben werden Prüft Sendebereitschaft der Datei / des Gerätes
4408 hex BL=0: angewähltes Laufwerk
BL=1: Laufwerk A
BL=2: Laufwerk B und so weiter
AL=0: Medium ist austauschbar
AL=1: Medium ist nicht austauschbar (zum Beispiel Festplatte) C=1: AL=1/F
prüft Austauschbarkeit des Mediums in einem bestimmten Laufwerk
4409 hex BL=0: Standardlaufwerk
BL=1: Laufwerk A
BL=2: Laufwerk B und so weiter
DX = Geräteattribut DX = 1 (Bit 12): lokal
DX = 2(Bit 12): remote
AX = 1: unbekannter Funktionscode
AX = 0: Fehlerfrei
AX = 15: unbekanntes Gerät
prüft, ob angegebenes Laufwerk Bestandteil des PC ist (nur bei installierter Netzwerksoftware verwendbar)
440A hex BX=Handle DX=IOCTL-Code, DX=1(Bit 15):local, DX=2(Bit 15): remote, AX=O: fehlerfrei, AX=1: unbekannter Funktionscode, AX=6: nicht geöffnetes oder existieren des Handle prüft, ob sich die mit dem Handle verbundene Datei im PC befindet (nur bei installierter Netzwerk-Software verwendbar)
440B hex BX=Anzahl der Wiederholungsversuche
CX=Pause zwischen den Versuchen
AX=Fehlercode setzt Zugriffswiederholung (nur bei installierter Netzwerk-Software verwendbar)
440C hex BX=Handle-Nummer
CH=Gerätecode
CL=Funktionscode
DS:DX=Zeiger auf Datenpuffer
AX=Fehlercode schalte zwischen Zeichensatztabellen um
440D hex BL=0: Standardlaufwerk
BL=1: Laufwerk A
BL=2: Laufwerk B und so weiter
CL=Funktionscode DS:DX=Zeiger auf Parameterblock
DS:DX=ab dort Informationen im Parameterblock allgemeine IOCTL-Anforderung für Blocktreiber
440E hex BL=Laufwerksnummer AL=Laufwerkanzahl
AX=Fehlercode
ermittelt die Laufwerkszuweisung
440F hex BL=Laufwerksnummer AL=Laufwerksnummer
AX=Fehlercode
setzt den nächsten logischen Laufwerksbuchstaben
45 hex BX=alter Handle AX=neuer Handle C=1: AL=4/6 öffnet zweiten Handle für den Zugriff auf eine geöffnete Datei
46 hex BX=erster Handle C=1: AL=4/6 schließt eventuell vorhandenen zweiten Handle und öffnet neuen, gleichberechtigten zweiten Handle für Zugriff auf eine geöffnete Datei
47 hex DL=0: angewähltes Laufwerk
DL=1: Laufwerk A
DL=2: Laufwerk B und so weiter
DS:SI=Zeiger auf Lesepuffer
DS:SI=Zeiger auf Bezeichnung
C=1: AL=F
liest Bezeichnung des aktuellen Verzeichnisses
48 hex BX=Speicherbedarf in 16-Byte-Einheiten AX=Segmentadresse für Speicherbereich C=1:
AL=7/8
BX= größter freier Speicherbereich in 16-Byte-Einheiten
reserviert Arbeitsspeicher
49 hex ES=Segmentadresse für Speicherbereich C=1: AL=7/8 gibt reservierten Arbeitsspeicher frei
4A hex BX=Speicherbedarf in 16-Byte-Einheiten
ES=Segmentadresse für Speicherbereich
C=1: AL=7/8/9
BX=Größe des Speicherbereiches
ändert Größe des reservierten Arbeitsspeichers
4B hex Al=O
DS:DX=Zeiger auf Dateieintrag
ES:BX=Zeiger auf Parameterblock
C=1: AL=1/2/8/A/B lädt und startetProgramm
4B hex AL=3
DS:DX=Zeiger auf Dateieintrag
ES:BX=Zeiger auf Parameterblock
C=1: AL=1/2/8/A lädt Overlay-Datei
4C hex AL=Statuscode des aufrufenden Programms - beendet Programm, schließt geöffnete Dateien und übergibt Statusmeldung an aufrufendes Programm
4D hex AL=Statuscode des beendeten Programmesermittelt Statusmeldung des mit Funktion 4C beendeten Programms
4E hex CX=Dateiattribut
DS:DX=Zeiger auf Dateieintrag
C=1: AL=2/12 sucht zum Dateieintrag passende Datei und schreibt Daten in DTA
4F hex C=1: AL=12 sucht nächsten zum Dateieintrag passende Datei und schreibt Daten in DTA
50 hex-
53 hex
- für MS-DOS reserviert
54 hex AL=0: Statusbit gelöscht
AL=1: Statusbit gesetzt
testet Verify-Statusbit
55 hex - - für MS-DOS reserviert
56 hex DS:DX=Zeiger auf alten Dateieintrag
ES:DI=Zeiger auf neuen Dateieintrag
C=1:AL=2/5/11 benennt Datei um
57 hex AL=0 BX=Handle CH=Uhrzeit (LSB)
CL=Uhrzeit (MSB)
DH=Datum (LSB
DL=Datum (MSB)
C=1: AL=1/6
liest Uhrzeit und Datum einer Datei
57 hex AL=1 BX=Handle
CH=Uhrzeit (LSB)
CL=Uhrzeit (MSB)
DH=Datum (LSB)
DL=Datum (MSB)
C=1: AL=1/6 ändert Uhrzeit und Datum einer Datei
5701 hex AL=0
BX=Handle
CX=Uhrzeit, DX=Datum
AX=O: fehlerfrei
AX=1: unbekannte Funktion
AX=6: unbekanntes Handle
ermittelt Datum und Uhrzeit der letzten Veränderung einer Datei
5702 hex BX=Handle, CX=Uhrzeit, DX=Datum AX=Fehlercode setzt Datum und Uhrzeit der letzten Veränderung einer Datei
58 hex AL=Modus (Lesen oder Setzen)
BX=Strategie
AX=Fehlercode liest oder setzt Konzept der Speicherverwaltung
59 hex BX=O AX=erweiterter Fehlercode, BH=Fehlerursache, BL=Verfahrensvorschlag, CH=Fehlerquelle liest erweiterten Fehlercode
5A hex CX=Dateiattribut
DS:DX=Zeiger auf Pfadnamen
AX=Fehlercode
DS:DX=Zeiger auf Dateinamen
erzeugt vorübergehend eine Datei
5B hex CX=Dateiattribute
DS:DX=Zeiger auf Pfadnamen
AX=Fehlercode erzeugt neue Datei
5C hex AL=0: sperrt eine Datei
AL=1: sperrt Datei nicht
BX=Datei-Handle, CX=Offset der Region
DX=Offset der Region, Sl=Länge der Region
Dl= Länge der Region
AX=Fehlercode erlaubt oder sperrt Zugriff auf neue Region einer Datei
5D hex - - für MS-DOS reserviert
5E00 hex DS:DX=Zeiger auf Speicherplatz (16 Byte) für den PC-Namen CH=O Name nicht definiert, CH ungleich O:Name ist definiert, CL=Nummer des Rechners, DS:DX=Zeiger zu Namen, AX=Fehlercode, AX=1: keine Netzwerk-Software geladen gibt den Namen für den eigenen (lokalen) PC an
5E02 hex BX=Umleitungslistenindex CX=Länge des Zeichensatzes zum Einrichten des Druckers (maximal 64 Byte) DS:SI =Zeiger zum Speicherplatz für Druckerzeichensatz AX=Fehlercode setzt eine Druckereintragung (Netzwerk-Software notwendig)
5E03 hex BX=Rückleitungslistenindex ES:DI=Zeiger zum Zeichenpuffer AX=Fehlercode, CX=Länge des Einrichtungsstrings ≤ 64 ermittelt eine Druckereintragung
5F02 hex BX=Umleitungslistenindex
DS:SI=Zeiger zu (128-Byte-)Speicherplatz mit dem lokalen Gerätenamen
ES:DI=Zeiger zu (128-Byte-)Speicherplatz mit dem Netzwerknamen
AX=Fehlercode
BH=Gerätestatusflag
BL=Gerätetyp (3=Drucker, 4=Laufwerk)
CX=gespeicherte Parameter
liefert Eintrag in Netzwerk-Umleitungsliste
5F03 hex BL=Gerätetyp (3= Drucker, 4= Laufwerk)
CX=gespeicherte Parameter
DS:SI=Zeiger zum Namen des Sende-(Quell)-Gerätes
ES:DI=Zeiger zu Netzwerkpfad und Paßwort
AX=Fehlercode Gerät umleiten
5F04 hex DS:SI =Zeiger zu Gerätenamen oder Netzwerkpfad AX=Fehlercode beendet Netzwerkumleitung
60 hex - - für MS-DOS reserviert
61 hex - - für MS-DOS reserviert
62 hex BX=Segmentadresse des PSP ermittelt PSP-Adresse
65 hex AL=Funktionscode, BX=Code Page, DX=Länderindentifikation, ES:DI=Zeiger auf Puffer AX=Fehlercode holt erweiterte Länderinformationen
66 hex AL=1 (Ermitteln), AL=2 (Setzen) AX=Fehlercode ermittelt oder setzt globale Zeichensatztabelle
67 hex AL=0 BX=Handle-Anzahl AX=Fehlercode setzt maximale Handle-Anzahl
68 hex BX=Handle-Nummer AX=Fehlercode schreibt Dateipuffer

Impressum                           Zuletzt geändert am 03.04.2016 14:56