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 - 33 - Prof. Dipl.-Ing. Komar<br />
7.2.3 DEBUG - Assemblierung aus einer Textdatei<br />
Die direkte Eingabe von Assemblerbefehlen in DEBUG ist nur für kurze Programmtests handhabbar.<br />
Komfortabler ist es, die Quelltexte ( als ASCII-Datei !!! ) mit einem Texteditor (z.B. DOS - EDIT ) zu<br />
erstellen und aus einer Quelldatei in einem DEBUG-Durchlauf zu übersetzen.<br />
In der Quelldatei müssen die steuernden DEBUG-Anweisungen neben den Assemblerbefehlen so enthalten sein,<br />
als würde man direkt in DEBUG arbeiten.<br />
Dann wird der Debugger unter Verwendung der DOS–I/O–Umleitung gestartet. Und zwar wird die Eingabe für<br />
DEBUG von der Tastatur auf die Quelldatei umgeleitet und die von DEBUG erzeugte Text -Ausgabe wird nicht<br />
auf den Bildschirm sondern in eine Ausgabedatei geschrieben.<br />
> DEBUG < VERSION.ASM > VERSION.LST<br />
VERSION.ASM steht für die Quelldatei, während in VERSION.LST alle Meldungen während der Assem -<br />
blierung gespeichert werden. Damit liest DEBUG die Eingaben nicht mehr von der Tastatur, sondern aus der<br />
Datei VERSION.ASM. Die Textausgaben werden in die zweite Datei (VERSION.LST) umgeleitet.<br />
Interessant ist in diesem Zusammenhang noch eine undokumentierte Eigenschaft von DEBUG. Normalerweise<br />
lassen sich in DEBUG keine Kommentare eingeben. Ist jedoch der ASSEMBLE-Befehl aktiv, akzeptiert<br />
DEBUG Kommentarzeilen. Alle Texte mit einem vorangestellten Semikolon werden als Kommentar betrachtet<br />
und überlesen. Lediglich bei DB- und DW-Anweisungen erfolgt eine Fehlermeldung, so daß DEBUG hier keine<br />
Kommentare akzeptiert.<br />
Im folgenden Programmbeispiel bewirkt die erste " A CS:100" Anweisung, daß DEBUG den hinter Semikolons<br />
erzeugten Kommentarkopf überliest.<br />
Die Daten werden in den Bereich ab CS:200 assembliert. Dies geschieht im Beispiel durch die ORG–Anwei –<br />
sungen (ORG = Origin ) hinter deren Offset-Adresse die jeweiligen Textstrings im ASCII-Code plaziert werden.<br />
Um den DEBUG-Assembliermodus zu verlassen, muß eine Leerzeile eingegeben werden, damit deren RETURN<br />
- Zeichen das aktive A-Kommando abbricht<br />
Wichtig ist daher auch, daß in einem Block mit Assembleranweisungen keine Leerzeilen auftreten, da diese<br />
auch den ASSEMBLE-Mode beenden.<br />
Mit der W - Anweisung lassen sich 200h Byte ab CS: 100 speichern. Die Sequenz:<br />
N name.COM<br />
R BX<br />
0 ??????<br />
R CX<br />
200 ??????<br />
W<br />
Q<br />
ist deshalb in jedem Quellprogramm, getrennt durch eine Leerzeile, an den Assemblercode anzuhängen.<br />
Eine Debug-Assemblierung aus einer Textdatei könnte bei Verwendung des DOS-Editors EDIT folgenden<br />
Ablauf haben.<br />
> edit VERSION.ASM ; Erstellen der Textdatei in EDIT<br />
> debug VERSION.LST ; DEBUG-Aufruf mit Umleitungen<br />
> more VERSION.LST ; Listing am Bildschirm ansehen ( Fehler u. Adressen )<br />
> debug VERSION.COM ; in DEBUG testen oder mit G starten<br />
> VERSION ; fehlerfreies Programm von Kommandoebene aufrufen<br />
Mit mehrmaligem Durchläufen von edit–debug–more–edit... lassen sich die Fehler beseitigen und vor allem<br />
die tatsächlichen absoluten Adressen einfach ermitteln ( denn symbolische Adressierung mit Labeln ist im<br />
DEBUG-Assembler nicht möglich ).<br />
Dazu setzt man Schätzwerte in die benötigten Adresswerte der Sprungbefehle oder Unterprogrammaufrufe und<br />
startet den ersten DEBUG-Assemblierlauf, sucht mit dem more-Befehl aus der name.LST - Datei die<br />
tasächlichen Adressen, fügt mit dem Editor edit diese Adressen in der Quelltextdatei name.ASM ein und startet<br />
einen erneuten DEBUG-Assemblierlauf.