使用一个好的调试器无疑对学习win32汇编是至关重要的,本人更偏爱vc的强大调试环境,能否用vc调试器调试哪,于是从网上搜搜,找到一篇 spring.w的文章《贴个用vc++在源码级下调试masm32汇编程序的方法。。。大家交流。。》,此文就是在此基础上的扩充。
编程环境:vc6.0,masm32v8
方法如下:
1、 使用vc6新建一个空工程test(win32 console,win32 application等均可)。
2、 把汇编工程中的文件拷至新建工程目录下(hello.asm,makefile),并把这些文件加入工程中管理。
3、 配置ide:
(1)、 tools/customize…/tools中添加一个工具nmake。在menu contens中添加一项nmake,command中填入:nmake.exe,initial directory中填入: $(wkspdir),选中use output window。这样就在tools菜单下出现了一个新的菜单项nmake。可以把这个菜单项添加到工具栏中。
(2)、tools/option…/editor在save option中选中save befor running tools。
4、 制作makefile文件:
exe = test.exe #指定输出文件
objs = hello.obj #需要的目标文件
link_flag = /subsystem:windows /debug /out:debug\test.exe #连接选项
#注: (1)/debug必须存在 。
# (2)/out:debug\test.exe输出可执行文件名要与vc建立的工程名一致。
# (3)/subsystem:windows:如果是控制台程序,这里需要改为/subsystem:console
ml_flag = /c /coff /zi #编译选项
#注: /zi必须存在
$(exe): $(objs)
link $(link_flag) $(objs)
.asm.obj:
ml $(ml_flag) $<
5、点击菜单项tools/nmake,调用masm32中的ml,link进行编译连接程序。
至此就可以使用vc调试器源码级调试汇编程序了,可以设置断点,察看变量、内存、寄存器等,nmake出现语法错误时可以双击output window中的错误行定位到程序中的指定行,改代码时别忘了要用nmake编译。
注:变量最好不要以@开头定义,比如@num,这样的变量名无法再vc下察看。
参考:
作者:spring.w
作者:spring.w
作者:crige
《windows环境下32位汇编语言程序设计》pdf及代码 作者:罗云彬
标 题:贴个用VC++在源码级下调试MASM32汇编程序的方法。。。大家交流。。 (1千字)
发信人:Spring.W
时 间:2002-11-25 0:27:11
详细信息:
许多其它编译器都附带了源代码级的调试器,,这使得用这些高级语言调试比较简单,但对于masm并没有一个集成的开发和调试环境,我们可以用TRW和 Softice实现源码级的调试,这两种方法,参看Hume兄的文章:http: //
下面提供一种用VC++6.0调试的方法,好像比前两种更简单些。
方法如下:
--------
1、将我们的汇编程序编译连接成调试模式:
\masm32\bin\ml /c /coff /Cp /Zi Myprog.asm
\masm32\bin\link /DEBUG /DEBUGTYPE:CV /subsystem:windows
myProg.obj
2、用VC++6.0建立一个同ASM程序同名字的工程:myProg,并将它编译连接
成debug模式,此时,在VC工程myProg\debug中会形成myProg.exe。
3、将第1步骤中用Masm32编译连接成的同名exe文件myProg.exe拷贝到:
VC++工程myProg\debug中,覆盖VC++形成myProg.exe
4、启动VC++6.0,打开myProg工程,build->start debug->go,呵呵。。
进入了Masm32形成的myProg.exe,并且是源码级调试。
至此,请随心所欲的用VC调试器的强大功能,调试你的Masm32程序吧!
附:我一般都是用个批处理(L_debug.bat)一下完成:
c:\masm32\bin\ml /c /coff /Cp /Zi Myprog.asm >Mydebug.txt
c:\masm32bin\link /DEBUG /DEBUGTYPE:CV /subsystem:windows
myProg.obj
copy .\myProg.exe VC工程\debug\myProg.exe
启动VC进行调试。。。