+ -
当前位置:首页 → 问答吧 → 如何使用debug调试看这个程序的结果?

如何使用debug调试看这个程序的结果?

时间:2010-12-20

来源:互联网

我在进行debug调试时,忘记怎么进行操作了,好像只要用-u,-g,-d,就行了!可结果就是不对,截屏如下,请大虾帮忙看看……谢了……




程序如下:
DATA SEGMENTM DW 1,2,3,-6,7,58
KZ DW ($-M)/2
P DW 20 DUP(?)
N DW 20 DUP(?)
COUNTP DW ?
COUNTN DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
  MOV DS,AX
LEA BX,M
MOV SI,0
MOV DI,0
MOV CX,KZ
MOV COUNTP,0
MOV COUNTN,0
NEXT:MOV AX,[BX]
  CMP AX,0
  JL NN
  MOV P[SI],AX
  ADD SI,2
  INC COUNTP
  JMP PP
NN: MOV N[DI],AX
  ADD DI,2
  INC COUNTN
PP:ADD BX,2
  LOOP NEXT
  MOV AH,4CH
  INT 21H
CODE ENDS
END START

作者: lomper   发布时间: 2010-12-20

单步执行调试是用命令t,遇到int指令则用p(当然其它指令也可以用p)。

t和p的区别就是,遇到int,call,loop等指令,t会继续跟踪下去,而p则跳到这条指令的下一句(相当于把这条指令内含的一大堆指令一下执行完)

作者: shzhfu   发布时间: 2010-12-20

0C07:0051 5D POP BP
0C07:0052 C3 RET
0C07:0053 90 NOP
0C07:0054 55 PUSH BP
0C07:0055 8BEC MOV BP,SP
0C07:0057 56 PUSH SI
0C07:0058 C45E04 LES BX,[BP+04]
0C07:005B 26 ES:
0C07:005C 807F0403 CMP BYTE PTR [BX+04],03
0C07:0060 7507 JNZ 0069
-g 44

AX=003A BX=000C CX=0000 DX=0000 SP=0000 BP=0000 SI=000A DI=0002
DS=0C00 ES=0BF0 SS=0C00 CS=0C07 IP=0044 NV UP EI PL NZ NA PE NC
0C07:0044 B44C MOV AH,4C
-d ds:0
0C00:0000 原数据[01 00 02 00 03 00 FA FF-07 00 3A 00] 06 00 正数[01 00 ..........:.....
0C00:0010 02 00 03 00 07 00 3A 00]-00 00 00 00 00 00 00 00 ......:.........
0C00:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0C00:0030 00 00 00 00 00 00 负数[FA FF]-00 00 00 00 00 00 00 00 ................
0C00:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0C00:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 05 00 ................
0C00:0060 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0C00:0070 B8 00 0C 8E D8 8D 1E 00-00 BE 00 00 BF 00 00 8B ................

作者: va_zaixuexi   发布时间: 2010-12-21