您的位置:首页 > 编程语言

VS2005下编译调试保护模式32位汇编程序总结

2010-12-02 19:28 260 查看
记得当初学习汇编的时候,由于时间紧张,基本上没怎么整理汇编的开发环境的使用方式。当初也就是用命令还随便编译了几个简单的程序而已,也只能算是小打小闹。好歹现在有时间了,闲来无事,于是重新拾起汇编程序,把用VS2005开发汇编应用程序的方法和大家分享。废话少说,下边开始我们的VS2005下汇编的第一个HelloWord程序。
第一步:准备工具。
下载安装Visual Studio 2005,从链接
http://ishare.iask.sina.com.cn/f/7754633.html?from=isnom 注册下载《Intel汇编语言程序设计第四版》的随书光盘。里边的资料稍后会用到。下载后解压,若不能正常解压,直接打开拖拽出来即可。解压后将setup运行,安装MASM6.15,路径按照默认在C:/Masm615不要修改。好的,准备工作完成。
第二步:建立工程。

打开VS2005,点击 文件->新建->项目,选择Win32
控制台应用程序,输入项目名(HelloWord),点击确定。
点击下一步,勾选空项目,点击完成。
进入项目后,右键源文件->添加->新建项,选择代码,C++文件,输入汇编源文件名称,以.asm为后缀(HelloWorld.asm),点击添加.
在源文件中键入HelloWorld代码,32位汇编代码如下:
TITLE HelloWorld
(HelloWorld.asm) ;标题
comment *

创建的第一个HelloWorld 32位汇编程序
*
INCLUDE Irvine32.inc
; 32位汇编程序必须的包含文件
.data
;数据段
;要显示的字符串,后跟回车/换行和结尾符
hello byte "Helloworld,this is my first assemble programe !",0dh,0ah,0
.code
;代码段
main PROC
;主程序入口

mov edx,offset hello ;传递参数

call WriteString ;显示字符串

exit ;主程序退出
main ENDP
END main
第三步:配置项目。

针对每一个项目都需要重新配置,虽然有点繁琐,但是只是在项目刚建立的时候配置,配置完后就不需要管了。

1.
右击项目名称->自定义生成规则,
打开“Visual C++
自定义生成规则文件”窗口, 勾选可用的规则文件“MicrosoftMacro Assembler”,然后单击“确定”按钮关闭窗口。
2.
如果自定义生成规则成功,右击相应项目名称,选择“属性”菜单项,打开“属性页”窗口,在左手框中会出现“Microsoft Macro
Assembly”配置属性,否则没有。设置Microsoft Macro Assembly的General的Include Paths项目设置为刚才安装的MASM6.15目录的INCLUDE文件加夹,应该是C:/Masm615/INCLUDE。这么做正是和代码的INCLUDE命令相呼应。INCLUDE文件夹下有文件Irvine32.inc。
3.
还是属性页,展开“连接器”,选择“输入”属性,在右手框中的“附加依赖项”属性后键入值Irvine132.lib,即连接库文件名。这样Irvine32.inc就有依赖库了。
4.
针对依赖库,上边的做法还不够,除非你把他拷贝到当前的程序目录中,否则会找不到,因此我们还是最好指定他们的路径为妙。在安装的Masm6.15目录C:/Masm615/LIB有这个库文件,所以我们应该指定指定“链接器/常规/附加库目录”属性值为C:/Masm615/LIB。

至此,项目的配置工作完成。
第四步:调试运行。

选择调试->启动调试或者开始运行,可以调或者运行试该项目。方法和C++项目相同,可以添加断点,监视变量等,这里不再赘述。下边你可以开始自己的32汇编程序的开发之旅了。

附加说明:

这里主要介绍了32为保护模式汇编程序的编写,对于16位实模式或者虚拟8086汇编程序的开发经过我的测试貌似这么做不大支持,大家感兴趣可以自己补充。

如果实在需要编译调试16位程序的话,可以使用刚才安装的Masm6.15自带的工具make32.bat(理论上应该使用make16.bat,但是经测试make16.bat不能生成.exe文件,而make32.bat可以)进行开发。详细使用方式可以参考《Intel汇编语言程序设计第四版》(下载链接:http://ishare.iask.sina.com.cn/f/11209526.html
)的附录A。大家感兴趣可以自己学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: