home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sharew / mdebug / mdebug.txt < prev    next >
Encoding:
Text File  |  1992-06-30  |  16.1 KB  |  335 lines

  1.             Beschreibungen von MDEBUG V2.00 für die Kataloge
  2. ───────────────────────────────────────────────────────────────────────────────
  3. Kurztext (1 Zeile):
  4.  
  5. MDEBUG V2.00 - Speichermonitor incl. Disassembler (TSR) von Bernd Schemmer
  6.  
  7. ───────────────────────────────────────────────────────────────────────────────
  8. Kurztext (formatiert, 2 Zeilen):
  9.  
  10. MDEBUG V2.00 ist ein speicherresidentes Debugging-Tool bestehend aus einem
  11. Speichermonitor, einem Interpreter und einem Disassembler von Bernd Schemmer.
  12.  
  13. ───────────────────────────────────────────────────────────────────────────────
  14. Kurztext (formatiert, 3 Zeilen):
  15.  
  16. MDEBUG V2.00 ist ein speicherresidentes Debugging-Tool bestehend aus einem
  17. Speichermonitor, einem Interpreter mit eigener Programmiersprache und einem
  18. interaktiven und selektiven Disassembler. Autor: Bernd Schemmer
  19.  
  20. ───────────────────────────────────────────────────────────────────────────────
  21. Kurztext (unformatiert, 215 Zeichen):
  22.  
  23. MDEBUG V2.00 ist ein speicherresidentes Debugging-Tool bestehend aus einem Speichermonitor, einem Interpreter mit eigener Programmiersprache und einem interaktiven und selektiven Disassembler. Autor: Bernd Schemmer
  24.  
  25. ───────────────────────────────────────────────────────────────────────────────
  26. Langtext (formatiert, ca. 300 Zeilen):
  27.  
  28.  
  29.                 MDEBUG V2.00 Release 01.07.1992
  30.                 ───────────────────────────────
  31.  
  32.                 (c) 1988 - 1992 Bernd Schemmer
  33.  
  34.  
  35. Kurzbeschreibung von MDEBUG
  36. ───────────────────────────
  37.  
  38. MDEBUG ist ein speicherresidentes Debugging-Tool für PCs  unter MS/
  39. PC-DOS. MDEBUG enthält einen Speichermonitor, einen Interpreter mit
  40. mit eigener Programmiersprache und einen interaktiven u. selektiven
  41. Disassembler.
  42.  
  43. MDEBUG  wurde ursprünglich für die Ermittlung  von undokumentierten
  44. Strukturen des Betriebssystems DOS entwickelt, kann aber vielfältig
  45. eingesetzt werden. (z.B. zur Unterstützung bei der Programmierung).
  46.  
  47. MDEBUG  richtet sich vor allen an Programmierer/innen mit gutem bis
  48. sehr gutem Wissen über ihren PC und dem Betriebssystem  MS-DOS bzw.
  49. PC-DOS (und an die, die es noch werden wollen).
  50.  
  51.  
  52. Hardware- und Software-Vorraussetzungen für MDEBUG
  53. ──────────────────────────────────────────────────
  54.  
  55. MDEBUG läuft auf  jedem IBM-kompatiblen PC/XT/AT/386er. Unterstützt
  56. werden  alle  Graphikkarten in  allen Modi mit 80 oder mehr Spalten
  57. pro Zeile und 25 oder mehr Zeilen pro Seite.
  58. Unter Zuhilfename von Bildschirmtreibern  kann  MDEBUG auch  in den
  59. Graphikmodi der einzelnen Graphikkarten aufgerufen werden.
  60. MDEBUG  benötigt weniger  als 16 K Speicher für den residenten Teil
  61. (ohne Online-Hilfe und Disassembler),  für die Installation  werden
  62. 64 K freier Speicher benötigt.
  63. MDEBUG benötigt MS-DOS bzw. PC-DOS ab Version 3.0.
  64.  
  65.  
  66. Einsatzgebiete für MDEBUG
  67. ─────────────────────────
  68.  
  69. Da  MDEBUG  speicherresident  ist,  kann  es  vorzüglich zur Unter-
  70. stützung von anderen Debuggern eingesetzt werden.   Zum  Testen von
  71. eigenen Programmen stellt MDEBUG über den User-Interrupt ein Inter-
  72. face zum  gezielten  Aufruf  von MDEBUG  und  zur  Manipulation der  
  73. internen Daten von MDEBUG zur Verfügung.
  74. MDEBUG gestattet  auch den Aufruf  über jeden beliebigen Interrupt.
  75. MDEBUG  kann  gezielt  zur  Inspektion  und  Änderung von Speicher-
  76. bereichen  im Hauptspeicher  eingesetzt werden  (z.B. zur  Änderung
  77. der  Daten im  BIOS-Segment  oder  zur  Änderung  der  DOS-internen
  78. Datenstrukturen).
  79. Damit hierdurch  nicht  jeder Benutzer Unfug  anrichten  kann, kann
  80. MDEBUG  durch  ein  (jederzeit  ein-  und ausschaltbares)  Passwort
  81. geschützt werden.
  82.  
  83. MDEBUG ist über  Parameter völlig frei konfigurierbar (z.B. Hotkey,
  84. Farbeinstellungen, User-Int, Fensterpositionen, etc). Die aktuellen
  85. Einstellungen einer residenten Version von MDEBUG  können ebenfalls
  86. jederzeit geändert werden. Selbst  die  Tastenbelegung  von  MDEBUG
  87. kann den  eigenen Wünschen  bzw. der vorhandenen Hardware angepasst
  88. werden.
  89.  
  90.  
  91. Dokumentation und Online-Hilfe
  92. ──────────────────────────────
  93.  
  94. MDEBUG wird mit einer ausführlichen Ondisk-Dokumentation geliefert.
  95. Diese  beinhaltet neben der  vollständigen  Beschreibung von MDEBUG
  96. auch eine  ausführliche  Auflistung der  Interna von MDEBUG und die
  97. vollständige Dokumentation  der Interfaces  von  MDEBUG  (User-Int,
  98. Bildschirmtreiber  und  Kommandotreiber, s.u.).
  99. Die  Dokumentation  enthält  zudem umfangreiche  Beispiele  für die
  100. Möglichkeiten von MDEBUG.
  101.  
  102. Für  die  Hilfestellung  während der  Benutzung besitzt MDEBUG eine
  103. leistungsfähige Online-Hilfe.
  104.  
  105.  
  106. Der Monitor von MDEBUG
  107. ──────────────────────
  108.  
  109. Aufbau des Monitorfensters von MDEBUG:
  110.  
  111. ╔═══════════════════════════════ MDEBUG V2.00 ═══════[b*]════════════════════╗
  112. ║ DS:SI  Adr.: 23B9:2BCE  SE: 23B9 OF: 2BCE    Suchen: HelpPC.■■■,           ║
  113. ╟──────┬─ Offset: 2BCE [= 48h = #072 = 'H']───────────────┬──────────────────╢
  114. ║ 2BCE │ 48 65 6C 70 50 43 2E 4E  44 58 2C 20 69 73 20 48 │ HelpPC.NDX, is H ║
  115. ║ 2BDE │ 4C 50 20 76 61 72 69 61  62 6C 65 20 73 65 74 3F │ LP variable set? ║
  116. ║ 2BEE │ 20 48 45 4C 50 50 43 2E  4E 44 58 20 4D 61 69 6E │  HELPPC.NDXMain ║
  117. ║      │ ── FS:FO => 561A:EBB5 ────────────────────────── │                  ║
  118. ║ EBB5 │ 48 65 6C 70 2E 2E 20 20  20 20 20 20 20 20 20 6A │ Help..         j ║
  119. ║ EBC5 │ 6D 70 20 50 72 6F 67 45  72 72 6F 72 2E 2E 3B 20 │ mp ProgError..;  ║
  120. ║ EBD5 │ 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D │ ---------------- ║
  121. ║ EBE5 │ 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2E 2E 6C 31 │ ------------..l1 ║
  122. ╚══════╧══════════════[ (c) Bernd Schemmer 1988 - 1992 ]══╧══════════════════╝
  123.  
  124. Der Monitor von MDEBUG arbeitet mit zwei unabhängigen  Fenstern zur
  125. Anzeige von Speicherinhalten.  Die Größe der Fenster ist dabei frei
  126. variierbar und  die  angezeigten  Speicherbereiche können  beliebig
  127. gescrollt  werden.  Angezeigt  wird  der  Speicherinhalt jeweils in
  128. hexadezimaler Darstellung und in ASCII-Darstellung.  Die  Register,
  129. aus denen die Startadresse  des ersten  Monitor-Fensters  ermittelt
  130. werden sollen, können frei bestimmt werden (z.B. DS:SI, DX:AX).
  131.  
  132. Die Anzeige des Monitors wird von MDEBUG laufend (!) aktualisiert -
  133. auch  bei  der  Eingabe von Befehlen im Interpreter und falls keine
  134. Eingabe erfolgt.  Die  laufende Aktualisierung  ist natürlich  auch
  135. abschaltbar.
  136. Der Monitor  gestattet die Anzeige  und Veränderung  von beliebigen
  137. RAM-Bereichen im ersten  Megabyte des  Speichers des  PCs. (im Hex-
  138. oder im ASCII-Modus).   Die Suche  von bestimmten Zeichenketten ist
  139. ebenfalls möglich (incl. Verwendung von Jokern im Suchstring).
  140. Außerdem  sind im Monitor (u.a.) verschiedene Befehle zum  bequemen
  141. Durchlaufen  von  verzeigerten Listen  (near,  far  oder  die  MCB-
  142. Liste) implementiert.
  143.  
  144.  
  145. Der Interpreter von MDEBUG
  146. ──────────────────────────
  147.  
  148. Aufbau des Interpreterfensters von MDEBUG:
  149.  
  150. ╔ Passwort OFF ════════════════════ MDEBUG V2.00 ════[UqI]═════════════════════╗
  151. ║ Befehl:                                                                      ║
  152. ╟────────┬──────────────────────────────────────────────────M──────────────────╢
  153. ║CS: 31DD│ ╓─────────── Register ─────────────────────────╖ 1 0EB0:0000 LASTBUF║
  154. ║R┬──────┤ ║ AX = 0500  BX = 0000  CX = 0A0D  DX = FFFF   ║ 2 0974:0000 1. MCB ║
  155. ║1│ 0080 │ ║ SI = 00D3  DI = 00D3  DS = 022C  ES = 022C   ║ 3 022C:7420 1. DPB ║
  156. ║2│ 31DD │ ║ BP = 2DB2  SS = 022C  SP = 09F6              ║ 4 022C:0098 SDL    ║
  157. ║3│ D061 │ ║ Flags = ....__I____A__._                     ║ 5 0070:01A4 CLOCK  ║
  158. ║4│ 0000 │ ║    R0 = $0000000000000000 = 0000             ║ 6 0070:016E CON    ║
  159. ║5│ 0000 │ ║    R8 = #24930  (+#24930) = 6162 = 'ab'      ║ 7 0DC9:0000 BUF    ║
  160. ║6│ 0000 │ ║ Ruecksprung-Adresse = 022C:3FEE              ║ 8 0F13:0000 PRet   ║
  161. ║7│ 0000 │ ║ Busy-Flag = 01  DIB = 022C:001E              ║ 9 0A08:0000 PFileT ║
  162. ╚═╧══════╧═╩═══════════[ (c) Bernd Schemmer 1988 - 1992 ]═╩═╩══════════════════╝
  163.  
  164. Zur  Unterstützung  des  Monitors  besitzt MDEBUG  einen leistungs-
  165. fähigen Interpreter. Im Fenster des Interpreters werden die Inhalte
  166. der Prozessor-Register  und  die wesentlichen Adressen aus dem DOS-
  167. Info-Block  angezeigt.  Außerdem  werden (u.a.)  die Inhalte  der 9
  168. von MDEBUG zur  Verfügung  gestellten Hilfsregister angezeigt wobei
  169. der Inhalt von  mehreren  Hilfsregistern  in  verschiedenen  Inter-
  170. pretationen angezeigt wird. MDEBUG kann daher  z.B. zur  Umrechnung
  171. von  Werten benutzt werden. (binär, dezimal mit Vorzeichen, dezimal
  172. ohne Vorzeichen, hexadezimal oder als ASCII-Zeichen).
  173.  
  174. Für  kompliziertere  Aufgaben besitzt  der  Interpreter eine eigene
  175. Programmiersprache  mit mehr  als 40 (!) Befehlen (z.B. zur Manipu-
  176. lation  von  Registern  oder Speicherstellen,  zur  Berechnung  von
  177. Formeln, zum Ausführen  von  Maschinencode,  zur Anzeige  der  DOS-
  178. internen Tabellen und  Listen, usw). Auch die Ausführung von Inter-
  179. rupts  ist  über  MDEBUG problemlos  möglich, wobei das Reentrance-
  180. Problem von MS-DOS elegant gelöst ist. MDEBUG erlaubt es u.a. auch,
  181. dem  unterbrochenen  Prozess veränderte  Registerwerte zu übergeben
  182. oder  den unterbrochenen  Prozess  abzubrechen.  Über  den B-Befehl
  183. können zudem  alle Maschinencodes  des installierten Prozessor aus-
  184. geführt werden.  MDEBUG  verfügt auch  über  einen  sehr  schnellen
  185. Befehl  zur Suche von  beliebigen Bytefolgen  im Speicher, wobei in
  186. der zu suchenden Bytefolge auch Joker, Prefixe und Intervalle ange-
  187. geben werden können.
  188.  
  189. Da  mehrere  Befehle auch  auf  einmal ausgeführt werden können und
  190. auch Befehle zur  bedingten  Ausführung  von Befehlen  und zur Pro-
  191. grammierung  von  Schleifen  (REPEAT-UNTIL,  DO-WHILE,  FOR-DO  und
  192. Endlos-Schleifen  mit Abbruchmöglichkeit)  vorhanden  sind,  können
  193. auch  kleinere  'Routinen'  erstellt  und  ausgeführt  werden.  Zur
  194. Verkettung  von mehreren Befehlszeilen können Befehlszeilen auch in
  195. beliebigen Speicherbereichen gesichert und später aus diesen heraus
  196. restauriert und ausgeführt werden.
  197.  
  198. Explizite  Werte  können in allen Formaten mit einer Basis zwischen
  199. 2 und 16  (z.B.  binär, octal,  dezimal oder hexadezimal) oder auch
  200. als String  eingegeben  werden.  Natürlich  können  auch  Ausdrücke
  201. benutzt werden.
  202. Für Ausdrücke sind folgende Operatoren implementiert:
  203.  
  204. - arithmetisch:  +, -, /, *, \ (MODULO),
  205.  
  206. - logisch:       & (AND), | (OR), ! (XOR)
  207.                  «, (SHIFT LEFT), » (SHIFT RIGHT)
  208.                  <, >,  =,  ¬
  209.                  % (Teste Bit)
  210.  
  211. In Ausdrücken können maximal 5 Klammerebenen verwendet werden.
  212.  
  213.  
  214. Erweiterungen von MDEBUG über Kommandotreiber
  215. ─────────────────────────────────────────────
  216.  
  217. MDEBUG  gestattet  es,  die Tastenbelegung  und  die  Befehle  über
  218. Kommandotreiber beliebig  umzudefinieren bzw. neue Tastenbelegungen
  219. und Befehle zu implementieren.
  220. Zur Shareware-Version von  MDEBUG  werden  schon  mehrere Kommando-
  221. treiber mitgeliefert.
  222.  
  223. Der auch schon in der Shareware-Version  enthaltene Kommandotreiber
  224. MDHISDRV.COM  stellt  z.B.  eine  History-Funktion  für  MDEBUG zur
  225. Verfügung.  Er  gestattet  es  zudem  10  Tasten  jeweils mit einer
  226. Befehlszeile  für MDEBUG zu belegen. Selbstverständlich  können die
  227. Befehlszeilen  und  die Puffer  von  MDHISDRV  auch in  einer Datei
  228. gesichert und später wieder eingelesen werden.
  229.  
  230.  
  231. Der Disassembler von MDEBUG
  232. ───────────────────────────
  233.  
  234. Aufbau des Disassemblerfensters von MDEBUG:                              
  235.  
  236. ╔══ MDDISDRV V2.00 ═════ Ziel-CPU:   V20/ 8087 ══[inst. CPU:   V20/-----]══════╗
  237. 1 2E16:2646  3C 41                CMP AL,041  ;='A' = 65 =0100_0001xB [ 8086]+ ║
  238. ║ 2E16:2648  72 FA                JB 02644                            [ 8086]+ ║
  239. ║ 2E16:264A  3C 5A                CMP AL,05A  ;='Z' = 90 =0101_1010xB [ 8086]+ ║
  240. ║ 2E16:264C  77 F6           -->  JA 02644                            [ 8086]+ ║
  241. ║ 2E16:264E  2C 41                SUB AL,041  ;='A' = 65 =0100_0001xB [ 8086]+ ║
  242. ║ 2E16:2650  53                   PUSH BX                             [ 8086]+ ║
  243. ║ 2E16:2651  BB DC 11             MOV BX,011DC  ;= 4572               [ 8086]+ ║
  244. ║ 2E16:2654  D7                   XLAT                                [ 8086]+ ║
  245. ║ 2E16:2655  5B                   POP BX                              [ 8086]+ ║
  246. 2 2E16:2656  F8                   CLC                                 [ 8086]+ ║
  247. ╟─ akt. Stack-Element:  4 ── Disp. Code: A Daten: A ─[BPuWRfapK]──[lpt1, 55]───╢
  248. ║  2E16:24D0  2E16:2525  3DE2:8128  475C:A1DF                                  ║
  249. ╟─ Register:  CS: 2E16 DS: 59B5 ES: 59B5 SS: 59B5 GS: 0000 FS: 0000 HB: 0000 ──╢
  250. ║ 2E16:2644  F9                   STC                                 [ 8086]+ ╣
  251. ║ 2E16:2645  C3                   RET                                 [ 8086]+ ║
  252. ║                           < Tastenbelegung >                                 ║
  253. ╚══════════════════════[ (c) Bernd Schemmer 1991 - 1992 ]══════════════════════╝
  254.  
  255. Der  ebenfalls schon in der Shareware-Version enthaltene  Kommando-
  256. treiber  MDDISDRV.COM  stellt  einen  interaktiven  und  selektiven
  257. Disassembler für MDEBUG zur Verfügung. D.h. mit MDEBUG und MDDISDRV
  258. kann jederzeit beliebiger Code im Speicher überprüft werden.
  259. MDDISDRV beherrscht alle Opcodes der Prozessoren  8086/8088, 80186/
  260. 80188,  80286 (incl. der Opcodes  für  den Protected  Mode), 80386,
  261. des  V20/V30 (incl. der  Opcodes, die  nur von  diesen  Prozessoren
  262. beherrscht werden)  und  alle Opcodes der CoProzessoren 8087, 80287
  263. und 80387. Im Gegensatz zu anderen Disassemblern können der Prozes-
  264. sor und der Coprozessor für die disassembliert werden soll beliebig
  265. gewählt werden (daher 'selektiv').
  266.  
  267. Neben einer komfortablen Bedienung bietet  MDDISDRV selbstverständ-
  268. lich auch die  Möglichkeit, disassemblierten  Code in eine Datei zu
  269. sichern. Hierfür stehen  mehrere  Formate  zur  Verfügung, u.a. ein
  270. Format in dem die Datei mit dem disassemblierten  Code direkt  ohne
  271. Änderungen als Eingabedatei für den A86 benutzt werden kann.
  272. MDDISDRV ermöglicht es auch, beliebige Datenbereiche im Dump-Format
  273. und im Data-Format (meint 'db nn,nn,...'-Zeilen)  in  eine Datei zu
  274. schreiben bzw. auf den Drucker auszugeben.
  275.  
  276. Weitere Features von MDDISDRV:
  277.  
  278. - Online-Hilfe
  279.  
  280. - belegt nur ca. 17 K Speicher
  281.  
  282. - direkte Anzeige von Speicherstellen, die durch einen Befehl gele-
  283.   sen oder  verändert werden,  wobei Segment-Prefixe berücksichtigt
  284.   werden.
  285.  
  286. - Befehle mit impliziten oder expliziten  Sprungziel (z.B. CALL nn,
  287.   JMP nn, INT nn, INTO, etc.) können mit einem Tastendruck verfolgt
  288.   werden. Mittels eines  eigenen Adressen-Stacks kann  die Rückkehr
  289.   ebenfalls über einen einzigen Tastendruck erfolgen.
  290.  
  291. - Adressen aus Befehlen (Speicherzugriffe  oder Sprungziele) können
  292.   absolut oder IP-relativ ausgegeben werden.
  293.  
  294. - Ermöglicht die  Suche  von Befehlen, die auf  eine Speicherstelle
  295.   zugreifen.
  296.  
  297. - Ermöglicht  die Suche von Befehlen, die eine Routine/Adresse auf-
  298.   rufen.
  299.  
  300. - Ausgabe des Prozessors, der für einen Befehl mindestens nötig ist
  301.  
  302. - MDDISDRV behandelt alle  Opcodes wie die aktuelle  Ziel-CPU (auch
  303.   Opcodes mit unmöglichen Operanden, Opcodes mit Prefixbytes, unbe-
  304.   kannte ESC-Opcodes und undokumentierte Opcodes)
  305.  
  306. - Disassemblieren des Codes  einer Interrupt-Routine  durch Eingabe
  307.   der Nummer des Interrupts möglich
  308.  
  309. - unterstützt bis zu 9 (virtuelle) Drucker
  310.  
  311.  
  312. Unterschiede zwischen der Shareware- und der Voll-Version
  313. ─────────────────────────────────────────────────────────
  314.  
  315. In der Vollversion kann die Shareware-Meldung beim Installieren von
  316. MDEBUG entfernt werden. Zudem ist die Installierung von  MDEBUG mit
  317. geänderten  Voreinstellungen  für  die  Parameter  nur in der Voll-
  318. version implementiert. Die Vollversion enthält daneben noch mehrere
  319. Utilities für die  Arbeit mit  MDEBUG (u.a. Programme zum Erstellen
  320. und Testen von eigenen  Hilfstextdateien  für die  Onlinehilfe) und
  321. die kommentierten  Quelltexte für jeweils einen Kommando- und einen
  322. Bildschirmtreiber.
  323.  
  324. Die Vollversion kostet 75,- DM (+ 6,- DM Portokosten).
  325.  
  326.  
  327.  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  328.  ▓┌──────────────────────────────────────────────────────────────────┐▓▓
  329.  ▓│ MDEBUG gibt Ihnen die volle Kontrolle über Ihren PC - jederzeit! │░▓
  330.  ▓└──────────────────────────────────────────────────────────────────┘░▓
  331.  ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓
  332.  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  333.  
  334.  
  335.