标题: 搞搞debug!
[打印本页]
作者: 知秋一叶
时间: 2003-6-5 00:00
标题: 搞搞debug!
看了论坛的几篇关于DEBUG的帖子,俺也想来搞搞DEBUG,说来话长啊,DEBUG可太老了,但是用好了可是功能强大。
这不前几天闹非典,俺怕被隔离,所以就逃回了家,像俺这样没电脑就不想活的人,在家哪能待得往,所以就想方设法借了台电脑,这台电脑好像比DEBUG的年纪还要大,不但没光驱不说,连软驱都是坏的,连个软件都装不上去,就连个最基本的QBASIC都没有,但用DIR一查,还有一个DEBUG,还好,就用它来写汇编吧,但它只支持基本的汇编,,每次回车之后,汇编就编译成指令了,不好修改,连标号都没有,只有地址,每次写完之后,把编译过的程序的跳转地址记下,再重新编写,太累了,所以俺就想了个办法,就是把程序先用EDIT之类的软件写好,然后用dos命令把它传给debug,再把输出的东西放到一个文件中,再把源程序中的跳转地址给修改过来,再编译就OK了!
光说不练不行,下面来个例子:
c:\>edit x.txt
进入edit编辑x.txt
a
mov ah,9
mov dx,100
int 21h
int 20h
db 'Hello','$'
n x.com
rcx
20
w
q
注意上面的n x.com之前必须有一个回车!懂汇编的人知道,这是一个输出一个字符串的程序,但在设计之前很难算出字符串地址,所以在DX中,我就瞎设了一个100,然后执行下面命令:
c:\>debug out.txt
这样执行完这条命令之后,就会有一个out.txt
-a
0BD4:0100 mov ah,9
0BD4:0102 mov dx,100
0BD4:0105 int 21
0BD4:0107 int 20
0BD4:0109 db 'Hello','$'
0BD4:010F
-n x.com
-rcx
CX 0000
:20
-w
Writing 00020 bytes
-q
我们可以看到字符串的地址是0109,那么DX中也一定是0109,这个程序是F个字节,那么RCX下面的那行就不应该是20,而应该是F了,这样只要两遍就可以生成一个X.com
不知道有没有网友还有比这更好的办法?说出来,让我们一起进步!