PEEK- und POKE-Befehl für DOS

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