文档介绍:汇编语言程序设计
——第七章
第七章 Win32汇编语言程序设计
API函数的调用方法
3
本章要点
Win32编程环境
2
Win32汇编语言的高级语法
4
Win32汇编语言程序设计基础
1
消息传递机制与Win32窗口程序设计
5
汇编语言与VC++的混合编程方法
6
第七章 Win32汇编语言程序设计
Windows系统具有风格一致的华丽图形用户界面、丰富的API函数、设备无关性、多任务等特点而广泛流行。
Win32汇编语言的功能:
支持汇编语言程序调用32位Windows API函数的功能
1
支持类似C语言的高级语法和运算符
2
32位处理器寄存器结构:
第七章 Win32汇编语言程序设计
在Win32汇编环境下编写Windows应用程序,可以充分利用Windows的高级特性,开发性能更高的应用软件和动态链接库,而且可以从深层次理解Windows运行机制和Windows应用程序的设计思路及方法。
Win32汇编语言程序设计基础
(1)源程序结构、源程序的模式定义与段定义
在Win32环境下,应用程序可以寻址4GB空间。
(2)API函数的使用(包含声明文件、调用API函数)
(3)Win32汇编的编程环境(命令行编程环境、集成开发
环境)
.386 ;指定可使用处理器指令集
.model flat, stdcall ;模式定义
option casemap:none ;指定汇编选项
<若干条include 语句> ;包含API函数和动态链接库头文件
.stack [堆栈段大小] ;定义堆栈段
.data ;数据段(定义初始化变量)
<初始化变量定义>
.data? ;数据段(定义未初始化变量)
<未初始化的变量定义>
.const ;定义常量段
<常量定义>
.code ;定义代码段
<开始标号>
<若干语句>
end 开始标号;源程序结束
第七章 Win32汇编语言程序设计
一个完整的Win32汇编语言源程序结构如下所示:
例7-1 写一个经典的Win32 Hello程序。一个最简单的Win32汇编语言源程序例子,说明Win32汇编语言源程序的框架结构。
.386 ;指定处理器指令集
.model flat, stdcall ;模式定义
option casemap :none ;指定汇编选项, 区分大小写
include ;包含头文件和动态连接库
include
includelib
include
includelib
.stack 100
.data
sztitle db ’ example of hello’,0
szgreet db ’你好!Win32世界!’,0
.code
start : invoke MessageBox, NULL, addr szgreet, addr sztitle, MB_OK
invoke ExitProcess, NULL
end start
next
第七章 Win32汇编语言程序设计
.model flat, StdCall
flat :平展模式。
MASM将自动产生下面的语句,指定各段寄存器与段的关系:
源程序结构中的分段不再是DOS汇编中的段定义概念,而是逐段连续分配各段地址空间,上一段结束就是下一段的开始。
ASSUME cs:flat,ds:flat,ss:flat,es:falt, fs:error, gs:error
第七章 Win32汇编语言程序设计
语言类型: 指定命名规则、参数传递顺序、堆栈平衡者等。
返回
Win32环境汇编语言编程接口就建立在Win32 API基础上。
返回
第七章 Win32汇编语言程序设计
Win32 API的核心是3个动态链接库(dll):
提供系统服务功能,包括内存管理、任务管理和动态链接等。
1
提供用户接口服务功能,包括创建窗口和传递消息等。
2
提供图形设备接口,实现文本及图形的显示操作。
3
invoke 函数名[,参数1] [,参数2]
invoke MessageBox, NULL, addr szgreet, addr sztilte, MB_OK
上述调用在汇编语言程序中汇编为如下指令:
MessageBox( )的原形声明如下:
返回
第七章 Win32汇编语言程序设计
push MB_OK
push szti