- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言程序设计_07_高级过程与字符串和数组大连理工大学软件学院_朱明2009年5月31日_ V1.1提问与回顾 第六章内容中我们介绍了移位、乘法和除法指令,扩展加减法指令,以及高级过程的定义和调用的内容 ROL指令在进行向左移位的过程中,最低位用什么数据填充?最高位被移出至何处? IMUL有符号数乘法指令有哪三种基本格式? IDIV进行有符号数除法运算时需要使用CBW、CWQ和CDQ指令进行何种操作? ADC指令在进行加法运算时,考虑哪三个因素相加? LOCAL定义的局部变量保存在何处?为了访问这些变量或访问其中传递的参数,通常需要用到那些寄存器? INVOKE指令与CALL指令在功能上有何不同?提问与回顾…汇编语言程序设计 - 朱明ESP与EBP 1 过程调用的堆栈参数传递:将参数压入到堆栈中 2 过程调用与堆栈:将返回地址压入到堆栈中 3 过程中读取参数时使用EBP寄存器寻址传递的参数…ESP值减4,将传递的参数压入到堆栈中这是堆栈传递参数的过程调用的第一个阶段…传递的参数返回后地址…ESP值减4,返回后地址压入到堆栈中这是一般过程调用的第一个阶段返回后地址传递的参数EBPEBPESP值再减4为使用EBP进行寻址,先将其保护到堆栈中返回后地址Section 1…传递的参数汇编语言程序设计 - 朱明ESP与EBP 4 过程中获取堆栈传递来的参数,通过EBP 5 过程运行结束前,需要恢复原来的ESP的值EBP使用EBP进行间接寻址前还应当获取正确的位置正确的位置就是当前ESP的位置,即令EBP=ESP返回后地址传递的参数局部变量等在使用堆栈传递参数的过程中,只能使用EBP寻址如要访问传递来的参数,则对应的位置为EBP+8但是程序运行过程中定义变量则会改变ESP的值EBP返回后地址传递的参数程序结束之前,应当恢复原有ESP的值相当于释放局部变量占用的堆栈空间此外需要特别注意的是还要清理堆栈EBP返回后地址传递的参数Section 1…汇编语言程序设计 - 朱明PROTO伪指令 INVOKE伪指令用来调用带有参数传递的子过程 PROC伪指令可以用来调用带有参数传递的子过程 PROTO伪指令用来为已经存在的过程创建原型 有点像是高级语言函数?MyProg PROTO过程原型MyProg PROC……MyProg ENDPINVOKE MyProg过程调用过程实现MyProg PROC……MyProg ENDP过程实现INVOKE MyProg过程调用标准使用顺序先实现后使用Section 2…汇编语言程序设计 - 朱明多模块过程* 整数求和的过程化设序设计方法 按照功能将程序划分为各个过程 主过程、取得用户输入、计算和、输出计算结果 多模块过程程序 多模块过程指使用MASM的高级过程伪指令INVOKE、PROTO和带有参数扩展的PROC创建的过程 多模块程序相对于CALL的直接调用,其优点在于检查INVOKE位指令传递的参数和PROC伪指令声明的参数 一个好的多模块过程程序应该具有一定的文件结构 XXX.inc包含文件 XXX_main.asm主过程文件 _YYY.asm,_ZZZ.asm模块文件Section 2…汇编语言程序设计 - 朱明多模块过程* 整数求和问题的多模块过程结构 位于C:\irvine\examples\ch08\ModSum32_adva nced\ModSum文件夹下,多个文件 sum.inc包含文件:子过程的原型声明 子过程模块:_prompt.asm、_arraysum.asm、_display.asm对应原型声明内容INCLUDE irvine32.incPromptForInteger PROC, ptrPrompt: BYTE, ;提示输入字符串 ptrArray: PTR DWORD, ;指向数组 ArraySize: DWORD ;数组大小ArraySum PROTO,…DisplaySum PROTO…Section 2…汇编语言程序设计 - 朱明多模块过程* _display.asm文件的部分内容 主过程模块:Sum_main.asm,包含启动过程main以及对于外部每个过程的调用,该文件使用了INCLUDE伪指令从sum.inc文件中复制过程的原型声明INCLUDE Sum.inc.code;-------------------------------------------------------DisplaySum PROC, ptrPrompt: PTR BYTE, ;输出提示字符串 theSum: DWORD ;运算结果;-----------------------------------------------
您可能关注的文档
最近下载
- 第4课 科技力量大 第1课时(课件)2025道德与法治三年级上册统编版.pptx
- 急!错误号—2146827859如何解决&浏览器不能创建xml组件.docx VIP
- 外研版小学英语单词汇总(三年级-六年级).pdf VIP
- 涉企行政检查规范培训.pptx
- 单元语法和配套练习 Unit 4 新版 2025年新外研版八年级上册.pdf
- 川教版(2024)《信息技术》四年级上册 第一单元 第3节 《会讲故事的数据》课件.pptx VIP
- 常用化工设备标准规范.pdf VIP
- 单元语法和配套练习 Unit 3 新版 2025年新外研版八年级上册.pdf
- OTIS奥旳斯ACD5调试手册调试资料DAA29100AD_SUR_ACD5-77.pdf
- 股权转让协议担保.docx VIP
文档评论(0)