欢迎来到天天文库
浏览记录
ID:41031976
大小:66.50 KB
页数:5页
时间:2019-08-14
《Win32汇编语言程序设计基础(教案)_张金翰》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Win32汇编语言程序设计基础一个完整的Win32汇编语言源程序的结构:.386;①指定处理器指令集.modelflat,Stdcall;②模式定义Optioncasemap:none;③指定汇编选项<若干条include语句>;④包含API函数和动态链接库头文件.stack[堆栈段大小];⑤定义堆栈段.data;⑥数据段(定义初始化变量)<初始化变量定义>.data?;⑥数据段(定义未初始化变量)<未初始化变量定义>.const;⑥定义常量段<常量定义>.code;⑦定义代码段<开始标号,如start>
2、<若干条语句>end开始标号;伪指令end中必须给出代码段的程序执行起始地址细述以上每个部分:关于①:这是一条伪指令。目的是告诉汇编时应使用的处理器指令集。由于Win32都是工作在80386及以上的处理器环境下,所以必须使用这一条伪指令(而缺省是指使用8086指令集)。处理器选择伪指令包括:伪指令选择的指令系统.80868086指令系统.28680286指令系统.286P保护模式下的80286指令系统.38680386指令系统.386P保护模式下的80386指令系统.48680486指令系统.486P保护
3、模式下的80486指令系统.586Pentium指令系统.586P保护模式下的Pentium指令系统注:以上的保护模式的含义是指包括特权指令在内的指令系统(还支持相应的协处理器指令,如80387协处理器指令等)。关于②这也是一条伪指令,且在低版本的汇编中就已存在。功能是指定程序的工作模式以及指定语言模式。虽然它有Tiny、Small、Medium、Compact、Large、Huge、Flat等多种存储模型,但对Win32汇编源程序来说(即从MASM6及以上版本开始支持),只有Flat一种。Flat(平展
4、模式):允许使用32位偏移量,即内在寻址最大到4GB,没有了64KB的限制。在Win32汇编中,.Model还要指定语言模式(实则是指定调用子程序的方式),它虽然有C、Syscall、Stdcall、PASCAL、BASIC、FORTRAN等语言模式,但在Win32汇编程序中只能使用Stdcall(因为WindowsAPI函数调用采用的是Stdcall)。本语句的一个实例:.Modelflat,Stdcall关于③:虽然也有多个选项,但在Win32汇编语言中只需设置为:Optioncasemap:mapt
5、ype其中的maptype如用none取代,表示要区分标识符大小写,所以该语句的实例是:Optioncasemap:none关于④:include中指明本程序应包含的Win32API函数的动态链接库(*.DLL)、导入库文件(*.LIB)和每个API函数的声明文件(*.INC)。其中:最核心的几个DLL是:Kernel.dll系统服务功能的动态链接库,包括内在管理、任务管理和动态链接等;User32.dll用户接口服务功能,包括创建窗口和传递消息等;Gdi32.dll图形设备接口,实现广西和图形的显示。W
6、sock32.dll用TCP/IP协议进行网络通信编程的DLL强调:Win32API以调用子程序方式(以功能名称作为子程序名)替代了原DOS的软中断(INT)方式(以功能号),比原DOS的INT调用方便多了。Include的实例:includeWindows.incincludeUser32.incincludeUser32.libincludeKernel32.incincludeKernel32s.lib在Win32应用程序中,一般都应该有一条以下包含语句:IncludeWindows.incWind
7、ows.inc文件包含了几乎所有API函数的参数常量和数据结构定义,所以文件很庞大。关于⑤:由于Win32中只有代码和数据之分,而系统总是自动为应用程序分配一个向低地址端扩展的足够大的段作为堆栈段,所以有无堆栈段的大小定义无关紧要。关于⑥:.data和.data?以及.const都是定义不同方式的数据段。.data中定义的是需要初始化的变量(既分配了内存又赋予了初值的变量)。实例如:为调用API的对话框函数需提前定义两个字符串变量:.dataSztitledb‘exampleofhello’,0Szgre
8、etdb‘你好!Win32世界!’,0.data?中通常定义的是缓冲区或暂存变量(又称为无需初始化变量)。在该处定义的变量是当程序运行后才需赋值。它与.data中定义的变量的区别在于:不占实际存储空间、变量存放在_BSS节区中(初始化变量存放于_DATA节区中)。.const中仅能说明常量(运行时不能再改变的量)。实例如:定义用户窗口程序中,定义窗口类名、标题、按纽类名、按纽标题等:.constszClassNamedb’Wi
此文档下载收益归作者所有