汇编语言程序的开发过程:
Win32可执行文件叫做PE文件。
程序员的工作分创建代码和创建资源两部分 :
用include语句包含数据定义和函数声明的头文件 。
Windows.inc文件定义了Win32 API中很多参数和数据结构。
Win32中这种只包含位置信息的动态库文件称为导入库。
1 下载安装masm32
MASM是Microsoft Macro Assembler 的缩写,是微软公司为x86微处理器家族开发的汇编开发环境。
masm从 6.0 版开始 MASM 就改名 ML 了,因为它把编译和连接组合在一起了。而且 6.0 版还对汇编语言进行了大幅改造,使之支持高级语言的很多特性。 6.0 版之后常看到的就是 6.11 、 6.13 、 6.14 MASM32(V8.0 和 V9.0) 。但 Microsoft 从 6.15 版( 2000 年 4 月发布)开始好象就不再单独发布 MASM 的开发工具包了。
http://www.masm32.com/
点击其中的“download“按钮,按提示会下载到一个masm32v11r压缩文件,解压到D:masm32v11r,解压后得到一个5M的install.exe文件,双击,如下:
点击Install:
点击OK:
运行后会将文件加载到一个D:masm32的文件夹中,并有以下对话框,点击“yes“即可。
注意,此时的工作目录是F:masm32,如果将此文件夹移此其它位置将不能正常工作。
输入以下内容
.386 .model flat, stdcall option casemap:none include D:masm32includewindows.inc Include D:masm32includekernel32.inc include D:masm32includeuser32.inc includelib D:masm32libkernel32.lib includelib D:masm32libuser32.lib .data MsgBoxCaption db "win32 example",0 MsgBoxText db "Win32 Assembly is Great! ",0 .code start: invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK invoke ExitProcess, NULL end start
将文件保存到”D:masm32testtest.asm”。
.386
386指令集。
.MODEL 存储模型 [,语言类型] [,系统类型][,堆栈选项]
用于指定程序中各个段的属性、程序的运行环境,调用规则。
.DATA 或 .DATA?
说明一个数据段的开始,同时也表示上一个段的结束。
.CODE [段名]
说明一个代码段的开始,同时也表示上一个段的结束。
汇编语言的程序格式:
完整的汇编语言源程序由段组成。
一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列。
需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。
所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内。
通常,程序还需要一个堆栈段。
16位、32位、64位汇编语言寄存器的缩写、数量,略有不同:
64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运用于相应寄存器的低32位。而剩下的寄存器名则是从r8 – r15,其低位分别用d、w、b指定长度。
4 编译、链接、运行
4.1编译
弹出以下窗口:
如果有错,则会有错误提示,如果成功就是上述内容的显示。
会在上述文件夹内生成一个同名的obj文件。
4.2 链接
点击“link obj file“,弹出以下对话框:
会在上述文件夹内生成一个同名的exe文件。
4.3 运行
点击“run program“,弹出以下对话框:
-End-
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!