Interrupts 80x86/ INT 21/ Arbeit mit Dateien (Handle)
Interrupts 80x86/ INT 21/ Disk Parameter Block
Allen Funktionen gemeinsam ist folgendes:
Die Adresse eines Pfadnamens wird in DS:DX übergeben. Der Pfadname muss im ASCIIZ-Format gespeichert sein, d.h. mit abschließendem Null-Byte. Der Pfadname kann Laufwerk und Verzeichnis enthalten (z. B. A:\TEXT\DATEI.TXT) oder auch nur einen Dateinamen enthalten (z. B. DATEI.TXT), der sich dann auf das aktuelle Laufwerk und Verzeichnis bezieht.
Die Funktionen 3Ch und 3Dh liefern im AX Register einen sogenannten Handle zurück, eine Dateinummer. Diese Nummer müssen Sie speichern - bei allen weiteren Zugriffen auf die Datei müssen Sie diese Nummer angeben. Der Eintrag Files=xx in der config.sys bzw. config.nt legt fest, wieviele Dateinummern insgesamt vergeben werden können. Wenn Sie eine Datei nicht mehr benötigen, können Sie diese mit der Funktion 3Eh schließen, dadurch wird die Nummer wieder frei. Beim Beenden eines Programms werden alle geöffneten Dateien vom Betriebssystem geschlossen.
Die Dateinummern 0, 1 und 2 sind vom Betriebssystem permanent reserviert für Standardeingabe, Standardausgabe und Ausgabe von Fehlermeldungen.
Int 21h Funktion 3Ch: Neue Datei erstellen
BearbeitenAH = 3Ch DS:DX = Segment:Offset Adresse des Pfadnamens (Dateinamens)
Ausgabe:
CY zeigt Fehler an, sonst AX = Handle
Int 21h Funktion 3Dh: Vorhandene Datei öffnen
BearbeitenAH = 3Dh AL = Zugriffscode (0 = nur Lesen, 1 = nur Schreiben, 2 = Lesen und Schreiben) DS:DX = Segment:Offset Adresse des Pfadnamens
Ausgabe:
CY zeigt Fehler an, sonst AX = Handle
Int 21h Funktion 3Eh: Datei schließen
BearbeitenAH = 3Eh BX = Handle-Nummer
Ausgabe:
CY zeigt Fehler an, sonst AX = Fehler-Code oder Handle-Nummer
Int 21h Funktion 3Fh: Datei lesen
BearbeitenAH = 3Fh BX = Handle-Nummer CX = Anzahl zu lesender Bytes DS:DX = Zeiger auf Zielspeicher
Ausgabe:
CY zeigt Fehler an, sonst AX = Fehler-Code oder Handle-Nummer
Int 21h Funktion 40h: Datei schreiben
BearbeitenAH = 40h BX = Handle-Nummer CX = Anzahl zu schreibender Bytes DS:DX = Zeiger auf Quellspeicher
Ausgabe:
CY zeigt Fehler an, sonst AX = Fehler-Code oder Handle-Nummer
Int 21h Funktion 41h: Datei löschen
BearbeitenAH = 41h DS:DX = Segment:Offset Adresse des Dateinamens
Ausgabe:
CY zeigt Fehler an, sonst AX = Fehler-Code oder Handle-Nummer
Fehlercodes
Bearbeiten- 01h File-Sharing nicht installiert
- 02h Datei nicht gefunden
- 03h Pfad oder Teile des Pfades nicht gefunden
- 04h Zu viele geöffnete Dateien (Eintrag FILES in der CONFIG.SYS ist zu klein)
- 05h Zugriff verweigert (z. B. Diskette voll)
- 06H ungültiger Handle