Dr. Thomas Wolff

TGI Ü Termin 4: Assembler-Programmierung: Ausgabe von Strings und Hexadezimalzahlen

Einführung

Benutze den Desktop-Link DOSBox, um ein Kommandofenster zu öffnen, das die 16-Bit-MSDOS-Umgebung emuliert und die benötigten Programme im Pfad hat (also auf sie zugreifen kann). (Bei Bedarf den Link aus Verzeichnis L:\TGI\Desktop kopieren.) Beachte: Um das DOSBox-Fenster zu verlassen, muss Alt+TAB gedrückt werden.

Gib ein "Hallo Welt"-Programm ein (oder kopiere es). Lege die Programmdatei auf dem Netzwerk-Home-Laufwerk (H:) ab.

Editiere das Programm mit einem Texteditor, z.B.:

Achtung: Falls eine Änderung (Dateiinhalt, neue Datei), die außerhalb der DOSBox vorgenommen wurde, in der DOSBox noch nicht sichtbar ist, muss eine neue DOSBox gestartet werden!

Assembliere (Übersetze) das Programm mit dem Netwide Assembler:
Überprüfe mit dem Kommando dir, dass im aktuellen Verzeichnis die übersetzte Programmdatei abgelegt wurde:
Starte das Programm:
Achtung: Der Assembler (nasm) mag alte "MSDOS"-Namen, die vor dem Punkt max. 8 Zeichen (und kein Leerzeichen) haben; die Endung darf max. 3 Zeichen haben (vorzugsweise .asm). Das gilt auch für Verzeichnisnamen, z.B. kann nasm im Verzeichnis "Eigene Dateien" nicht arbeiten.

Aufgabe 1

Das Programm soll Routinen zur Zahlenausgabe eines Registerinhalts enthalten. Implementiere die Hexadezimal-Ausgabe.

Variiere das Programm (andere Werte, Strings, zusätzliche Operationen und Ausgaben).

Vergleiche die Hexadezimal-Ausgabe-Routine, insbesondere die Fallunterscheidung dezimal/hexadezimal, mit der Version von der Tafel. Implementiere beide Alternativen.

Aufgabe 2

Die Beispiel-Routine zur Hexadezimal-Ausgabe eines Worts teilt die Funktion in die Ausgabe zweier Bytes, dieses wird dann wiederum in die Ausgabe zweier halber Bytes als Ziffern unterteilt.

Spare die mittlere dieser drei geschachtelten Funktionsebenen ein, indem ein Wort gleich in 4 Schritten als 4 Ziffern ausgegeben wird.

Aufgabe 3

Schlage in der Befehlsübersicht die Befehle zur Multiplikation und Division nach und erprobe diese in ihrer 8-Bit-Version und der 16-Bit-Version.