Version 2.0 Aktualisiert: 30.03.04

Bisherige Funktionen:
1. Schreibe Zeichenkette:
Interrupt 21h Funktion 9
Eingabe:
AH = 9
DS = Segmentadresse der Zeichenkette
DX = Offsetadresse der Zeichenkette
--> Ende der Zeichenkette muss durch ein $ signalisiert werden.
2. Zeichen von der Tastatur lesen:
Interrupt 21h Funktion 7
Eingabe:
AH = 7
Ausgabe:
AL = ASCII Code des Zeichens
Wenn AL = 0 ist, dann wurde ein erweiterter Tastaturcode eingelesen,
Funktion nochmal aufrufen, um eigentlichen Code zu lesen.
--> Das Zeichen wird nicht angezeigt, die Funktion wartet auf die Eingabe.
3. Zeichen von der Tastatur lesen:
Interrupt 21h Funktion 8
Analog zu Funktion 7 kann jedoch durch STRG+C abgebrochen werden.
4. Öffnen einer Datei:
Interrupt 21h Funktion 3Dh.
Eingabe:
AH = 3Dh
AL = Zugriffsmodus (00h = Nur lesen, 01h = Nur schreiben, 02h = Lesen und schreiben)
DS = Segmentadresse des Dateinamens
DX = Offsetadresse des Dateinamens
Ausgabe:
Carry Flag = 0 --> Ok
AX = Handle der Datei
Ist ein Fehler aufgetreten dann Carry Flag = 1 und Fehlercode in AX:
AX = 1 = Datei schon geöffnet
AX = 2 = Datei nicht gefunden
AX = 3 = Pfad nicht gefunden
AX = 4 = Kein freies Handle
AX = 5 = Zugriff verweigert
5. Datei erstellen:
Interrupt 21 Funktion 3Ch
Eingabe:
AH = 3Ch
DS = Segmentadresse des Dateinamens
DX = Offsetadresse des Dateinamens
CX = Dateiattribut (00h = Normal, 01h = Schreibschutz, 02h = Versteckt, 04h = System)
Ausgabe:
Carry Flag = 0 --> OK
AX = Handle der Datei -->D.h. die Datei braucht nicht noch extra geöffnet werden!
Ist ein Fehler aufgetreten dann Carry Flag = 1 und Fehlercode in AX:
AX = 1 = Pfad nicht gefunden
AX = 4 = Kein freies Handle
AX = 5 = Zugriff verweigert
--> Falls die angegebene Datei bereits existiert, wird sie ohne Warnung überschrieben.
6. Datei schliessen:
Interrupt 21 Funktion 3Eh
Eingabe:
AH = 3Eh
BX = Handle der Datei
Ausgabe:
Carry Flag = 0 --> OK
Carry Flag = 1 --> Fehler u. Fehlercode in AX (AX = 6 = Ungültiges Handle)
7. Datei lesen:
Interrupt 21h Funktion 3Fh
Eingabe:
AH = 3Fh
BX = Handle der Datei/des Geräts
CX = Anzahl der zu lesenden Bytes
DS = Segmentadresse des Puffers
DX = Offsetadresse des Puffers
Ausgabe:
Carry Flag = 0 --> OK und AX = Anzahl der gelesenen Bytes
Carry Flag = 1 --> Fehler u. Fehlercode in AX:
AX = 5 = Zugriff verweigert
AX = 6 = Ungültiges Handle
--> Der "Zeiger" innerhalb der zu lesenden Datei wird automatisch um den Wert in CX erhöht, so
dass der nächste Lesevorgang wieder neue Daten einliest.
8. Datei schreiben:
Interrupt 21h Funktion 40h
Eingabe:
AH = 40h
BX = Handle der Datei/des Geräts
CX = Anzahl der zu schreibenden Bytes
DS = Segmentadresse des Puffers
DX = Offsetadresse des Puffers
Ausgabe:
Carry Flag = 0 --> Ok und AX = Anzahl der geschriebenen Bytes
Carry Flag = 1 --> Fehler u. Fehlercode in AX:
AX = 5 = Zugriff verweigert
AX = 6 = Ungültiges Handle
--> Auch bei dieser Funktion wird der Zeiger innerhalb der Datei automatisch um den Wert in CX
erhöht, so dass der nächste Schreibvorgang hinter dem zuletzt geschriebenen Byte erfolgt.
9. Programm beenden:
Interrupt 21h Funktion 4Ch
Eingabe:
AH = 4Ch
AL = Errorlevel (Optional)
Neue Funktionen:
A. Zeichenkette (String) von der Tastatur lesen:
Interrupt 21h Funktion 0Ah
Eingabe:
AH = 0Ah
DS = Segmentadresse des Puffers
DX = Offsetadresse des Puffers
--> In das erste Byte des Puffers muss die Maximale Anzahl von Zeichen,
die max. eingelesen werden sollen. In das zweite Byte des Puffers
wird die Anzahl der tatsächlich eingelesenen Zeichen ausgegeben.
--> Der Puffer sollte so aussehen:
Puffer DB XXh ;XX=max. Zeichenanzahl XX < 255.
DB ? ;Eingelesene Zeichen
String DB XX DUP (?) ;Eingegebener String
--> Hier gibt es ein NEUES (!) Beispiel dazu.
B. Booten des Systems:
Interrupt 19h Funktion--
Eingabe: Einfach nur INT 19h
--> Funktioniert nur unter True Dos
C. Move Filepointer:
Interrupt 21h Funktion 42h
Eingabe:
AH = 42h
AL = Position relativ zu
0 -> Dateianfang
1 -> Aktueller Dateiposition
2 -> Dateiende
BX = Handle der Datei
CX = High-Word der Position
DX = Low-Word der Position
Ausgabe:
AX = Low-Word der neuen Position
DX = High-Word der neuen Position
--> Positioniert den Zeiger innerhalb einer Datei für die nächste Schreib- oder Leseaktion.
D. Keyboard - Check for keystroke:
Interrupt 16h Funktion 01h
Eingabe:
AH = 01h
Ausgabe:
Gesetztes Zero-Flag wenn keine Taste gedrückt wurde (Funktion sieht im Tastaturpuffer nach)
Wenn Taste gedrückt wurde: Zero-Flag clear und ASCII Zeichen in AL.
--> Gut um z.B. eine Schleife durch Tastendruck zu unterbrechen. Wie z.B. Turbo-Pascal:
"Repeat until keypressed"
E. Videomodus setzen:
Interrupt 10h Funktion 00h
Eingabe:
AH = 00h
AL = Videomodus (davon gibt es ziemlich viele, die meisten sind aber kartenspez., viele sind
einfach schlecht, deshalb nenn ich nur den Besten: 13h - VGA 320x200 256 Farben. Normaler
Modus ist 80x25 d.h. Modus 2 oder 3(Farbig).)
Ausgabe:
Keine.
F. Schreibe Grafikpunkt:
Interrupt 10h Funktion 0Ch
--> Vorher mit Fkt. 00h grafikmodus setzen.
Eingabe:
AH = 0Ch
CX = Spaltenkoordinate
DX = Zeilenkoordinate
AL = Farbattribut
Ausgabe: Keine
Beispiel von mir zu den letzten genannten Interrupts (einfach, aber schlecht kommentiert)
Wird Fortgesetzt...
MEHR: Siehe DOS-Technical-Reference / Ralph Browns Interruptliste