[bo][un]hurtsky[/un] 在 2008-7-11 21:01 的发言:[/bo]
哦,WIN32
可以看看罗云彬的书
2.6 构建编程环境
由于Win32汇编可以采用多种编译软件,它们的环境设置方法各不相同,对已经入门的读者来说,这不是问题,但初学者往往不能很好地掌握设置的方法,以至于拿到例子程序后编译不出来,不少人往往在例子一而再、再而三编译不出来后深受打击,还没有来得及看到汇编的一点影子就“告别”了这个神秘又精彩的世界。
本书的例子是基于MASM32软件包的,本节介绍MASM32使用中的一些问题。
2.6.1
IDE还是命令行
IDE(Integrated Develope Environment)即集成开发环境,Microsoft的Visual Studio中的VC和VB等开发环境就是IDE的最好例子,MASM32软件包中同样有一个简单的IDE环境Qeditor.exe,但MASM32中编译、链接用的是Ml.exe和Link.exe,所以这个IDE环境实际上只是一个简单的文本编辑器加上一个用户可以自行设置菜单的Shell,编译链接工作靠调用其他软件完成。
如果要使用这个IDE环境,最大的代价就是不得不使用这个简单的编辑器,而一个好的文本编辑器对工作效率的影响是很大的,一个完善的文本编辑器必须包括语法高亮显示、强大的查找替换、无限次Undo和Redo操作、支持特大型的源文件等功能,MASM32中简单的Qeditor.exe符合不了这些要求。
所以建议读者还是抛弃这个IDE环境,用一个功能强大的文本编辑软件来写源程序,然后在命令行环境中用nmake来维护代码,这样有一个额外的好处,就是makefile文件同时记录了文件的编译与链接参数,可以在以后方便维护。
这里介绍两个很适合用来编辑汇编源文件的文本编辑软件:
● EditPlus——这是一个为程序员编写的文本编辑软件,内置HTML,CSS,PHP,ASP,Perl,C/C++,Java,JavaScript和VBScript的语法高亮显示,也可以下载ASM语法文件,它包括了所有文本编辑软件应该具有的功能:自定义工具菜单,显示行号,语法自动完成,列选择功能(以前只在WPS中看到过),无限次Undo/Redo和语法检查等功能。读者可以从http://www.下载使用版,使用版可以通过输入注册码成为正式版本。
● UltraEdit32——这是一个文本编辑/16进制编辑软件,有EditPlus的大部分功能外加16进制编辑功能,同样有语法高亮显示等功能,笔者认为其惟一的缺陷就是没有列选择功能,这个功能在编辑中比较有用。UltraEdit32是一个共享软件,可以从http://www.下载,同样可以通过输入注册码成为正式版本。
2.6.2
本书推荐的工作环境
本书建议读者放弃MASM32简单的IDE环境,改为在命令行下用nmake工具进行代码维护,为了建立这个环境,需要做下面的工作。
第1步:安装常用软件,包括编辑软件Editplus,MSDN,16进制编辑器hexedit,可视化资源编辑器Resource Workshop,调试工具Soft-ICE和反汇编软件W32DASM等,如果空间允许的话,最好安装Visual C++,以便使用它集成的资源编辑器。
第2步:选择一个驱动器安装MASM32软件包,安装好的目录是x:\Masm32目录,对读者来说整个软件包中重要的只有3个目录:bin目录中有汇编编译器ml.exe,资源编译器rc.exe和链接器Link.exe等执行文件;include目录中有各种头文件;lib目录中有全部导入库。MASM32没有选择地把安装目录名定为masm32,如果不满意的话,完全可以把这3个关键目录拷贝到别的用户自己命名的目录中,对使用没有任何影响。
第3步:建立源文件目录,由于Win32汇编不再像DOS汇编一样一个项目只有一个asm文件,而是包括asm,rc,makefile和图标等多个文件,如果把多个项目的文件混在同一个目录中将无法分辨,所以必须为每个项目单独建立一个目录,建议把这些目录集中在一个专门放置源程序的目录中,如x:\Source目录。
第4步:由于MASM32软件包中没有nmake.exe文件,所以要单独寻找nmake.exe并拷贝到bin目录中。
第5步:为这个环境建立一个设置环境变量的批处理文件,假设文件名为Var.bat,那么这个文件内容如下:
@echo off
set include=x:\masm32\Include
set lib=x:\masm32\lib
set path=x:\masm32\bin;%path%
echo on
文件中设置了3个环境变量:
● include变量指定头文件的搜索目录。在asm和rc文件中可以根据这个变量寻找include语句指定的文件名,避免了使用头文件的全路径名,这样以后移动了MASM32的安装位置就不必修改每个源文件中的include语句。如果使用Visual C++的集成环境来建立rc文件的话,为了使rc.exe能找到头文件,还要把VC++安装目录下的Include和MFC\Include目录包含进来,中间用“;”隔开:
set include=x:\masm32\Include;VC目录\Include;VC目录\MFC\Include
VC++安装目录一般为C:\Program Files\Microsoft Visual Studio\VC98\。
● lib变量指定导入库文件的搜索目录。在asm文件中可以根据这个变量寻找includelib语句指定的导入库文件,Link.exe也根据这个变量寻找库文件的位置。
● path变量就不必多解释了。它只是使我们不必在键入命令时带长长的路径而已。