6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
6. Funktionseinheiten eines Computers / Mikrocomputers
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Rechnergrundlagen Teil 2 - 39 - Prof. Dipl.-Ing. Komar<br />
Interrupt 21h, Funktion 08h Zeicheneingabe ohne Ausgabe<br />
Ein Zeichen wird vom Standard -Eingabegerät gelesen, ohne allerdings auf dem Standard -Ausgabegerät ausgegeben zu<br />
werden. Steht zum Zeitpunkt des Funktionsaufrufs kein Zeichen zur Verfügung, wartet die Funktion, bis ein Zeichen<br />
verfügbar ist.<br />
Da die Standard -Eingabe auf ein anderes Gerät oder auf eine Datei umgeleitet werden kann, muß das eingelesene Zeichen<br />
nicht unbedingt der Tastatur entstammen. Werden die übergebenen Zeichen einer Datei entnommen, so gibt es für das<br />
aufrufende Programm keine Möglichkeit festzustellen, ob bereits alle Zeichen aus dieser Datei ausgelesen sind, das<br />
Dateiende also schon erreicht ist.<br />
Eingabe AH = 08h<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 />
Wird bei Aufruf dieser Funktion ein Control-C-Zeichen entdeckt, 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 09h Ausgabe einer Zeichenkette<br />
Durch Aufruf dieser Funktion wird eine Zeichenkette auf dem Standard -Ausgabegerät ausgegeben. Da dieses Gerät auf ein<br />
anderes Gerät oder in eine Datei umgeleitet werden kann, besteht keine Gewähr, daß die Zeichenkette auf dem Bildschirm<br />
erscheint. Falls die Ausgabe in eine Datei umgeleitet wird, besteht für das aufrufende Programm keine Möglichkeit<br />
festzustellen, ob das Medium (Diskette, Festplatte), auf dem sich die Datei befindet, bereits voll ist und dadurch die<br />
Zeichenkette nicht mehr in die Datei geschrieben werden kann.<br />
Eingabe AH = 09h<br />
DS:DX = FAR-Zeiger auf die Zeichenkette<br />
Ausgabe keine<br />
Die Zeichenkette muß im Speicher als eine Folge von Byte gespeichert sein, die jeweils den ASCII-Code des auszugebenden<br />
Zeichens enthalten. Das Ende der Zeichenkette wird dem DOS durch ein $-Zeichen (ASCII-Code 36) signalisiert.<br />
Enthält die Zeichenkette Steuercodes wie Backspace, Carriage Return oder Line Feed, werden diese auch als solche<br />
behandelt.<br />
Nur der Inhalt des AL-Registers wird durch den Aufruf dieser Funktion verändert.<br />
Interrupt 21h, Funktion 0Ah Eingabe einer Zeichenkette mit Ausgabe<br />
Durch Aufruf dieser Funktion wird eine bestimmte Anzahl von Zeichen von dem Standard -Eingabegerät eingelesen, in einen<br />
Puffer übertragen und auf dem Standard -Ausgabegerät ausgegeben. Die Ausführung der Funktion wird beendet, sobald der<br />
Tastencode der [Return]-Taste (13) empfangen wird. Der Code dieser Taste wird dann als letztes Zeichen in den Puffer<br />
eingetragen. Da die Standard -Eingabe von der Tastatur auf ein anderes Gerät oder auf eine Datei umgeleitet werden kann,<br />
müssen die eingelesenen Zeichen nicht unbedingt der Tastatur entstammen. Werden die übergebenen Zeichen einer Datei<br />
entnommen, so gibt es für das aufrufende Programm keine Möglichkeit festzustellen, ob bereits alle Zeichen aus dieser Datei<br />
ausgelesen sind, das Dateiende also schon erreicht ist.<br />
Eingabe AH = 0Ah<br />
DS:DX = FAR-Zeiger auf den Puffer<br />
Ausgabe keine<br />
Das erste Byte des Puffers muß vor dem Funktionsaufruf mit der maximalen Anzahl von Zeichen geladen werden, die<br />
eingelesen werden dürfen (inklusive des Carriage Return am Ende).<br />
In das zweite Byte des Puffers trägt DOS nach Beendigung der Eingabe die Anzahl der eingelesenen Zeichen ohne das<br />
Carriage Return ein. Erst danach folgen die eingelesenen Zeichen. Der Puffer muß damit mindestens Platz für die<br />
angegebene Maximalzahl von Zeichen plus zwei Byte bieten.<br />
Ist die vorletzte Speicherstelle des Puffers erreicht, wird bei der Eingabe von weiteren Zeichen ein Piepston ausgegeben und<br />
nur noch das Return -Zeichen als Abschluß der Eingabe akzeptiert.<br />
Erweiterte Tastatur-Codes belegen im Puffer 2 Byte. Das erste Byte enthält den Code 0 und das zweite den Code der<br />
erweiterten Taste. Wird während der Eingabe ein Control-C-Zeichen entdeckt, wird der Interrupt 23h aufgerufen.<br />
Die Eingabe kann mit Hilfe der Backspace- und der Cursor-Tasten editiert werden, ohne daß diese Tasten im Puffer<br />
abgespeichert werden.<br />
Der Inhalt der Prozessor-Register wird durch diese Funktion nicht verändert. Dies gilt auch für das Flag-Register.