Den meisten Basic-Programmierern sind sie nicht fremd: Befehle zum Auslesen und Füllen von Speicherstellen. Auf dem guten alten Commodore 64 unverzichtbare Hilfsmittel, sind die beiden Kommandos auf PCs ein wenig in Vergessenheit geraden – auch, weil es sie z. B. nicht als DOS-Befehl gibt. PEEK- und POKE.DEB sorgen für ein Comeback. »PEEK XXXX:YYYY« zeigt ab der angegebenen Adresse die nächsten 16 Byte hexadezimal an. XXXX steht für die Segment-, YYYY für die Offsetadresse. »PEEK 40:0« liefert z.B. die Basisadressen der parallelen und seriellen Schnittstellen. POKE packt an die gewünschte Speicherstellen einen beliebigen Wert. Bei Bedarf können Sie ganze Listen angeben. Die Syntax lautet:
POKE XXXX:YYYY[,#][,"Text"][...]
Anstatt XXXX:YYYY verwenden Sie die entsprechende Segment/Offset-Adresse (hexadezimal). Für den Rest geben Sie hexadezimale Werte ein. Bei Bedarf können Sie auch einen Text angeben, den Sie durch ein Komma und in Anführungsstrichen vom vorhergehenden Wert trennen müssen. Achtung! Wenden Sie POKE nur für Speicherstellen an, die Sie kennen! »POKEn« Sie ab einer Speicherstelle mehrere Werte, besteht die Gefahr, daß Sie zuviele eingeben und andere Speicherstellen ungewollt überschreiben.
Name: | PEEK.DEB |
Funktion: | Zeigt einen Speicherauszug an. |
Übersetzung: | DEBUG <PEEK.DEB |
Prüfsumme: | 235E |
Anwendung: | PEEK S:OS = hexadezimale Segmentadresse
O = hexadezimale Offsetadresse |
Einschränkungen: | ./. |
A CLD ;100 MOV SI,82 ;101 MOV CX,10 ;104 XOR AX,AX ;107 CALL 143 ;109 MOV DS,AX ;10C XOR AX,AX ;10E CALL 143 ;110 MOV SI,AX ;113 LODSB ;115 CALL 121 ;116 MOV DL,20 ;119 CALL 13A ;11B LOOP 115 ;11E RET ;120 MOV AH,0 ;121 CS:DIV By[105] ;123 MOV DX,AX ;128 CALL 12F ;12A MOV DL,DH ;12D ADD DL,30 ;12F CMP DL,39 ;132 JBE 13A ;135 ADD DL,7 ;137 MOV AH,2 ;13A INT 21 ;13C RET ;13E MUL CX ;13F ADD AX,BX ;141 CS:MOV BL,[SI] ;143 INC SI ;146 AND BX,FFDF ;147 SUB BL,10 ;14B JB 15F ;14E CMP BL,36 ;150 JA 15F ;153 CMP BL,9 ;155 JBE 13F ;158 SUB BL,27 ;15A JNB 13F ;15D RET ;15F RCX 60 NPEEK.COM W Q
Name: | POKE.DEB |
Funktion: | Verändert den Inhalt von Speicherbereichen. |
Übersetzung: | DEBUG <POKE.DEB |
Prüfsumme: | 13FE |
Anwendung: | POKE S:O[,#][,“Text“][…]S = hexadezimale Segmentadresse O = hexadezimale Offsetadresse
# = hexadezimaler Wert |
Einschränkungen: | ./. |
A CLD ;100 MOV SI,81 ;101 MOV BP,10 ;104 CALL 11C ;107 MOV ES,AX ;10A CALL 11C ;10C MOV DI,AX ;10F CALL 11C ;111 STOSB ;114 JMP 111 ;115 XOR By[14A],1 ;117 LODSB ;11C CMP AL,D ;11D JNZ 146 ;11F INT 20 ;121 MUL BP ;123 ADD AX,BX ;125 INC CX ;127 INC SI ;128 MOV BL,[SI] ;129 AND BX,FFDF ;12B SUB BL,10 ;12F JB 143 ;132 CMP BL,36 ;134 JA 143 ;137 CMP BL,9 ;139 JBE 123 ;13C SUB BL,27 ;13E JNB 123 ;141 JCXZ 11C ;143 RET ;145 CMP AL,22 ;146 JZ 117 ;148 JZ 145 ;14A XOR AX,AX ;14C XOR CX,CX ;14E JMP 129 ;150 RCX 52 NPOKE.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot