Übung Assembler 1 - Aufgabe 2

Entwickle mit dem Tool DEBUG ein COM-Programm, welches wiederholt jeweils ein Zeichen ohne Echo von der Standardeingabe einliest, und über die Standardausgabe ausgibt. Alle anderen Zeichen (außer den beiden nachfolgend genannten) sind zu ignorieren.

Im Falle der Betätigung einer Sondertaste (liefern zwei Zeichen in den Tastaturpuffer; ASCII-Code des ersten Zeichens: 00) wird die Zeichenfolge SONDERTASTE über die Standardausgabe ausgegeben. Dabei ist darauf zu achten, das auch das zweite Zeichen durch erneuten Aufruf der DOS-Funktion "Einlesen Zeichen von der Standardeingabe ohne Echo" (DOS-Funktionscode: 08) aus dem Tastaturpuffer abgeholt wird. Durch Eingabe des Zeichens Escape (ASCII-Code: 1B) soll das COM-Programm beendet werden.

Dem "Hacken" mit DEBUG muss eine sinnvolle Aufteilung des erforderlichen Programmcodes in Hauptprogramm und Unterprogramme sowie die Erstellung eines sinnvollen Speicherlayouts für den Programmcode und die Daten (Zeichenketten) vorangehen. Niemals dürfen die Daten (Zeichenketten) zur Laufzeit des Programms als Befehle interpretiert werden, d.h. niemals darf das Registerpaar CS:IP zur Laufzeit des Programms auf die Daten (Zeichenketten) zeigen.

Unterprogramme werden ausschließlich per CALL-Befehl aufgerufen und ausschließlich per RET-Befehl verlassen. Jedes Unterprogramm besitzt genau eine Einsprungstelle (Aufruf des Unterprogramms per CALL-Befehl) und genau eine Aussprungstelle (Verlassen des Unterprogramms per RET-Befehl). Der CALL-Befehl sichert jene Rücksprungadresse auf dem Stack (PUSH-Operation auf das IP-Register), die es dem RET-Befehl erlaubt, zum Aufrufer zurück zu kehren (POP-Operation auf das IP-Register).

Stand: 14.11.2005 (Birger Wolter)