5-汇编语言格式摘要.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
安装VS2010、2012、2015 选中Visual C++ XP下需安装补丁 安装帮助文档:帮助-添加删除帮助内容 重置开发环境:工具-导入导出设置-重置 设置汇编语言关键字高亮显示 下载usertype.dat,拷贝到VS安装目录下的common files\IDE 在工具-选项-文本编辑器-增加.asm(Visual C++) 设置源程序显示行号:工具-选项-编辑器-C++ VS2015需下载C标准函数库msvcrt.lib 安装帮助文档 重置开发环境 设置汇编关键字高亮显示 设置显示行号 二、建立汇编语言工程 创建解决方案和工程 建议选择“空项目” 在旧解决方案里创建新工程后,要设置启动项目 设置汇编语言程序的编译器 工程上“生成依赖项” ,选择MASM 设置程序的运行环境 工程上属性-连接器-系统-子系统-console 添加源程序 选择visual c++的.cpp,但文件名用.asm 编译调试同Visual C++ 创建解决方案和工程 设置汇编语言编译器 设置程序运行环境 添加汇编语言源程序 编写汇编语言源程序 编译连接与运行调试 编译连接与运行调试 建议直接F10,一次性编译链接并进入单步调试模式。 调试时使用的跟踪类热键 F5 全速运行 Shift+F5 终止运行 F10 单步执行 F11单步进入子程序 Ctrl+F10 运行到当前光标处 F9 设置/取消断点 Shift+F11跳出本函数 调试时使用的查看类热键 ALT+8 反汇编 ALT+5 寄存器 ALT+6 内存 CTRL+ALT+M 1/2/3/4 VS中的标志位 Intel的标志位 OV OF UP DF EI IF PL SF ZR ZF AC AF PE PF CY CF 其实VS中的标志位是Intel标志位为1时对应的英文单词的速写 如PF=1 是偶校验 ParityEven Visual Studio寄存器的标志位 三、汇编语言程序格式 汇编语言面向硬件直接编程,所以需要对硬件环境和设置需要指示清楚 CPU 存储模式、函数调用缺省规范 堆栈段大小—若有深层递归需增加到符合要求 数据段定义 代码段定义 第一条指令位置 END main 程序结束要返回操作系统 调用OS标准函数ExiProcess(int return_val) 外部函数要用PROTO先声明再使用 Windows标准函数,PROTO STDCALL(可省) C函数PROTO C 可变参数类型 VARARG 参数类型为BYTE、DWORD等,不能DB、DD 外部的函数库用INCLUDELIB指明 用OPTION指明大小写是否敏感 由于调用C函数,大小写敏感 函数调用的参数传递 通过push param1等传递参数,倒着传输。 要注意是传地址(OFFSET 变量)还是传值 函数调用后的堆栈平衡 参数传递(push)改变了当前堆栈的栈顶ESP 函数调用后要把参数退出(pop)堆栈 C用 “ADD ESP,4*参数个数n” 即可堆栈平衡,不要pop,因为pop慢而且pop出来的数没有用 Windows标准调用的函数不用在主程序中堆栈平衡,因为子程序在返回时实现了堆栈平衡 函数调用的简写方法—宏缩写方式 INVOKE 函数名,参数1,参数2,…… 可代替 push参数 call函数 堆栈平衡 chr$ MACRO any_text:VARARG LOCAL txtname .data txtname db any_text,0 align 4 .code EXITM OFFSET txtname ENDM .code INVOKE printf,chr$(“Hello!”,0dh,0ah) ;与C语言的函数调用基本一致了。 采用chr$宏的函数调用缩写方式 四、汇编语言的程序元素 类型?数与表达式?指令/语句?函数/模块?源程序文件?工程?解决方案 标识符:关键字/保留字、标号、常量名、变量名、类型名、函数名、宏名等 表达式 常量表达式:编译器计算出来,放在二进制代码的位置 汇编语言没有变量表达式,寻址方式中的+*等不是EU计算的。一个变量表达式在汇编中要用多条指令实现 表达式具备与C同样的运算符顺序 有算术表达式、逻辑表达式 硬指令与软指令 硬指令:执行性语句,由CPU执行 软指令:指示性语句,由编译器/连接器识别,处理该指令 五、汇编语言的数据类型 简单数据类型与复杂数据类型 字符、数值、数组、地址与指针类型是简单数据类型 结构struct、联合union是复杂的数据类型,是多个数(类型可不同)组成的一个

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档