汇编语言程序设计-第七章_高级汇编语言技术.ppt
《汇编语言程序设计-第七章_高级汇编语言技术.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计-第七章_高级汇编语言技术.ppt(78页珍藏版)》请在三一办公上搜索。
1、第七章 高级汇编语言技术,河南师范大学计算机与信息技术学院,2,2023/2/25,本章内容提要,河南师范大学计算机与信息技术学院,3,2023/2/25,7.1 高级语言特性,河南师范大学计算机与信息技术学院,4,2023/2/25,MASM6.0引入高级语言的程序设计特性,条件控制伪指令.IF.ELSE.ENDIF,循环控制伪指令.WHILE.ENDW.REPEAT.UNTIL,过程声明和过程调用伪指令.PROTO.INVOKE,河南师范大学计算机与信息技术学院,5,2023/2/25,7.1.1 条件控制伪指令,利用条件分支伪指令可以简化分支结构的编程。,格式:,.IF条件表达式分支体.
2、ELSEIF条件表达式分支体.ELSE分支体.ENDIF,条件表达式允许的操作符。,这些伪指令在汇编时要展开,自动生成相应的比较和条件转移指令序列,实现程序分支。,河南师范大学计算机与信息技术学院,6,2023/2/25,操作注意,运算符的优先级顺序:,逻辑非最高;其次是比较类运算符;最低是逻辑与、逻辑或。圆括号可以改变优先级顺序。,确定操作数的符号:,条件表达式中的变量,若是用DB、DW、DD定义的,则一律视为无符号数。若需要进行有符号数的比较,变量定义时要用SBYTE、SWORD、SDWORD。,河南师范大学计算机与信息技术学院,7,2023/2/25,条件伪指令应用举例,例1单分支,例2
3、双分支,例3有无实根判断,河南师范大学计算机与信息技术学院,8,2023/2/25,7.1.2 循环控制伪指令,先判断后执行的WHILE结构伪指令格式:.WHILE条件表达式循环体.ENDW,先执行后判断的UNTIL结构伪指令格式:.REPEAT.REPEAT循环体或循环体.UNTIL条件表达式.UNTILCXZ 条件表达式,.BREAK:无条件退出循环;.CONTINUE:转向循环开始。,河南师范大学计算机与信息技术学院,9,2023/2/25,操作注意,不带条件表达式的.repeat/.untilcxz伪指令将汇编成一条loop指令,即重复执行直到CX减1后,CX=0;,带有条件表达式的.
4、repeat/.untilcxz伪指令的循环结束条件是CX减1后等于0或指定的条件为真。,.untilcxz伪指令的条件表达式只能是比较:寄存器与寄存器、存储单元和常数;存储单元与常数相等或不等。,河南师范大学计算机与信息技术学院,10,2023/2/25,循环伪指令应用举例,例41100求和WHILE结构,例51100求和UNTILE结构,例6数组中非负数的和,河南师范大学计算机与信息技术学院,11,2023/2/25,7.1.3 过程定义和过程调用伪操作,过程名PROC调用距离 语言类型 作用范围 USES 寄存器列表,参数:类型LOCAL 参数表;汇编语言语句过程名ENDP,要调用带参数
5、过程定义的过程,不应采用CALL指令,因为比较烦琐。应该采用过程调用伪指令INVOKE。使用INVOKE伪指令的前提是需要用PROTO伪指令对过程进行声明。,过程声明伪指令:用于事先声明过程的结构过程名PROTO 调用距离 语言类型,参数:类型过程调用伪指令INVOKE 过程名,参数,.,例ltd.asm,河南师范大学计算机与信息技术学院,12,2023/2/25,7.2 宏汇编,河南师范大学计算机与信息技术学院,13,2023/2/25,宏结构,宏汇编、重复汇编、条件汇编宏结构,河南师范大学计算机与信息技术学院,14,2023/2/25,7.2.1 宏定义、宏调用与宏展开,宏具有宏名的一段汇
6、编语句序列,在宏定义时书写;,宏(Macro)是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法。,宏指令这段汇编语句序列的缩写,在宏调用时书写;,宏展开宏指令处用这段宏代替的过程,在宏汇编时实现,河南师范大学计算机与信息技术学院,15,2023/2/25,1.宏定义,格式:,宏名macro 形参表宏定义体endm,宏名:给出该宏定义的名称,调用时就使用宏名来调用该宏定义。,宏名必须以字母开头,可以是字母、数字或下划线组成的标识符。,形参:又称哑元。形参表给出了宏定义中所用到的形式参数(或称虚参),参数之间用逗号隔开。,例7.1宏定义,河南师范大学计算机与信息技术学院,1
7、6,2023/2/25,2.宏调用,宏名实参表,实参:又称实元。各参数之间用逗号隔开。,宏必须先定义后调用。,一般把宏定义放在程序中所有段的代码之前。,例7.1宏调用,河南师范大学计算机与信息技术学院,17,2023/2/25,3.宏展开,宏展开:在汇编时,用宏定义体的代码序列替代宏指令的过程。,而且用实参取代宏定义中的形参。在取代时,实参和形参是一一对应的。,一般来说,实参和形参的个数应相等。,当实参个数大于形参个数时,则多于的实参不予考虑;若实参个数小于形参个数时,则多于的形参作“空”处理。,例7.1宏展开,河南师范大学计算机与信息技术学院,18,2023/2/25,宏与子程序,宏:仅是源
8、程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变。通过形参、实参结合实现参数传递,简捷直观、灵活多变。,子程序:还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢 需要利用寄存器、存储单元或堆栈等传递参数,通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序。如图7.1所示。,河南师范大学计算机与信息技术学院,19,2023/2/25,7.2.2 宏定义中的参数,宏的参数功能强大,颇具特色。配合宏,还有宏操作符和有关伪指令。,宏定义时:,可以无参数,如例7
9、.2。可以带有一个参数,例7.5 也可以具有多个参数;如例7.3、例7.4、例7.6、例7.7 参数可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;如例7.3、例7.4、例7.5、例7.7。,宏定义体可以是任何合法的汇编语句,既可以是硬指令序列,又可以是伪指令序列;如例8。,河南师范大学计算机与信息技术学院,20,2023/2/25,宏操作符,;宏注释符,用于表示在宏定义中的注释。采用这个符号的注释,在宏展开时不出现。&替换操作符,用于将参数与其他字符分开。如果参数紧接在其他字符之前或之后,或者参数出现在带引号的字符串中,就必须使用该伪操作符。字符串传递操作符,用于括
10、起字符串。在宏调用中,如果传递的字符串实参中含有逗号、空格等间隔符号,则必须用这对操作符,以保证字符串的完整。!转义操作符,用于指示其后的一个字符作为一般字符,不含特殊意义。%表达式操作符,用在宏调用中,表示将后跟的一个表达式的值作为实参,而不是将表达式本身作为参数。,河南师范大学计算机与信息技术学院,21,2023/2/25,7.2.3 LOCAL伪操作,局部标号伪指令:LOCAL 标号列表,宏定义体采用了标号,应使用LOCAL加以说明。,它必须是宏定义MACRO语句之后的第一条语句。,在MACRO和LOCAL之间不允许有注释和分号标志。,例7.8,河南师范大学计算机与信息技术学院,22,2
11、023/2/25,7.2.4 在宏定义中使用宏,例7.9、例7.10、例7.11,河南师范大学计算机与信息技术学院,23,2023/2/25,7.2.5 列表伪操作,MASM提供.XALL、.LALL和.SALL来控制汇编清单中宏展开的列出情况。,.XALL为默认情况,它指示清单中只列出产生目标代码的宏展开;,.LALL指示列出包括注释在内的所有宏展开。,.SALL则不列出任何展开信息。,MASM6.0中,三个伪操作分别为:,.LISTMACROALL.LISTMACRO.NOLISTMACRO,见P256 例7.12,河南师范大学计算机与信息技术学院,24,2023/2/25,7.2.6 宏
12、库的建立和调用,宏库:包含若干宏定义的文件,扩展名为.MAC或.INC。,如果程序中定义了很多宏,或者用户可以把自己编程中常用的宏定义建立成一个独立的文件,即宏库。,当程序中需要宏库中的宏定义时,只需在程序的开始部分用INCLUDE语句说明即可。如:INCLUDEC:MACRO.MAC,汇编程序将把宏库中的所有宏定义都包含在应用程序中。,INCLUDE语句不一定要放在程序的最前面,但必须放在所有宏调用之前。,见P259261的代码,河南师范大学计算机与信息技术学院,25,2023/2/25,7.2.7 PURGE和EXITM伪操作,宏定义删除伪指令PURGE 宏名表,不需要某个宏定义时,可以把
13、它删除。,宏定义退出伪指令EXITM,伪指令EXITM表示结束当前宏调用的展开。,河南师范大学计算机与信息技术学院,26,2023/2/25,7.3 重复汇编,河南师范大学计算机与信息技术学院,27,2023/2/25,重复汇编,重复汇编指在汇编过程中,重复展开一段(基本)相同的语句。,重复汇编没有名字,不能被调用。,重复汇编常用在宏定义体中,也可以在一般汇编语句中使用。,重复汇编伪指令有三个:,REPEAT按参数值重复;FOR按参数个数重复FORC按参数的字符个数重复(在MASM5.0版本中依次是REPT/IRP/IRPC),最后,用ENDM结束。,河南师范大学计算机与信息技术学院,28,2
14、023/2/25,7.3.1 重复伪操作,按参数值重复REPEAT/REPT:,REPEAT(REPT)重复次数 重复体ENDM,例7.13、例7.14、例7.15、例7.16,河南师范大学计算机与信息技术学院,29,2023/2/25,7.3.2 不定重复伪操作,按参数个数重复FOR/IRP:,FOR 形参,实参表 重复体ENDM,按参数字符个数重复FORC/IRPC:,FORC 形参,字符串重复体ENDM,例7.17、例7.18,例7.19、例7.20,河南师范大学计算机与信息技术学院,30,2023/2/25,7.4 条件汇编,河南师范大学计算机与信息技术学院,31,2023/2/25,
15、条件汇编语句,条件汇编伪指令在汇编过程中,根据条件决定汇编的语句。,IFxx 表达式;满足,汇编分支语句体1分支语句体1 ELSE;不满足,汇编分支语句体2分支语句体2 ENDIF;条件汇编结束,表达式中可以使用的关系操作符EQ、NE、LT、LE、GT和GE。,条件伪操作可以用在宏定义体内,也可以用在宏定义体外,还允许嵌套。,河南师范大学计算机与信息技术学院,32,2023/2/25,条件汇编伪操作,河南师范大学计算机与信息技术学院,33,2023/2/25,条件伪操作应用举例,IF伪操作例7.21、例7.22、例7.23P266-268,IF1伪操作例7.24P269-230,IFNDEF伪
16、操作P270-274 例7.25,IFB伪操作例7.26、例7.27 P274-276,IFIDN伪操作P276-278 例7.28,例9,河南师范大学计算机与信息技术学院,34,2023/2/25,练习与作业,练习:7.9、7.15提交作业:7.7、7.11,河南师范大学计算机与信息技术学院,35,2023/2/25,条件表达式中的操作符,格式:数值表达式&位数,优先级顺序,河南师范大学计算机与信息技术学院,36,2023/2/25,例1 单分支,求AX绝对值.IFAX 0;等价于.IF SIGN?NEGAX;满足,求补.ENDIFMOVRESULT,AX,河南师范大学计算机与信息技术学院,
17、37,2023/2/25,例2 双分支,.IFax=5movbx,axmovax,0.ELSEdecax.ENDIF,汇编后的列表文件,河南师范大学计算机与信息技术学院,38,2023/2/25,例2的列表文件,例2汇编后的列表文件:.IFax=5*cmpax,05h*jneC0001movbx,axmovax,0.ELSE*jmpC0003*C0001:dec ax.ENDIF*C0003:,河南师范大学计算机与信息技术学院,39,2023/2/25,例3 有无实根-1,.model small.stack.data_asbyte?_bsbyte?_csbyte?tagbyte?.code.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 第七 高级 技术
链接地址:https://www.31ppt.com/p-2802521.html