Übung 2 am 02.05.2005 - (späteste) Abgabe am 18.05.2005 - in RZ2
Ergänze zunächst die in Übung 1 begonnene Toolbox um folgende drei Routinen :
- Eingabe einer 16-bittigen ganzen Zahl mit Vorzeichen in dezimaler Form über die Standardeingabe.
Wie bereits in der ersten Übung erfolgt der Datentransfer via geeignet zu definierendem Register.
Ungültige Tastendrücke sollen ignoriert werden, d.h. die per DOS-Funktion 08 ohne Echo eingelesenen Zeichen werden sofort verarbeitet und dabei ggfs. per DOS-Funktion 02 als Echo über die Standardausgabe ausgegeben.
Eventuell entstehende Zahlenüberläufe wie z.B. 32768 dürfen ignoriert werden.
Die Eingabe wird mit der CarriageReturn-Taste beendet.
- Ausgeben einer Zeichenkette per DOS-Funktion 09. Der Pointer (Segment- und Offsetadresse) auf einen geeigneten Speicherbereich wird dem Unterprogramm per Registerpaar DS:BX übergeben. Lösungen, die deutlich mehr als zehn Zeilen aufweisen, sollten noch einmal überdacht werden :-)
- Einlesen einer Zeichenkette per DOS-Funktion 10 (dezimal) bzw. 0A (hexadezimal). Der Pointer (Segment- und Offsetadresse) auf einen geeigneten Speicherbereich wird dem Unterprogramm per Registerpaar DS:BX übergeben. Das nach der Eingabe im Speicherbereich vorhandene CarriageReturn-Zeichen ist durch ein Dollarzeichen zu ersetzen. Auch hier gilt : Lösungen, die deutlich mehr als zwanzig Zeilen aufweisen, sollten noch einmal überdacht werden :-)
Die Toolbox findet für diese Übung Anwendung in einem zu entwickelnden Assembler-Programm zur Berechnung (und Ausgabe) des ganzzahlig kaufmännisch gerundeten arithmetischen Mittels für eine beliebige Anzahl einzulesender ganzzahliger positiver Messwerte.
Die Messwerterfassung endet bei Eingabe einer beliebigen ganzzahligen negativen Zahl.
Nach jeweils fünf eingegebenen Zahlen erfolgt die Ausgabe einer Trennzeile, deren Inhalt beim Programmstart über die Standardeingabe eingelesen wird.
Bitte beachtet die folgenden Randbedingungen :
- Registerinhalte dürfen im Unterprogramm zwar verändert werden, müssen aber - sofern sie nicht zur Aufnahme der Ergebnisse dienen - am Ende des Unterprogramms auf diejenigen Werte zurückgesetzt werden, die sie beim Start des Unterprogramms enthielten.
- Die Toolbox soll weder ein eigenes Datensegment enthalten, noch soll auf globale Variablen des Aufrufers zurückgegriffen werden.
Eine alternative Formulierung bezüglich der Dezimalzahlen-Eingabe befindet sich in der Aufgabenstellung SoSe 2001.