Проблема с debug.exe - PullRequest
       0

Проблема с debug.exe

0 голосов
/ 29 сентября 2011

Я пытаюсь использовать инструмент отладки в Windows для простой программы.Я хочу ввести строку символов, а затем проверить память, чтобы увидеть сохраненные символы.

Вот мой код:

mov  bx,200
mov  byte [bx],33   ;; Set maximum string length (32 + Ent)
mov  ah, 0Ah
int  21h

Каждый раз, когда я собираю код и запускаю его,это позволяет мне ввести строку, а затем DEBUG автоматически завершает работу.Это мой первый раз, когда я использую его, поэтому я не уверен, в чем проблема.

Любая помощь / советы будут с благодарностью.

Спасибо!

1 Ответ

5 голосов
/ 29 сентября 2011

Функция 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

Вот что яget:

-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

Вот что находится в регистрах:

-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

Далее я просто использую команду «continue» для выполнения инструкции кода по инструкции:

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

Затем введите «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
-

Готово.И вот оно в памяти:

-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   ................
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...