18.12.2012 Aufrufe

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

6. Funktionseinheiten eines Computers / Mikrocomputers

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 - 29 - Prof. Dipl.-Ing. Komar<br />

7.2.2 Arbeiten mit DOS-DEBUG<br />

Nach dem Aufruf des Programms meldet sich der Kommandointerpreter mit dem typischen Prompt-Zeichen “–“<br />

Das Debug-Programm kann mit dem Kommando q verlassen werden.<br />

Um direkt mit einem bereits vorhandenen File vom Typ name.com arbeiten zu können, welches anschließend<br />

auch durch den einfachen Aufruf unter DOS ausgeführt und getestet werden kann, ist es zweckmäßig, sich ein<br />

bereits verfügbares (funktionierendes) Programm bzw. File zunächst zu kopieren, um es dann mit dem<br />

Programm DEBUG nach eigenen Wünschen zu verändern.<br />

Das File more.com, welches ebenfalls als Standardprogramm zum Umfang von DOS dazugehört, eignet sich<br />

z.B. dazu wegen s<strong>eines</strong> geringen Umfangs besonders.<br />

Es wird z.B. per<br />

> copy c:\dos\more.com c:\test.com (oder copy c:\windows \command\more.com c:\test.com)<br />

kopiert und kann per<br />

> debug test.com bearbeitet werden.<br />

Hierzu ist es wichtig zu wissen, daß in COM-Files stets ab der Adresse CS:0100h der ausführbare<br />

Maschinencode abgelegt ist und das Programm beim Aufruf unter DOS stets beginnend mit dieser Adresse<br />

gestartet wird.<br />

Der Wert von CS (Codesegment-Zeiger) ist jeweils abhängig von der nächsten freien Adresse im Speicher des<br />

Rechners. Der Wert selbst ist unerheblich, da COM -Files stets kleiner als 64 KB sein müssen und sich darin<br />

Code-, Daten - und Stackbereich befinden müssen.<br />

Bevor man z.B. mit dem Befehl a 100 ab der Startadresse ein neues Programm (an der Stelle des alten)<br />

assembliert und im Speicher ablegt, kann man sich das ursprüngliche Programm (more) zunächst mit Hilfe des<br />

Befehls u 100 in disassemblierter Form ausgeben lassen.<br />

Hat man ein eigenes Programm in dieser Weise erstellt, so kann man es einfach per Kommando w innerhalb<br />

von DEBUG auf die Festplatte bzw. Floppy, von der es gelesen wurde, zurückschreiben, das Programm DEBUG<br />

mit dem Kommando q verlassen und das Programm test per Aufruf ausführen.<br />

Ein letzter Punkt, welcher hierbei beachtet werden muß, ist der, daß als letzte Befehle stets<br />

mov ah,4c und<br />

int 21 ausgeführt werden müssen.<br />

Dieser DOS-Systemaufruf stellt sicher, daß nach der Ausführung des "neuen" COM-Files korrekt zum<br />

Betriebssystem DOS zurückgekehrt wird.<br />

Programmerstellung per DOS-DEBUG<br />

Zur Beschaffung <strong>eines</strong> DOS-Files im COM -Format wird das File more.com, welches in seiner ursprünglichen<br />

Funktion die bildschirmweise Ausgabe <strong>eines</strong> Textfiles leistet, einfach kopiert. Das kopierte Programm mit dem<br />

Namen test.com wird anschließend derart verändert, daß es lediglich das Zeichen “ 0 “ auf dem Bildschirm<br />

ausgibt und anschließend zu DOS zurückkehrt.<br />

>copy more.com test.com Kopieren des Programmes more.com nach test.com<br />

>debug test.com Aufruf des Programmes debug.com mit dem<br />

Parameter test.com<br />

-u 100<br />

44B0:0100 E8B002 CALL 03B3 Hier steht der erste Maschinenbefehl, welcher<br />

44B0:0103 7307 JNB 010C beim Aufruf von more bzw. test ausgeführt<br />

44B0:0105 E8A603 CALL 04AE wird.<br />

. . .<br />

-a 100<br />

44B0: 0100 mov dl,30 Ab dieser Stelle werden einfach neue Befehle<br />

44B0: 0102 mov ah,2 abgelegt und später per write-Kommando in<br />

44B0: 0104 int 21 das File test zurückgeschrieben.<br />

44B0 :0106 mov ah,4c<br />

44B0 :0108 int 21<br />

44B0: 010a

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!