汇编语言程序设计04循环控制与过程

汇编语言程序设计04循环控制与过程

ID:39778807

大小:4.47 MB

页数:39页

时间:2019-07-11

汇编语言程序设计04循环控制与过程_第1页
汇编语言程序设计04循环控制与过程_第2页
汇编语言程序设计04循环控制与过程_第3页
汇编语言程序设计04循环控制与过程_第4页
汇编语言程序设计04循环控制与过程_第5页
资源描述:

《汇编语言程序设计04循环控制与过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇编语言程序设计_04_循环控制与过程大连理工大学软件学院_朱明2009年5月31日_V1.1第三章提问MOV指令要求源操作数和目的操作数的尺寸必须相同,其功能为将源操作数的值复制到目的操作数中,但有两个源操作数要比目的操作数尺寸小的类似功能的指令是什么?其功能是什么?CF(进位标志位)的判断方法是什么?OF(溢出标志位)的判断方法是什么?SIZEOF操作符、LENGTHOF操作符和TYPE操作符分别返回什么值?三者之间有什么关系?PTR操作符是否会改变操作数的原有类型?保护模式下程序可以访问的最大虚拟内存范围是多少?是如何计算的?什么操作符可取得其段内偏移地址?汇

2、编语言程序设计-朱明2前章回顾前章一个小题目,10%成绩如果我们要用这些指令对一个数组进行求和的操作假设在程序运行之前,数组的大小(5个元素)和元素大小都是已知的(DWORD)要求你的程序仅使用今天以前讲过的指令完成数组中有5个DWORD类型元素的如果元素数目和大小未知怎么办?想办法知道元素的数目和大小建立一个具有判断机制的循环体汇编语言程序设计-朱明3前章回顾…arr1DWORD111h,222h,333h,444h,555hLOOP指令组成原理实验中的实现循环方法到LOOP循环汇编语言程序设计-朱明4Section1…AX-1JC?AX=初始值CF(CY)作计数

3、的寄存器ECX寄存器在与循环指令联合使用时,被自动作为计数器,每次循环之后减去1标号:正常循环体ECX=初始值LOOP标号LOOP指令LOOP指令的执行过程汇编语言程序设计-朱明5标号:正常循环体ECX=初始值LOOP标号LOOP指令的执行包含两个步骤ECX的值减1,并与0作比较如果ECX不等于0,则跳转到对应标号地址处;如果ECX等于0则不跳转与LOOP指令类似的有使用ECX作计数器的LOOPD和使用CX作为计数器的LOOPWLOOP的跳转范围必须在-128~+127字节范围内(Offset=8位有符号)多层嵌套必须考虑好ECX的占用与保存问题Section1…J

4、MP指令无条件段内跳转指令JMP的跳转是无条件的,同时存在条件跳转指令JG/JNG,大于则跳转/不大于则跳转JC/JNC,进位则跳转/不进位则跳转…..汇编语言程序设计-朱明6标号:正常循环体JMP标号JMP指令能够实现段内的无条件跳转段内跳转不代表可以随意跳转要考虑标号的作用域问题,即每一个标号只能在他所在的过程中(PROC)中可见可使用全局标号Section1…问题处理程序代码汇编语言程序设计-朱明7TITLESummingofArray;Thisisaexample,loopongcontrolINCLUDEirvine32.inc.dataarr1DWORD

5、111h,222h,333h,444h,555hval1DWORD?.codemainPROCmoveax,TYPEarr1movval1,eaxmovecx,LENGTHOFarr1moveax,0L1:;把arr1里面元素的值逐一加到一起的方法LOOPL1exitmainENDPENDmain取得数组相关信息把数据逐一相加间接寻址如何访问下一个数据Section1…间接寻址在第三章中讲过的直接寻址…直接寻址的[]中存放的直接就是地址/偏移间接寻址-间接操作数通过间接操作数寻址时[]中存放的是寄存器的名称,而该寄存器中保存着数据的地址/偏移间接寻址中的操作数(寄存

6、器中的值)很容易修改,因此在操作内存中连续的数据(例如数组)时,可实现类似数组下标的功能来访问不同元素汇编语言程序设计-朱明8moval,[value1]moval,[esi]Section1……间接寻址通过间接操作数寻址访问数组注意要访问的数组元素的大小汇编语言程序设计-朱明9arr2BYTE10h,20h,BYTE30h,40hmovesi,OFFSETarr2moval,[esi]incesimoval,[esi]incesimoval,[esi]Section1…假设此时esi=00040500esi=0004050110h20h30h40h…0004050

7、0000405010004050200040503esi=00040502问题处理加入间接寻址的方法汇编语言程序设计-朱明10….dataarr1DWORD111h,222h,333h,444h,555hval1DWORD?.codemainPROCmoveax,TYPEarr1movval1,eaxmovecx,LENGTHOFarr1movesi,OFFSETarr1moveax,0L1:addeax,[esi]addesi,val1LOOPL1exitmainENDPENDmain间接寻址Section1…使用ESI问题处理对于整数数组求和问题的总结与思考

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。