第七部分Win32汇编语言—IA—32ASM高级编程.pptVIP

第七部分Win32汇编语言—IA—32ASM高级编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
宋军 计算机学院信息安全系 songjun@ 教学重点 多模块化程序设计 Include 引用*.inc 或 *.asm 文件的方式 includelib 指令引入库文件*.lib 文件的方式 高级汇编 高级语言特性 宏及应用 Win32 ASM编程 Windows API API调用 COM文件的编程 混合编程 内联汇编 多模块化程序设计 实例1:test33 — 数值求和 ; Test33.asm .386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code ;两数求和的函数 sum2 proc mov eax, ebx add eax, ecx ret sum2 endp “假模块化”设计方式 将整个源程序分散在若干个文本文件.asm中,可将各种常量定义、声明语句组织在包含文件中(扩展名inc);或将宏定义存放在宏定义文件中(扩展名mac); 利用include伪指令包含其他文件,本质上仍然是一个源程序;被包含文件依附于主程序存在; include 文件名 此处文件名必要时可指定路径,指出文件存储位置 实例2:test33工程 ; Test33.inc 包含文件 .386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib 模块连接与复用 为提高程序的复用性,子程序可单独编写为源程序,需注意以 下问题: 1)子程序名、共享变量要用共用伪指令public和extern声明 public 标识符[…] ;定义标识符模块使用 extern 标识符:类型[…];调用标识符模块使用 例:extern num2:near,num3:near ; 供外部子程序调用 public ereg ;变量共用 主文件中相应包含子程序的语句删除 2)子程序必须在代码段中,参数可采用寄存器、变量和堆栈方式 模块连接与编译 主程序与子程序可分别编译和连接: 1) ML /C /COFF TEST33.ASM ML /C /COFF NUM2.ASM ML /C /COFF NUM3.ASM 2)LINK /SUBSYSTEM:WINDOWS TEST33.OBJ NUM2.OBJ NUM3.OBJ 注意:子程序与主程序的语言规范需要一致 “真模块化”设计方式 可以将子程序模块统一管理,存放在一个或多个子程序库中; 子程序库文件(.LIB)是子程序模块的集合,存放子程序的名称、目标代码及有关定位信息; 子程序文件编译完成形成目标文件,然后利用库文件工具LIB.EXE将子程序模块逐个加入到库中,然后进行连接; 例如:lib /out:test33.lib num2.obj 实例3:test33工程 实例3-2:test33工程 高级语言特性 高级语言特性 MASM 6.0引入高级语言的程序设计特性 条件控制伪指令 .IF .ELSE .ENDIF 循环控制伪指令 .WHILE .ENDW .REPEAT .UNTIL 过程声明和过程调用伪指令 .PROTO .INVOKE 条件控制伪指令 类似高级语言中IF、THEN、ELSE和ENDIF的相应功能 在汇编时要展开,自动生成相应的比较和条件转移指令序列,实现程序分支 例题 ;单分支结构 .IF EAX 0 neg eax .ENDIF mov result,eax ;双分支结构 .IF eax==5 mov ebx,eax mov eax,0 .ELSE dec eax .ENDIF 求1~100之和 ;WHILE结构 xor eax, eax mov ecx,100 .while ecx!=0 add eax,ecx dec

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档