




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计, 第七章,第七章 Win32汇编语言程序设计,第七章 Win32汇编语言程序设计,Windows系统具有风格一致的华丽图形用户界面、丰富的API函数、设备无关性、多任务等特点而广泛流行。,Win32汇编语言的功能:,32位处理器寄存器结构:,第七章 Win32汇编语言程序设计,在Win32汇编环境下编写Windows应用程序,可以充分利用Windows的高级特性,开发性能更高的应用软件和动态链接库,而且可以从深层次理解Windows运行机制和Windows应用程序的设计思路及方法。,7.1 Win32汇编语言程序设计基础,(1)源程序结构、源程序的模式定义与段定义,在Win32环境下,应用程序可以寻址4GB空间。,(2)API函数的使用(包含声明文件、调用API函数),(3)Win32汇编的编程环境(命令行编程环境、集成开发 环境),.386 ;指定可使用处理器指令集 .model flat, stdcall ;模式定义 option casemap:none ;指定汇编选项 ;包含API函数和动态链接库头文件 .stack 堆栈段大小 ;定义堆栈段 .data ;数据段(定义初始化变量) .data? ;数据段(定义未初始化变量) .const ;定义常量段 .code ;定义代码段 end 开始标号 ;源程序结束,第七章 Win32汇编语言程序设计,一个完整的Win32汇编语言源程序结构如下所示:,例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,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):,invoke 函数名 ,参数1 ,参数2 ,invoke MessageBox, NULL, addr szgreet, addr sztilte, MB_OK,上述调用在汇编语言程序中汇编为如下指令:,MessageBox( )的原形声明如下:,返回,第七章 Win32汇编语言程序设计,push MB_OK push sztitle push szgreet push NULL call MessageBox,int MessageBox( HWND hwnd, /父窗口句柄 LPCTSTR lpText, /将显示在消息框中的字符串 LPCTSTR lpCaption /消息对话框的标题 UINT uType /消息对话框的风格 );,invoke ExitProcess,NULL,void ExitProcess( UINT uExitCode / exit code for all threads );,返回,第七章 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 .endw 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:WINDOWS hello.obj 运行: hello,7.3 Win32窗口程序设计简介,(1)窗口程序设计的基本步骤,本节介绍如下要点:,(2) 集成开发环境方式 MASM32软件包中的编辑器:geditor.exe,NEXT,返回,第七章 Win32汇编语言程序设计,1,获取应用程序模块的句柄(调用GetModuleHandle函数);,第七章 Win32汇编语言程序设计,Win32窗口程序实例: 消息传递机制 代码分析,(2)窗口程序的运行过程,(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程),第七章 Win32汇编语言程序设计,7.4 汇编语言与VC+的混合编程,嵌入式汇编语言指令及编程方法,(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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育培训试题含答案及答案
- 乘车安全常识试题及答案
- 乌拉地尔试题及答案
- 高速列车气动外形优化设计-洞察阐释
- 餐饮行业智能点餐系统技术研发与应用合作协议
- 艺术品交易股东退股与艺术品鉴定协议
- 2025版权合同 知识产权(IPR)保护框架协议
- 2025三人合伙创业合同范本
- 2025合同范本股权转让合同参考格式模板
- 小学三年级英语教学工作总结
- 2024至2030年中国皮肤清洗消毒液行业深度分析及发展趋势研究预测报告
- 2025届湖北省武汉市华中师大一附中初三4月中考模拟生物试题含解析
- 内科胸腔镜简介
- 院内突发心跳呼吸骤停、昏迷、跌倒事件应急预案及程序
- 2022年山东省职业院校技能大赛高职组“HTML5交互融媒体内容设计与制作”赛项-任务书(样)
- 塘实小腾讯扣叮创意编程赛自测题附有答案
- 炼焦工中级工题库
- YDT 4560-2023-5G数据安全评估规范
- 2024年广东省中考道德与法治试卷(含答案)
- 2024年广东省中考化学真题
- 期末监测 试题 2023-2024学年教科版科学六年级下册
评论
0/150
提交评论