[bo][un]ONEPROBLEM[/un] 在 2008-7-27 23:17 的发言:[/bo]
哥们,你的问题是不是太复杂了?
遇到int 3h,必然要处理断点中断的。而断点,就是程序停下来的地方,为什么要停下来?是为了等待我们去处理(这个断点),我们去处理了,程序才会继续运行。
什么单步标志位?是不是 ...
哥们,你的问题是不是太复杂了?
遇到int 3h,必然要处理断点中断的。而断点,就是程序停下来的地方,为什么要停下来?是为了等待我们去处理(这个断点),我们去处理了,程序才会继续运行。
什么单步标志位?是不是 ...
偶不太懂dos里的那些东西 问的问题可能有些愚蠢 还望您别笑话我
偶在用debug调试是 有时要在一个地方停一下 看看内存 寄存器之类的东西
可我不知道怎么在debug里下断点 就直接改程序 在想断的地方加 int 3
在win32里 用od时 这种方法还很实用(个人意见 呵呵)
可看完后 还想继续运行程序 可用 g t p 都不能达到目的 就发了这个帖
其实 是可以的 只要用 g =** 让它在下一条指令处运行就行了
既然您对dos很了解 偶就再问深一点
在debug里 正确的 或比较好的 调试方法是什么呢 可否给个例子?
int 3h 是调试中断 有什么用处?该怎样用呢?
“在进入任何中断前,TF都要置0 。” 那在偶断下来时
AX=0000 BX=0000 CX=0014 DX=0000 SP=0200 BP=0000 SI=0006 DI=0000
DS=13DD ES=13C7 SS=13E6 CS=13D7 IP=0012 NV UP EI PL ZR NA PE NC
13D7:0012 CC INT 3
-g
AX=0000 BX=0000 CX=0014 DX=0000 SP=0200 BP=0000 SI=0006 DI=0000
DS=13DD ES=13C7 SS=13E6 CS=13D7 IP=0012 NV UP EI PL ZR NA PE NC
13D7:0012 CC INT 3
-g
AX=0000 BX=0000 CX=0014 DX=0000 SP=0200 BP=0000 SI=0006 DI=0000
DS=13DD ES=13C7 SS=13E6 CS=13D7 IP=0012 NV UP EI PL ZR NA PE NC
13D7:0012 CC INT 3
-g
AX=0000 BX=0000 CX=0014 DX=0000 SP=0200 BP=0000 SI=0006 DI=0000
DS=13DD ES=13C7 SS=13E6 CS=13D7 IP=0012 NV UP EI PL ZR NA PE NC
13D7:0012 CC INT 3
-g
AX=0000 BX=0000 CX=0014 DX=0000 SP=0200 BP=0000 SI=0006 DI=0000
DS=13DD ES=13C7 SS=13E6 CS=13D7 IP=0012 NV UP EI PL ZR NA PE NC
13D7:0012 CC INT 3
直接用 g 怎么不会继续运行?此处用 t p 就转到 int 3 的中断处理程序 用 g 怎么就不行呢?
“2、禁止其它的可屏蔽中断(指外中断的)。” 怎么理解呀? 这个功能好象是 IF 的呀?
IF(Interrupt Flag)中断标志,当IF为1时,允许中断,否则关闭中断
TF(Trap Flaga)陷井标志,用于单步方式操作。当TF位为1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF位为0时,CPU正常工作不产生陷阱。
如果偶真要在 debug 里设置或清除 TP 该怎么做?好象没有现成的指令
能碰到您这样的高手真是幸运呀 能者多劳嘛 还望您能给俺解惑 谢谢了
可否留个联系方式 有问题随时咨询 可以吗
btw 如果这些都说明白了 这个帖就够当个精华帖了 哈哈