MDEBUG V2.05 - Beschreibungen Letzter Update: November 1992 Bernd Schemmer Diese Datei enthlt beispielhafte Texte zur Beschreibung von MDEBUG in Mailboxen oder in Shareware-Katalogen. Programm Information Archiv-Name: Falls Sie MDEBUG in einen einzigen Archiv gepackt vertreiben (z.B. in Mailboxen) benutzen Sie bitte folgenden Namen fr das Archiv: MD_V205D.ZIP (bzw. die entsprechende Extension fr andere Packer) Programm Name, Kategorie: Programm Name: MDEBUG Version: V2.05 Kategorien: Programmier Utilities, Debugging Tools, TSR Disassembler, Speicher Monitor, Interpreter Betriebssystem-Erweiterung Bentige Hard- und Software: MDEBUG bentigt zwischen 16 und 50 K Speicher fr den residenten Teil (zum Installieren von MDEBUG werden 64 K freier Speicher bentigt) und MS-DOS bzw. PC-DOS Version 3.0 oder hher Beschreibungen von MDEBUG V2.05 fr Shareware-Kataloge und Mailbox-Listen: Kurztext (1 Zeile): MDEBUG V2.05 - Speichermonitor incl. Disassembler (TSR) von Bernd Schemmer Kurztext (formatiert, 2 Zeilen): MDEBUG V2.05 ist ein speicherresidentes Debugging-Tool bestehend aus einem Speichermonitor, einem Interpreter und einem Disassembler von Bernd Schemmer. Kurztext (formatiert, 3 Zeilen): MDEBUG V2.05 ist ein speicherresidentes Debugging-Tool bestehend aus einem Speichermonitor, einem Interpreter mit eigener Programmiersprache und einem interaktiven und selektiven Disassembler. Autor: Bernd Schemmer Langtext (formatiert, ca. 300 Zeilen): MDEBUG V2.05 Release 01.12.1992 (c) 1988 - 1992 Bernd Schemmer Kurzbeschreibung von MDEBUG MDEBUG ist ein speicherresidentes Debugging-Tool fr PCs unter MS/ PC-DOS. MDEBUG enthlt einen Speichermonitor, einen Interpreter mit eigener Programmiersprache und einen interaktiven und selektiven Disassembler. MDEBUG wurde ursprnglich fr die Ermittlung von undokumentierten Strukturen des Betriebssystems DOS entwickelt, kann aber vielfltig eingesetzt werden. (z.B. zur Untersttzung bei der Programmierung). MDEBUG richtet sich vor allen an Programmierer/innen mit gutem bis sehr gutem Wissen ber ihren PC und dem Betriebssystem MS-DOS bzw. PC-DOS (und an die, die es noch werden wollen). Hardware- und Software-Vorraussetzungen fr MDEBUG MDEBUG luft auf jedem IBM-kompatiblen PC/XT/AT/386er. Untersttzt werden alle Graphikkarten in allen Modi mit 80 oder mehr Spalten pro Zeile und 25 oder mehr Zeilen pro Seite. Unter Zuhilfename von Bildschirmtreibern kann MDEBUG auch in den Graphikmodi der einzelnen Graphikkarten aufgerufen werden. MDEBUG bentigt nur 16 K Speicher fr den residenten Teil (ohne Online-Hilfe und Disassembler), fr die Installation werden 64 K freier Speicher bentigt. MDEBUG bentigt MS-DOS bzw. PC-DOS ab Version 3.0. Einsatzgebiete fr MDEBUG Da MDEBUG speicherresident ist, kann es vorzglich zur Unter- sttzung von anderen Debuggern eingesetzt werden. Zum Testen von eigenen Programmen stellt MDEBUG ber den User-Interrupt ein Inter- face zum gezielten Aufruf von MDEBUG und zur Manipulation der internen Daten von MDEBUG zur Verfgung. MDEBUG gestattet auch den Aufruf ber jeden beliebigen Interrupt. MDEBUG kann gezielt zur Inspektion und nderung von Speicher- bereichen im Hauptspeicher eingesetzt werden (z.B. zur nderung der Daten im BIOS-Segment oder zur nderung der DOS-internen Datenstrukturen). Damit hierdurch nicht jeder Benutzer Unfug anrichten kann, kann MDEBUG durch ein (jederzeit ein- und ausschaltbares) Passwort geschtzt werden. MDEBUG ist ber Parameter vllig frei konfigurierbar (z.B. Hotkey, Farbeinstellungen, User-Int, Fensterpositionen, etc). Die aktuellen Einstellungen einer residenten Version von MDEBUG knnen ebenfalls jederzeit gendert werden. Selbst die Tastenbelegung von MDEBUG kann den eigenen Wnschen bzw. der vorhandenen Hardware angepasst werden. Dokumentation und Online-Hilfe MDEBUG wird mit einer ausfhrlichen Ondisk-Dokumentation geliefert. Diese beinhaltet neben der vollstndigen Beschreibung von MDEBUG auch eine ausfhrliche Auflistung der Interna von MDEBUG und die vollstndige Dokumentation der Interfaces von MDEBUG (User-Int, Bildschirmtreiber und Kommandotreiber, s.u.). Die Dokumentation enthlt zudem umfangreiche Beispiele fr die Mglichkeiten von MDEBUG. Fr die Hilfestellung whrend der Benutzung besitzt MDEBUG eine leistungsfhige Online-Hilfe. Der Monitor von MDEBUG Aufbau des Monitorfensters von MDEBUG: MDEBUG V2.05 [b*]ͻ DS:SI Adr.: 23B9:2BCE SE: 23B9 OF: 2BCE Suchen: HelpPC., Offset: 2BCE [= 48h = #072 = 'H']Ķ 2BCE 48 65 6C 70 50 43 2E 4E 44 58 2C 20 69 73 20 48 HelpPC.NDX, is H 2BDE 4C 50 20 76 61 72 69 61 62 6C 65 20 73 65 74 3F LP variable set? 2BEE 20 48 45 4C 50 50 43 2E 4E 44 58 20 4D 61 69 6E HELPPC.NDXMain FS:FO => 561A:EBB5 EBB5 48 65 6C 70 2E 2E 20 20 20 20 20 20 20 20 20 6A Help.. j EBC5 6D 70 20 50 72 6F 67 45 72 72 6F 72 2E 2E 3B 20 mp ProgError..; EBD5 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ---------------- EBE5 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2E 2E 6C 31 ------------..l1 [ (c) Bernd Schemmer 1988 - 1992 ]ͼ Der Monitor von MDEBUG arbeitet mit zwei unabhngigen Fenstern zur Anzeige von Speicherinhalten. Die Gre der Fenster ist dabei frei variierbar und die angezeigten Speicherbereiche knnen beliebig gescrollt werden. Angezeigt wird der Speicherinhalt jeweils in hexadezimaler Darstellung und in ASCII-Darstellung. Die Register, aus denen die Startadresse des ersten Monitor-Fensters ermittelt werden sollen, knnen frei bestimmt werden (z.B. DS:SI, DX:AX). Die Anzeige des Monitors wird von MDEBUG laufend (!) aktualisiert - auch bei der Eingabe von Befehlen im Interpreter und falls keine Eingabe erfolgt. Die laufende Aktualisierung ist natrlich auch abschaltbar. Der Monitor gestattet die Anzeige und Vernderung von beliebigen RAM-Bereichen im ersten Megabyte des Speichers des PCs. (im Hex- oder im ASCII-Modus). Die Suche von bestimmten Zeichenketten ist ebenfalls mglich (incl. Verwendung von Jokern im Suchstring). Auerdem sind im Monitor (u.a.) verschiedene Befehle zum bequemen Durchlaufen von verzeigerten Listen (near, far oder die MCB- Liste) implementiert. Der Interpreter von MDEBUG Aufbau des Interpreterfensters von MDEBUG: Passwort OFF MDEBUG V2.05 [UqI]ͻ Befehl: MĶ CS: 31DD Register ķ 1 0EB0:0000 LASTBUF RĴ AX = 0500 BX = 0000 CX = 0A0D DX = FFFF 2 0974:0000 1. MCB 1 0080 SI = 00D3 DI = 00D3 DS = 022C ES = 022C 3 022C:7420 1. DPB 2 31DD BP = 2DB2 SS = 022C SP = 09F6 4 022C:0098 SDL 3 D061 Flags = ....__I____A__._ 5 0070:01A4 CLOCK 4 0000 R0 = $0000000101000100 = 0144 6 0070:016E CON 5 0000 R8 = #24930 (+#24930) = 6162 = 'ab' 7 0DC9:0000 BUF 6 0000 Ruecksprung-Adresse = 022C:3FEE 8 0F13:0000 PRet 7 0000 Busy-Flag = 01 DIB = 022C:001E 9 0A08:0000 PFileT [ (c) Bernd Schemmer 1988 - 1992 ]ͼ Zur Untersttzung des Monitors besitzt MDEBUG einen leistungs- fhigen Interpreter. Im Fenster des Interpreters werden die Inhalte der Prozessor-Register und die wesentlichen Adressen aus dem DOS- Info-Block angezeigt. Auerdem werden (u.a.) die Inhalte der 9 von MDEBUG zur Verfgung gestellten Hilfsregister angezeigt wobei der Inhalt von mehreren Hilfsregistern in verschiedenen Inter- pretationen angezeigt wird. MDEBUG kann daher z.B. zur Umrechnung von Werten benutzt werden. (binr, dezimal mit Vorzeichen, dezimal ohne Vorzeichen, hexadezimal oder als ASCII-Zeichen). Fr kompliziertere Aufgaben besitzt der Interpreter eine eigene Programmiersprache mit mehr als 40 (!) Befehlen (z.B. zur Manipu- lation von Registern oder Speicherstellen, zur Berechnung von Formeln, zum Ausfhren von Maschinencode, zur Anzeige der DOS- internen Tabellen und Listen, usw). Auch die Ausfhrung von Inter- rupts ist ber MDEBUG problemlos mglich, wobei das Reentrance- Problem von MS-DOS elegant gelst ist. MDEBUG erlaubt es u.a. auch, dem unterbrochenen Prozess vernderte Registerwerte zu bergeben oder den unterbrochenen Prozess abzubrechen. ber den B-Befehl knnen zudem alle Maschinencodes des installierten Prozessor aus- gefhrt werden. MDEBUG verfgt auch ber einen sehr schnellen Befehl zur Suche von beliebigen Bytefolgen im Speicher, wobei in der zu suchenden Bytefolge auch Joker, Prefixe und Intervalle ange- geben werden knnen. Da mehrere Befehle auch auf einmal ausgefhrt werden knnen und auch Befehle zur bedingten Ausfhrung von Befehlen und zur Pro- grammierung von Schleifen (REPEAT-UNTIL, DO-WHILE, FOR-DO und Endlos-Schleifen mit Abbruchmglichkeit) vorhanden sind, knnen auch kleinere 'Routinen' erstellt und ausgefhrt werden. Zur Verkettung von mehreren Befehlszeilen knnen Befehlszeilen auch in beliebigen Speicherbereichen gesichert und spter aus diesen heraus restauriert und ausgefhrt werden. Explizite Werte knnen in allen Formaten mit einer Basis zwischen 2 und 16 (z.B. binr, octal, dezimal oder hexadezimal) oder auch als String eingegeben werden. Natrlich knnen auch Ausdrcke benutzt werden. Fr Ausdrcke sind folgende Operatoren implementiert: - arithmetisch: +, -, /, *, \ (MODULO), - logisch: & (AND), | (OR), ! (XOR) , (SHIFT LEFT), (SHIFT RIGHT) <, >, =, % (Teste Bit) In Ausdrcken knnen maximal 5 Klammerebenen verwendet werden. Erweiterungen von MDEBUG ber Kommandotreiber MDEBUG gestattet es, die Tastenbelegung und die Befehle ber Kommandotreiber beliebig umzudefinieren bzw. neue Tastenbelegungen und Befehle zu implementieren. Zur Shareware-Version von MDEBUG werden schon mehrere Kommando- treiber mitgeliefert. Der auch schon in der Shareware-Version enthaltene Kommandotreiber MDHISDRV.COM stellt z.B. eine History-Funktion fr MDEBUG zur Verfgung. Er gestattet es zudem 10 Tasten jeweils mit einer Befehlszeile fr MDEBUG zu belegen. Selbstverstndlich knnen die Befehlszeilen und die Puffer von MDHISDRV auch in einer Datei gesichert und spter wieder eingelesen werden. Der Disassembler von MDEBUG Aufbau des Disassemblerfensters von MDEBUG: MDDISDRV V2.05 Ziel-CPU: V20/ 8087 [inst. CPU: V20/-----]ͻ 1 2E16:2646 3C 41 CMP AL,041 ;='A' = 65 =0100_0001xB [ 8086]+ 2E16:2648 72 FA JB 02644 [ 8086]+ 2E16:264A 3C 5A CMP AL,05A ;='Z' = 90 =0101_1010xB [ 8086]+ 2E16:264C 77 F6 --> JA 02644 [ 8086]+ 2E16:264E 2C 41 SUB AL,041 ;='A' = 65 =0100_0001xB [ 8086]+ 2E16:2650 53 PUSH BX [ 8086]+ 2E16:2651 BB DC 11 MOV BX,011DC ;= 4572 [ 8086]+ 2E16:2654 D7 XLAT [ 8086]+ 2E16:2655 5B POP BX [ 8086]+ 2 2E16:2656 F8 CLC [ 8086]+ akt. Stack-Element: 4 Disp. Code: A Daten: A [BPuWRfapK][lpt1, 55]Ķ 2E16:24D0 2E16:2525 3DE2:8128 475C:A1DF Register: CS: 2E16 DS: 59B5 ES: 59B5 SS: 59B5 GS: 0000 FS: 0000 HB: 0000 Ķ 2E16:2644 F9 STC [ 8086]+ 2E16:2645 C3 RET [ 8086]+ < Tastenbelegung > [ (c) Bernd Schemmer 1991 - 1992 ]ͼ Der ebenfalls schon in der Shareware-Version enthaltene Kommando- treiber MDDISDRV.COM stellt einen interaktiven und selektiven Disassembler fr MDEBUG zur Verfgung. D.h. mit MDEBUG und MDDISDRV kann jederzeit beliebiger Code im Speicher berprft werden. MDDISDRV beherrscht alle Opcodes der Prozessoren 8086/8088, 80186/ 80188, 80286 (incl. der Opcodes fr den Protected Mode), 80386, des V20/V30 (incl. der Opcodes, die nur von diesen Prozessoren beherrscht werden) und alle Opcodes der CoProzessoren 8087, 80287 und 80387. Im Gegensatz zu anderen Disassemblern knnen der Prozes- sor und der Coprozessor fr die disassembliert werden soll beliebig gewhlt werden (daher 'selektiv'). Neben einer komfortablen Bedienung bietet MDDISDRV selbstverstnd- lich auch die Mglichkeit, disassemblierten Code in eine Datei zu sichern. Hierfr stehen mehrere Formate zur Verfgung, u.a. ein Format in dem die Datei mit dem disassemblierten Code direkt ohne nderungen als Eingabedatei fr den A86 benutzt werden kann. MDDISDRV ermglicht es auch, beliebige Datenbereiche im Dump-Format und im Data-Format (meint 'db nn,nn,...'-Zeilen) in eine Datei zu schreiben bzw. auf den Drucker auszugeben. Weitere Features von MDDISDRV: - Online-Hilfe - belegt nur ca. 17 K Speicher - direkte Anzeige von Speicherstellen, die durch einen Befehl gele- sen oder verndert werden, wobei Segment-Prefixe bercksichtigt werden. - Befehle mit impliziten oder expliziten Sprungziel (z.B. CALL nn, JMP nn, INT nn, INTO, etc.) knnen mit einem Tastendruck verfolgt werden. Mittels eines eigenen Adressen-Stacks kann die Rckkehr ebenfalls ber einen einzigen Tastendruck erfolgen. - Adressen aus Befehlen (Speicheroperanden oder Sprungziele) knnen absolut oder IP-relativ ausgegeben werden. - Ermglicht die Suche von Befehlen, die auf eine Speicherstelle zugreifen. - Ermglicht die Suche von Befehlen, die eine Routine/Adresse auf- rufen. - Ausgabe des Prozessors, der fr einen Befehl mindestens ntig ist - MDDISDRV behandelt alle Opcodes wie die aktuelle Ziel-CPU (auch Opcodes mit unmglichen Operanden, Opcodes mit Prefixbytes, unbe- kannte ESC-Opcodes und undokumentierte Opcodes) - Disassemblieren des Codes einer Interrupt-Routine durch Eingabe der Nummer des Interrupts mglich - untersttzt bis zu 9 (virtuelle) Drucker Unterschiede zwischen der Shareware- und der Vollversion In der Vollversion kann die Shareware-Meldung beim Installieren von MDEBUG entfernt werden. Zudem knnen in der Vollversion die Vor- einstellungen fr die Parameter gendert werden. Die Vollversion enthlt daneben noch mehrere Utilities fr die Arbeit mit MDEBUG (u.a. zwei Programme zum Erstellen und Testen von neuen Hilfstext- dateien fr die Onlinehilfe) und die kommentierten Quelltexte fr jeweils einen Kommando- und einen Bildschirmtreiber. Die Vollversion kostet 75,- DM (+ 6,- DM Portokosten). Ŀ MDEBUG gibt Ihnen die volle Kontrolle ber Ihren PC - jederzeit! ٰ