欢迎来到天天文库
浏览记录
ID:26541643
大小:199.00 KB
页数:21页
时间:2018-11-27
《windows汇编语言程序设计基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第1章Windows汇编语言程序设计基础第1章Windows汇编语言程序设计基础Windows汇编语言程序分为控制台编程和图形界面编程两种,控制台编程相对简单一些。为了由浅入深,本书从控制台编程开始讲解。读者总希望用最快的速度掌握书中的概貌,为此从一个最简单的程序开始。一些汇编语言语法也结合程序进行讲解,有些指令和语法用注解的方法说明。1.1第一个完整的Windows汇编语言程序Windows汇编语言程序有自己的编程规范,它的编程规范比VisualC要简单得多,调试也很方便。更重要的是系统把重要的东西都呈现给读者,使读者更能掌握其中的本质。用一条一条的汇编语言指
2、令很难写出大程序,Windows汇编语言程序也是调用系统提供的API来写程序。因而,用Windows汇编语言同样可写出大程序。以下是一个最简单的Windows程序。;程序功能:显示一个信息框。;ex1.asm(e:masmbase);程序名;编译链接方法:;ml/c/coffex1.asm;link/subsystem:consoleex1.obj.386;指明指令集.modelflat,stdcall;程序工作模式,flat为Windows程序使用的模式(代码和数据;使用同一个4GB段),stdcall为API调用时右边的参数先入栈optioncasema
3、p:none;指明大小写敏感includewindows.incincludeuser32.incincludelibuser32.libincludekernel32.incincludelibkernel32.lib.data;数据段szCaptiondb'抬头串',0szTextdb'Hello!',0.code;代码段start:21第1章Windows汇编语言程序设计基础invokeMessageBox,;显示信息框NULL,;父窗口句柄offsetszText,;正文串的地址offsetszCaption,;抬头串的地址MB_OK;按钮invokeE
4、xitProcess,;终止一个进程NULL;退出代码endstart;指明程序入口点程序运行结果见图1-1。图1-1说明:程序调用了两个Windows提供的API。invoke是汇编语言中的伪指令,该指令的使用方法见1.4节。1.2编译、链接和运行1.2.1创建编译链接环境(1)安装MASM615调试工具。(2)建立一个VAR.BAT文件,内容如下。@echooffrem请根据Masm32软件包的安装目录修改下面的Masm32Dir环境变量!setMasm32Dir=c:Masm32setinclude=%Masm32Dir%Include;c:Prog
5、ramFilesMicrosoftVisualStudioVC98Include;(本行应接在上行后)ProgramFilesMicrosoftVisualStudioVC98MFCInclude;(本行应接在上行后)%include%(本行应接在上行后)setlib=%Masm32Dir%lib;%lib%setw2k=%Masm32Dir%Inclusew2k;%Includew2k%setpath=%Masm32Dir%Bin;%Masm32Dir%Include;%Masm32Dir%Includew2k;%Masm32Di
6、r%lib;%Masm32Dir%;%PATH%(本行应接在上行后)setMasm32Dir=echoon编译链接程序前,需要切换到命令提示符方式,并运行该文件(设置好环境),然后方可进行编译链接。1.2.2编译链接和运行以下以编译链接ex1.asm为例:21第1章Windows汇编语言程序设计基础(1)编译。ML/Zi/c/Fl/coffex1.asmML参数说明(注意参数大小写):/Zi––加符号调试信息/c––连接前的编译/Fl––F1[file]产生列表文件/coff––产生COFF格式目标文件编译的更多参数说明,可用命令ML/?查阅。(2)链接。LI
7、NK/SUBSYSTEM:consoleex1.obj其中console指明是控制台编程,如果是Windows窗口编程,则将console改为Windows。(3)运行。在Windows下双击ex1.exe或在DOS命令提示符下键入ex1回车。1.2.3建立编译链接批命令文件可以把编译链接过程写成批命令文件,以减少键盘输入量。例如:MLEXE.BATML/Zi/c/Fl/coff%1.asmLINK/subsystem:console%1.objdel%1.objdir%1.*如果要编译链接ex1.asm,则只需输入:MLEXEex1回车1.3将Windows汇
8、编语言程序反汇编后的程序
此文档下载收益归作者所有