6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Rechnergrundlagen Teil 2 - 37 - Prof. Dipl.-Ing. Komar<br />
Interrupt 21h, Funktion 01h Zeicheneingabe mit Ausgabe<br />
Ein Zeichen wird vom Standard -Eingabegerät ausgelesen und auf dem Standard -Ausgabegerät ausgegeben. Steht zum<br />
Zeitpunkt des Funktionsaufrufs noch kein Zeichen bereit, wartet die Funkt ion, bis ein Zeichen verfügbar wird. Da die<br />
Standard -Ein - und -Ausgabe umgeleitet werden kann, liest die Funktion nicht unbedingt ein Zeichen von der Tastatur aus ein<br />
und gibt es auf dem Bildschirm aus, vielmehr können die eingelesenen Zeichen auch von einem anderen Gerät oder aus einer<br />
Datei stammen. In diesem Fall wird jedoch bei Erreichen des Datei-Endes die Eingabe nicht wieder auf die Tastatur<br />
umgeleitet, so daß die Funktion weiterhin versucht, Zeichen aus der Datei zu lesen, was jedoch nicht möglich ist.<br />
Eingabe AH = 01h<br />
Ausgabe AL = Eingelesenes Zeichen<br />
Werden erweiterte Tastatur-Codes eingelesen, wird zunächst der Code 0 im AL-Register zurückgeliefert. Die Funktion muß<br />
dann erneut aufgerufen werden, um den eigentlichen Code zu lesen.<br />
Wenn das eingelesene Zeichen das Zeichen Control-C (ASCII-Code 3) ist, wird der Interrupt 23h aufgerufen und dies führt<br />
zur Beendigung des Programms.<br />
Der Inhalt der Register AH, BX, CX, DX, SI, DI, BP, CS, DS, SS, ES und des Flag-Registers wird durch diese Funktion<br />
nicht verändert.<br />
Interrupt 21h, Funktion 02h Ausgabe <strong>eines</strong> Zeichens<br />
Durch Aufruf dieser Funktion wird ein Zeichen auf dem Standard -Ausgabegerät ausgegeben. Da dieses Gerät umgeleitet<br />
werden kann, muß das Zeichen nicht unbedingt auf dem Bildschirm ausgegeben, sondern kann auch an ein anderes Gerät<br />
oder an eine Datei gesandt werden. Wenn allerdings das Medium (Diskette, Festplatte), auf dem sich die Datei befindet,<br />
bereits voll ist, wird das von der Funktion nicht erkannt und weiterhin versucht, Zeichen in diese Datei zu schreiben.<br />
Eingabe AH = 02h<br />
DL = Code des auszugebenden Zeichens<br />
Ausgabe keine<br />
Sofern die Zeichen an den Bildschirm gesandt werden, werden die Steuercodes wie Backspace, Carriage Return und Line<br />
Feed als solche behandelt. Wird die Ausgabe hingegen in eine Datei umgeleitet, werden sie dort als ganz normale ASCII-<br />
Codes gespeichert.<br />
Nach der Ausgabe des Zeichens testet DOS, ob in der Zwischenzeit ein Control-C-Zeichen (ASCII-Code 3) empfangen bzw.<br />
eingegeben wurde. In diesem Fall wird der Interrupt 23h aufgerufen.<br />
Der Inhalt von AL wird verändert.<br />
Interrupt 21h, Funktion 03h Empfang <strong>eines</strong> Zeichens von der seriellen Schnittstelle<br />
Durch Aufruf dieser Funktion wird ein Zeichen von der seriellen Schnittstelle eingelesen. Dabei wird auf das Gerät mit der<br />
Bezeichnung AUX bzw. COM1 zugegriffen.<br />
Eingabe AH = 03h<br />
Ausgabe AL = Empfangenes Zeichen<br />
Kehrt erst zum aufrufenden Programm zurück, nachdem ein Zeichen empfangen wurde !!!<br />
Da die serielle Schnittstelle über keinen internen Puffer verfügt, kann es sein, daß sie schneller Zeichen empfängt, als durch<br />
den Aufruf dieser Funktion ausgelesen werden können. Diese Zeichen gehen dann verloren.<br />
Die Kommunikationsparameter (Baud-Rate, Anzahl der Stop-Bits etc.) müssen zuvor über den MODE-Befehl eingestellt<br />
werden. DOS gibt sonst als Default-Werte eine Baud-Rate von 2400 bei einem Stop-Bit ohne Paritätsprüfung und einer<br />
Datenlänge von 8 Bits vor. (z.B. < MODE com1: 96,n,8,1 -> COM1 auf 9600 Bd, keine Parität, 8 Datenbit, 1 Stopbit )<br />
Anstelle dieser Funktion sollte besser auf die Funktionen des BIOS zum Zugriff auf die serielle Schnittstelle zurückgegriffen<br />
werden. Sie sind über den Interrupt 14h aufrufbar und bieten eine größere Flexibilität als die DOS-Funktionen, zumal mit<br />
ihrer Hilfe auch der Status der seriellen Schnittstelle abgefragt werden kann.<br />
Wird ein Control-C-Zeichen (ASCII-Code 3) empfangen, wird der Interrupt 23h aufgerufen.<br />
Der Inhalt der Register AH, BX, CX, DX, SI, DI, BP, CS, DS, SS, ES und des Flag-Registers wird durch diese Funktion<br />
nicht verändert.<br />
Interrupt 21h, Funktion 04h Ausgabe <strong>eines</strong> Zeichens auf die serielle Schnittstelle<br />
Durch Aufruf dieser Funktion wird ein Zeichen auf die serielle Schnittstelle ausgegeben. Dabei wird auf das Gerät mit der<br />
Bezeichnung AUX bzw. COM1 zugegriffen.<br />
Eingabe AH = 04h<br />
DL = Auszugebendes Zeichen<br />
Ausgabe keine<br />
Das Zeichen wird erst ausgegeben, wenn das Gerät, das das Zeichen empfangen soll, signalisiert, daß es zum Empfang bereit<br />
ist. Erst danach wird die Kontrolle an das aufrufende Programm zurückgegeben.!!!