汇编语言程序设计教程PPT-第7章.ppt

上传人:小飞机 文档编号:5993773 上传时间:2023-09-12 格式:PPT 页数:22 大小:533.50KB
返回 下载 相关 举报
汇编语言程序设计教程PPT-第7章.ppt_第1页
第1页 / 共22页
汇编语言程序设计教程PPT-第7章.ppt_第2页
第2页 / 共22页
汇编语言程序设计教程PPT-第7章.ppt_第3页
第3页 / 共22页
汇编语言程序设计教程PPT-第7章.ppt_第4页
第4页 / 共22页
汇编语言程序设计教程PPT-第7章.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《汇编语言程序设计教程PPT-第7章.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计教程PPT-第7章.ppt(22页珍藏版)》请在三一办公上搜索。

1、汇编语言程序设计,第七章,第七章 Win32汇编语言程序设计,第七章 Win32汇编语言程序设计,Windows系统具有风格一致的华丽图形用户界面、丰富的API函数、设备无关性、多任务等特点而广泛流行。,Win32汇编语言的功能:,32位处理器寄存器结构:,第七章 Win32汇编语言程序设计,在Win32汇编环境下编写Windows应用程序,可以充分利用Windows的高级特性,开发性能更高的应用软件和动态链接库,而且可以从深层次理解Windows运行机制和Windows应用程序的设计思路及方法。,7.1 Win32汇编语言程序设计基础,(1)源程序结构、源程序的模式定义与段定义,在Win32

2、环境下,应用程序可以寻址4GB空间。,(2)API函数的使用(包含声明文件、调用API函数),(3)Win32汇编的编程环境(命令行编程环境、集成开发 环境),.386;指定可使用处理器指令集.model flat,stdcall;模式定义 option casemap:none;指定汇编选项;包含API函数和动态链接库头文件.stack堆栈段大小;定义堆栈段.data;数据段(定义初始化变量).data?;数据段(定义未初始化变量).const;定义常量段.code;定义代码段 end 开始标号;源程序结束,第七章 Win32汇编语言程序设计,一个完整的Win32汇编语言源程序结构如下所示:

3、,例7-1 写一个经典的Win32 Hello程序。一个最简单的Win32汇编语言源程序例子,说明Win32汇编语言源程序的框架结构。,.386;指定处理器指令集.model flat,stdcall;模式定义 option casemap:none;指定汇编选项,区分大小写 include windows.inc;包含头文件和动态连接库 include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib.stack 100.data sztitle db example of hello,

4、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:fa

5、lt,fs:error,gs:error,第七章 Win32汇编语言程序设计,语言类型:指定命名规则、参数传递顺序、堆栈平衡者等。,返回,Win32环境汇编语言编程接口就建立在Win32 API基础上。,返回,第七章 Win32汇编语言程序设计,Win32 API的核心是3个动态链接库(dll):,invoke 函数名,参数1,参数2,invoke MessageBox,NULL,addr szgreet,addr sztilte,MB_OK,上述调用在汇编语言程序中汇编为如下指令:,MessageBox()的原形声明如下:,返回,第七章 Win32汇编语言程序设计,push MB_OK pu

6、sh sztitle push szgreet push NULL call MessageBox,int MessageBox(HWND hwnd,/父窗口句柄LPCTSTRlpText,/将显示在消息框中的字符串LPCTSTRlpCaption/消息对话框的标题UINTuType/消息对话框的风格);,invoke ExitProcess,NULL,voidExitProcess(UINTuExitCode/exit code for all threads);,返回,第七章 Win32汇编语言程序设计,第七章 Win32汇编语言程序设计,7.2 Win32汇编语言的语法,(1)标号和变量

7、,(2)高级语法,(3)运算符与条件表达式,(4)分支语句,(5)循环语句,(6)子程序设计(子程序的定义和声明、参数传递和堆栈平衡),.data szmess db 1!+2!+3!=0,0 sztitle db WHILE examples,0 n dd 3 result dd 0.code start:mov ecx,1 mov eax,1.while ecx=n;WHILE循环 mul ecx inc ecx add result,eax.endw mov eax,result mov dl,al add szmess+9,dl invoke MessageBox,NULL,addr

8、szmess,addr sztitle,MB_ICONINFORMATION or B_OK invoke ExitProcess,0 end start,例7-2:用高级语法语句WHILE循环完成计算:1!+2!+3!=9,第七章 Win32汇编语言程序设计,第七章 Win32汇编语言程序设计,汇编、连接Win32 汇编语言程序的方法:(1)命令行方式,汇编:ml/c/coff hello.asm 连接:link/SUBSYSTEM:WINDOWS hello.obj 运行:hello,7.3 Win32窗口程序设计简介,(1)窗口程序设计的基本步骤,本节介绍如下要点:,(2)集成开发环境方

9、式 MASM32软件包中的编辑器:geditor.exe,NEXT,返回,第七章 Win32汇编语言程序设计,1,获取应用程序模块的句柄(调用GetModuleHandle函数);,第七章 Win32汇编语言程序设计,Win32窗口程序实例:消息传递机制 代码分析,(2)窗口程序的运行过程,(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程),第七章 Win32汇编语言程序设计,7.4 汇编语言与VC+的混合编程,嵌入式汇编语言指令及编程方法,(1)嵌入式汇编指令,(2)VC+调用汇编子程序,NEXT,第七章 Win32汇编语言程序设计,汇编语言与VC+的混合编程实例,返

10、回,第七章 Win32汇编语言程序设计,(3)VC+调用汇编语言子程序的方法,嵌入式汇编也可以用于编写函数,其参数传递方法很简单,并且不用单独汇编,因此使用方便。此外嵌入式汇编还支持调用C函数,包括C库函数以及用extern C说明的函数。,嵌入式汇编对于参数传递的约定如下:,第七章 Win32汇编语言程序设计,其中关于出口参数:32位返回值由eax寄存器返回,如果返回值小于32位,则扩展为32位由eax寄存器返回,如果返回值大于32位,则由edx:eax寄存器返回,其中高32位存放在edx寄存器中,返回值大于64位时,将返回值的地址存放在eax寄存器中返回。,小 结,利用win32汇编语言可以方便、高效地编写窗口程序,要求:(1)基本掌握win32汇编语言程序结构和编程模式,熟悉 win32汇编语言编程环境;(2)熟练掌握API函数的使用方法;(3)理解窗口程序设计的基本步骤和消息处理机制。理解和基本掌握:(1)嵌入式汇编语言指令及编程方法;(2)在 VC+程序中调用汇编语言子程序的方法。,谢谢,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号