我正在尝试在Windows中使用调试工具来实现一个简单的程序.我想输入一串字符,然后检查内存以查看保存的字符.
这是我的代码:
mov bx,200
mov byte [bx],33 ;; Set maximum string length (32 + Ent)
mov ah, 0Ah
int 21h
Run Code Online (Sandbox Code Playgroud)
每次我组装代码并运行它时,它都允许我输入字符串,然后DEBUG自动退出.这是我第一次使用它,所以我不确定问题是什么.
任何帮助/提示将不胜感激.
谢谢!
函数0Ah需要DS:DX中的缓冲区地址,您的代码只设置BX,而不是DX.
以下是我输入代码的方式:
C:\>debug
-a 100
13DB:0100 mov bx, 200
13DB:0103 mov byte [bx], 33
13DB:0106 mov ah, 0a
13DB:0108 mov dx, bx
13DB:010A int 21
13DB:010C
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
-u 100
13DB:0100 BB0002 MOV BX,0200
13DB:0103 C60733 MOV BYTE PTR [BX],33
13DB:0106 B40A MOV AH,0A
13DB:0108 89DA MOV DX,BX
13DB:010A CD21 INT 21
Run Code Online (Sandbox Code Playgroud)
这是寄存器中的内容:
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=0100 NV UP EI PL NZ NA PO NC
13DB:0100 BB0002 MOV BX,0200
Run Code Online (Sandbox Code Playgroud)
接下来我只使用"proceed"命令按指令执行代码指令:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=0100 NV UP EI PL NZ NA PO NC
13DB:0100 BB0002 MOV BX,0200
-p
AX=0000 BX=0200 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=0103 NV UP EI PL NZ NA PO NC
13DB:0103 C60733 MOV BYTE PTR [BX],33 DS:0200=33
-p
AX=0000 BX=0200 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=0106 NV UP EI PL NZ NA PO NC
13DB:0106 B40A MOV AH,0A
-p
AX=0A00 BX=0200 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=0108 NV UP EI PL NZ NA PO NC
13DB:0108 89DA MOV DX,BX
-p
AX=0A00 BX=0200 CX=0000 DX=0200 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=010A NV UP EI PL NZ NA PO NC
13DB:010A CD21 INT 21
-p
Run Code Online (Sandbox Code Playgroud)
然后输入"QWE",然后输入:
QWE
AX=0A0D BX=0200 CX=0000 DX=0200 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13DB ES=13DB SS=13DB CS=13DB IP=010C NV UP EI PL NZ NA PO NC
13DB:010C 0000 ADD [BX+SI],AL DS:0200=33
-
Run Code Online (Sandbox Code Playgroud)
完成.而这里是在记忆中:
-d 200
13DB:0200 33 03 51 57 45 0D 00 00-00 00 00 00 00 00 00 00 3.QWE...........
13DB:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DB:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Run Code Online (Sandbox Code Playgroud)