18.12.2012 Aufrufe

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.!!!

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!