第5章 高级汇编语言程序设计ppt课件.ppt

第5章 高级汇编语言程序设计ppt课件.ppt

ID:58699870

大小:839.50 KB

页数:77页

时间:2020-10-04

第5章 高级汇编语言程序设计ppt课件.ppt_第1页
第5章 高级汇编语言程序设计ppt课件.ppt_第2页
第5章 高级汇编语言程序设计ppt课件.ppt_第3页
第5章 高级汇编语言程序设计ppt课件.ppt_第4页
第5章 高级汇编语言程序设计ppt课件.ppt_第5页
资源描述:

《第5章 高级汇编语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章教学重点在掌握基本的汇编语言程序设计方法之后,进一步学习如何提高编程效率的各种实用方法:高级语言特性宏结构模块化5.1高级语言特性MASM6.0引入高级语言的程序设计特性条件控制伪指令格式.IF条件表达式语句组1.ELSE语句组2.ENDIF功能条件表达式为真,执行语句组1,否则执行语句组2(与C语言相似)条件表达式的运算符构成见表5.1所示5.1高级语言特性如:.ifax==5movbx,axmovax,0.elsedecax.endif汇编后等价代码:cmpax,5jnz@c0001movbx

2、,axmovax,0jmp@c0003@c0001:decax@c0003:……5.1高级语言特性讨论(1)汇编程序在翻译条件表达式时将生成一组功能等价的比较、测试、转移指令(2)运算符的顺序是先关系后逻辑,但非运算最高,与、或运算最低,亦可用括号改变运算符的运算顺序(3)注意条件表达式中两个比较数的符号。所有的数据原则上均视为无符号数,如果要使用有符号数,对于变量应使用sbyte、sword、sdword定义数据;对于寄存器应使用sbyteptr、swordptr临时修改属性(4)条件表达式中若其中一

3、个数据为有符号数,则强制另一个数也是有符号数5.1高级语言特性循环控制伪指令格式.WHILE条件表达式;条件为真循环循环体.ENDW.REPEAT循环体.UNTIL条件表达式;循环直到条件为真.REPEAT循环体.UNTILCXZ[条件表达式];循环直到;CX-1→CX=0或条件为真5.1高级语言特性讨论(1)循环体中可以使用BREAK、CONTINUE来终止循环或提前进入下一轮循环(2)上述三种形式可以构成当型循环和直到型循环(3)不带条件的.REPEAT/.UNTILCXZ将汇编成一条LOOP指令;

4、带条件的.REPEAT/.UNTILCXZ终止循环的条件是条件为真或CX减“1”后等于“0”(4).REPEAT/.UNTILCXZ适用于寄存器与寄存器、存储器与常数之间的相等(==)或不等(!=)比较5.1高级语言特性例5.2array是100个字元素的数组,试计算前若干个非负数之和,直到出现第一个负数为止,结果存入result单元中;LT502.ASM.modelsmall.stack.dataarraysword100dup(?)resultsword?.code.startupmovcx,100

5、xorax,axleabx,array5.1高级语言特性.repeat.ifswordptr[bx]>=0addax,[bx].else.break.endifincbx;修改地址指针incbx.untilcxzmovresult,ax.exit0end5.1高级语言特性汇编后等价代码:@C0001:cmpswordptr[bx],0000hjl@C0002addax,[bx]jmp@C0004@C0002:jmp@C0006@C0004:incbxincbxloop@C0001@C0006:.....

6、.5.1高级语言特性过程声明和过程调用伪指令汇编语言子程序间、程序模块之间利用堆栈传递参数是一种主要的形式,但比较复杂和容易出错,所以,MASM6.x参照高级语言函数形式扩展了PROC伪指令的功能,使其具有带参数的能力,极大地方便了过程或函数之间的参数传递5.1高级语言特性格式过程名PROC[调用距离][语言类型][作用范围][<起始参数>][USES寄存器列表][,参数:[类型]]……LOCAL变量名[个数][:类型][,…]……;汇编语言语句过程名ENDP说明(1)调用距离:NEAR或FAR,默认值

7、由.model选择的存储模式决定(2)语言类型:确定该过程采用的命名约定和调用约定,如表5.2所示,语言类型也可以由.model指定(3)作用范围:public、private等,表示该过程对其它模块是否可见,第5章5.1高级语言特性默认为public(可见),private(不可见)。(4)起始参数:使用该参数,汇编程序将自动创建过程的起始代码和收尾代码,用于传递堆栈参数和清除堆栈,参数须用<>括起来,多个参数用逗号分隔(5)寄存器列表:对于该表中的寄存器,汇编程序将自动在起始代码和收尾代码中产生相应

8、的进、出栈指令来保护其内容。多个寄存器用空格分隔(6)参数:类型:表示该过程使用的形参及类型,可以是任何MASM中有效的类型或PTR(地址指针)。16位段中默认为WORD,32位段中默认为DWORD。要使用参数类型则必须定义语言类型第5章5.1高级语言特性(7)LOCAL变量名[个数][:类型][,…]定义过程中使用的局部变量,如果使用了[个数],相当于定义数组。对于类型,16位段中默认为WORD,32位段中默认为DWORD。使用该伪指令后

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

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

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