汇编语言程序设计教程PPT-第7章课件

上传人:我*** 文档编号:141880910 上传时间:2020-08-13 格式:PPT 页数:22 大小:542KB
返回 下载 相关 举报
汇编语言程序设计教程PPT-第7章课件_第1页
第1页 / 共22页
汇编语言程序设计教程PPT-第7章课件_第2页
第2页 / 共22页
汇编语言程序设计教程PPT-第7章课件_第3页
第3页 / 共22页
汇编语言程序设计教程PPT-第7章课件_第4页
第4页 / 共22页
汇编语言程序设计教程PPT-第7章课件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《汇编语言程序设计教程PPT-第7章课件》由会员分享,可在线阅读,更多相关《汇编语言程序设计教程PPT-第7章课件(22页珍藏版)》请在金锄头文库上搜索。

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

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

3、in32汇编语言源程序结构如下所示:,例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

4、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汇编中的段定义概念,而是逐段连续分配各段地址空间,上一段结束就是下一段

5、的开始 。,ASSUME cs:flat,ds:flat,ss:flat,es:falt, 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,上述调用在汇编语言程序中汇编为如下指令:,Me

6、ssageBox( )的原形声明如下:,返回,第七章 Win32汇编语言程序设计,push MB_OK push sztitle push szgreet push NULL call MessageBox,int MessageBox( HWND hwnd, /父窗口句柄 LPCTSTRlpText, /将显示在消息框中的字符串 LPCTSTRlpCaption/消息对话框的标题 UINTuType/消息对话框的风格 );,invoke ExitProcess,NULL,voidExitProcess( UINTuExitCode/ exit code for all threads );,

7、返回,第七章 Win32汇编语言程序设计,第七章 Win32汇编语言程序设计,7.2 Win32汇编语言的语法,(1)标号和变量,(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 .end

8、w mov eax,result mov dl,al add szmess+9,dl invoke MessageBox,NULL,addr 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:

9、WINDOWS hello.obj 运行: hello,7.3 Win32窗口程序设计简介,(1)窗口程序设计的基本步骤,本节介绍如下要点:,(2) 集成开发环境方式 MASM32软件包中的编辑器:geditor.exe,NEXT,返回,第七章 Win32汇编语言程序设计,1,获取应用程序模块的句柄(调用GetModuleHandle函数);,第七章 Win32汇编语言程序设计,Win32窗口程序实例: 消息传递机制 代码分析,(2)窗口程序的运行过程,(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程),第七章 Win32汇编语言程序设计,7.4 汇编语言与VC+的混合

10、编程,嵌入式汇编语言指令及编程方法,(1)嵌入式汇编指令,(2)VC+调用汇编子程序,NEXT,第七章 Win32汇编语言程序设计,汇编语言与VC+的混合编程实例,返回,第七章 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+程序中调用汇编语言子程序的方法。,谢谢,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号