网站大量收购闲置独家精品文档,联系QQ:2885784924

汇编语言程序设计06整数运算指令与高级过程.ppt

汇编语言程序设计06整数运算指令与高级过程.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
INVOKE与PROC INVOKE伪指令 调用一个名为AddTwo的过程,传递val1和val2参数 PROC伪指令的改进 汇编语言程序设计 - 朱明 * INVOKE 过程名[,参数列表] 立即数 10h, 3000h, OFFSET arr1 整数表达式 (10*20) 变量名 arr1, val1 地址表达式 [esi], arr1[esi] 寄存器名 eax, ebx, ecx ADDR名 ADDR arr1 INVOKE AddTwo, val1, val2 AddTwo PROC, val1: BYTE, val2: BYTE INVOKE与PROC 第一次作业的题目——数组求和问题 将该程序结构化为一个主过程和一个字过程 主过程负责调用子过程并保存运算结果 子过程负责对数组各元素进行加法运算 汇编语言程序设计 - 朱明 * arr1 DWORD 111h, 222h, 333h, 444h, 555h ESI保存有数组的首地址 ECX保存数组的元素数目 调用数组加法运算子过程 EAX保存运算结果 获取EAX中的运算结果 INVOKE与PROC 第一次作业的题目——数组求和问题 汇编语言程序设计 - 朱明 * mov eax, 0 L1: add eax, [esi] add esi, 4 loop L1 核心数组加法运算代码 ArraySum PROC, offArr: DWORD sizeArr: DWORD pop esi, ecx ret ArraySum ENDP 子过程返回和定义 push esi, ecx mov esi, offArr mov ecx, sizeArr 使用获得的参数 定义带有参数传递的过程 哦? 使用USES伪指令可以简化现场的保护和恢复过程 在PROC,后加入 USES esi, ecx 即可以省去程序中对于使用到的寄存器的push压栈和pop弹栈 INVOKE与PROC 第一次作业的题目——数组求和问题 INVOKE极大的简化了参数的传递过程 通过堆栈传递参数比通过寄存器传递要更容易使用 简化了通过堆栈传递参数的细节问题 带有参数的PROC位指令定义的过程 汇编器会自动修改ret指令的内容 汇编语言程序设计 - 朱明 * .data … .code main PROC INVOKE ArraySum, OFFSET arr1, LENGTHOF arr1 mov results, eax main ENDP END main 主过程实现带有参数传递的调用 章节回顾 三种移位指令:逻辑移位,算术移位和循环移位 三种移位的特点以及与CF位的关系 无符号数的乘法指令MUL 乘数、被乘数以及运算结果的保存 有符号数乘法指令IMUL 三种格式以及对应的结果保存 加法扩展指令与减法扩展指令 局部变量与堆栈* 递归运算方法 带有参数传递的过程 INVOKE和PROC伪指令 汇编语言程序设计 - 朱明 * 章节回顾 以下的问题我们应当轻松回答 逻辑右移指令(SHR)和算数右移指令(SAR)在移位时最高位以什么填充,最低位移出至何处? 在使用双精度移位指令时,源操作数和目的操作数分别会发生什么样的变化? MUL进行32位无符号数乘法运算时,结果如何保存? ADC指令进行扩展加法运算时,除了将源操作数和目的操作数相加外,还会考虑什么因素? LOCAL伪指令可以为过程定义定义局部变量,局部变量在程序运行过程中保存在什么地方? 相对于CALL指令,使用INVOKE伪指令进行过程调用有什么明显好处? 汇编语言程序设计 - 朱明 * * 2 mov eax, val1 mov ebx, 5 mul ebx mov ebx, val sub ebx, 3 div ebx mov val4, eax 3 mov eax, val2 neg eax cdq idiv val3 mov ebx, edx mov eax, -5 imul val1 idev ebx mov val4, eax * * * * * * 汇编语言程序设计 - 朱明 _06_整数运算指令与高级过程 大连理工大学软件学院_朱明 2009年5月31日_ V1.1 提问与回顾 第五章内容中我们介绍并练习了外部链接库中的一些常用过程 调用这些过程使用什么指令? 在逻辑运算部分内容中 AND指令用于进行逻辑与运算,但他在改变标志位的同时也改变了目的操作数,什么指令能够实现逻辑与运算功能但只改变标志位而不改变操作数? 同样,哪条指令与SUB类似但只改变标志位? 该条指令比较后,如相等则

文档评论(0)

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

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

1亿VIP精品文档

相关文档