第7章 Win32编程环境.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:21 大小:2.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第7章 Win32编程环境.pdf

第7章Win32编程环境.pdf

预览

免费试读已结束,剩余 11 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章Win32编程环境使用汇编语言来开发Win32程序的软件包有Microsoft的MASM系列、Borland的TASM系列等。本章首先介绍了MASM32软件包的组成及安装方法;然后通过MASM32软件包自带的例子,介绍集成环境QEDITOR的使用;最后介绍生成Win32可执行文件的步骤和方法。7.1MASM32软件包简介1.MASM系列编译器介绍MASM是Microsoft公司推出的汇编编译器。它有众多版本,高版本和低版本的语法和功能相差很多,向下兼容性也不好。低版本的MASM固然无法编译高版本的源程序,但是,高版本的MASM也可能无法正常编译低版本的源程序。在使用MASM系列编译器时,一定要注意所使用的版本。在前6章中,介绍DOS环境下的汇编编程,使用的是MASM6.00。从本章开始,介绍如何编制Win32编程,其使用的是MASM6.14编译器。下面介绍一些重要的MASM版本及其关键演变历程。1989年Microsoft推出了MASM5.10B,它是传统的DOS汇编编译器中最完善的版本,运行稳定、速度快。该版本支持80386处理器指令,允许将段定义伪指令简化为“.code”与“.data”之类的形式,同时增加了对“@@”标号的支持。这样,程序员可以不再为标号的起名花掉很多时间。1992年Microsoft发布了MASM6.00。编译器使用扩展内存,编译更大的文件,这时,可执行文件名相应从MASM.EXE改为ML.EXE。从该版本开始,可以在命令行上使用“*.ASM”,以便同时编译多个源文件。最大的改进之一是开始支持“.IF/.ENDIF”等高级语法,使得复杂的条件分支语句的编写和用高级语言编写一样简单,可以在几千行代码中不定义一个标号;另外,增加了invoke伪指令,简化了带参数的子程序调用。这两个改进使汇编代码的风格越来越像C,可读性和可维护性提高了很多。MASM6.11于1993年11月发布,从该版本开始,支持Win32编程,支持WindowsNT、Pentium指令。MASM6.14是一个很完善的版本,它在.XMM中增加了对PentiumIII的SIMD指令集的支持。不同版本MASM产生的目标文件(.OBJ)格式不同。在DOS和Win16时期,Microsoft使用的目标文件格式为OMF(IntelObjectModuleFormat)格式,到了Win32时期(从MASM6.11版本开始),改用为COFF(CommonObjectFileFormat)格式,原因之一是COFF格式更像最终的PE文件,在链接时可以做更少的处理。用Microsoft的产品编写Win32程序,不管是使用VC还是MASM,都必须使用COFF格式,因为Microsoft的32位的Link只支持将COFF格式的OBJ文件链接成PE文件,另外所有的导入库等支持文件的格式也全部是COFF格式的。2.MASM32软件包MASM32软件包是不同工具软件的大集合,它包含如下工具软件:(1)汇编编译器,来源于MASM软件包中的ML.EXE;100(2)32位链接器,来源于MicrosoftVisualStudio的LINK.EXE;(3)资源编译器,同样来源于MicrosoftVisualStudio的RC.EXE。同时也包含了MicrosoftVisualStudio中的其他一些工具,如LIB.EXE和DUMPPE.EXE等,所有的工具都适合于Win32编程的版本。(4)导入库,包括详尽的头文件。导入库文件取自VisualC++的导入库。(5)头文件,包括详尽的头文件。规模庞大的头文件是发布者整理出来的。(6)W32程序例子,涉及Win32汇编的很多方面,收集自世界各地Win32汇编爱好者发布的源程序。(7)集成开发环境,为了使工具包更实用,发布者还为它编写了一个简单的集成开发环境(IntegratedDevelopEnvironment,IDE)QEDITOR.EXE。该IDE环境使用只是一个简单的文本编辑器加上用户可以自行设置菜单的Shell。在开发软件时完全可以不用该集成开发环境。MASM32软件包完全是为了用汇编语言编写专业大型程序而开发的。它的发布者SteveHutchesson做了所有汇编程序员都想做却又在庞大的工程量前止步的工作,如收集合适的工具软件,收集导入库,整理出完整的头文件,收集例子文件,写帮助文档,等等。本书使用的是MASM32V8版本,在光盘上有一个MASM32V8.EXE。和早期的MASM32版本相比,使用的编译器、链接器等可执行文件并没有什么改变,不同的是在头文件中增补了一些数据结构定义,增加