汇编语言PPT教学课件-第10章 高级汇编语言技术.ppt_第1页
汇编语言PPT教学课件-第10章 高级汇编语言技术.ppt_第2页
汇编语言PPT教学课件-第10章 高级汇编语言技术.ppt_第3页
汇编语言PPT教学课件-第10章 高级汇编语言技术.ppt_第4页
汇编语言PPT教学课件-第10章 高级汇编语言技术.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章高级汇编语言技术,主讲人:,10.1宏汇编,在编写汇编语言程序的过程中,有的某个程序段要出现许多次,有的只是参数不同,但功能完全一样,则这样的程序段可以定义成一个指令,并且称它为宏指令。,10.1.1宏定义宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次定义它,调用时只需用一个宏指令语句就可以了。若想在汇编语言中使用宏指令,就要定义一个宏。宏定义是用一组伪操作来实现的。宏定义格式为:宏指令名MACRO形参1,形参2,宏体ENDM,宏指令名:宏定义的名字,不可缺省,宏调用时需要用它,第一个符号必须是字母,其后可以是字母或数字。MACROENDM:宏定义伪指令助记符,不可缺省。它们成对出现,表示宏定义的开始和结束,ENDM前不带宏指令名。宏体:一段有独立功能的程序代码段。形式参数:又称哑元、虚参,是可选项,带参数时候,各个形参之间用逗号隔开。,10.1.2宏调用和宏展开1、宏调用在汇编语言中使用已定义过的宏指令,称为宏调用。宏调用格式为:宏指令名实参1,实参2,宏调用只需要有宏指令名,如果宏定义中有形参,则宏调用时须带有实参来代替形参,实参的个数,顺序,类型要与形参一一对应,各个实参之间用逗号分开。原则上实参的个数与形参的个数相等,但汇编程序不要求它们必须相等,如果实参个数大于形参个数,那么多余的实参不予考虑,若实参个数小于形参,则多余的形参作“空”处理。,2、宏展开汇编程序在对源程序汇编时,对每个宏调用作宏展开,即用宏定义中的宏体取代宏指令名,并用实参一一对应代替形参。,10.1.3宏调用中的参数使用为了宏定义和引用的某些特殊需要,有的实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的操作符。1、连接操作符&在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,使用连接操作符&。在宏指令定义的具体使用时,连接操作符&可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号连接在一起构成一个新的符号。,2、文本操作符文本操作符是一对尖括号,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则需要使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该操作符括起来。,3、表达式操作符进行宏调用时,如要在实参中使用“”,则在宏指令调用时汇编程序将获取“”后常数表达式的值作为参数,而非表达式本身。,4、字符操作符!字符操作符!的作用说明,“!”后的字符不是特殊字符,而是普通字符。对于包含在“”、“!”、“%”之间的文本串,汇编程序将以普通字符处理。如将“!”作为普通字符,则使用!。,10.1.4宏嵌套宏指令定义中含有宏定义或者是宏指令定义中含有宏调用,这两种情况都称为宏嵌套。宏定义中嵌套宏定义形式如下:ABCD_1MACROABCD_2MACROENDMENDMENDM,10.1.5宏汇编中的伪指令1、MACRO和ENDM在前面的宏指令的定义中已经介绍过,这是宏操作时必不可少的指令,而且成对出现。,2、PURGEPURGE的功能是取消多个宏定义,即一个宏指令定义可以用伪指令PURGE来取消,然后可以再重新定义。经过定义的宏指令名,不允许重新定义,必须用PURGE语句将其取消后,才能重新定义,此语句可以取消多个宏指令名。格式:PURGE宏指令名1,宏指令名2,取消宏定义的含义是使该宏定义成为空,程序中如果出现一个已被取消宏定义的宏调用,则汇编程序将不会指示出错,但它将忽略该宏调用,当然也不会予以展开。,3、LOCAL某些宏定义中存在变量或标号,这些宏定义在同一程序中被多次调用且展开后,就会出现变量或标号重复定义的错误。LOCAL伪指令的使用可以避免此类错误。在宏展开时,让宏汇编程序自动为其后的形参顺序生成特殊符号(范围为?0000?FFFFH),并用这些特殊符号来取代宏体中的变量或标号,避免了符号重复定义的错误。必须注意,LOCAL伪操作只能用在宏体内,而且它必须是MACRO伪操作后的第一句,在MACRO和LOCAL伪操作之间还允许有注释和分号标志。格式:LOCAL形参1,形参2,,10.2重复汇编,在编写源程序时,有时会出现连续相同或几乎完全相同的一组代码。当出现这种情况时,可利用重复伪指令来重复汇编,从而达到简化程序的目的。重复汇编伪指令所定义的重复块是宏的一种特殊形式,也是由伪指令ENDM来结束重复块。用重复汇编伪指令定义的重复块也可带有参数,并在汇编过程中参数被实参代替,但重复块不会被命名,不能在程序的其它地方引用。,10.2.1使用REPT伪指令的重复汇编结构指令格式:REPT表达式重复语句序列ENDM指令以REPT开始,ENDM结束。其中,表达式是REPT与ENDM中间的语句序列需要重复的次数,可以是具体数值,表达式中不能包含有任何外部的或没有定义的项,否则产生错误。,10.2.2使用IRP伪指令的重复汇编结构指令格式:IRP形参,重复语句序列ENDM,10.2.3使用IRPC伪指令的重复汇编结构指令格式:IRPC形参,字符串(或)重复语句序列ENDM每当汇编重复语句序列时,汇编程序将依次用字符串中的一个字符替代形参,直到字符串中的字符替代完毕。重复次数由字符串中字符个数来确定。IRPC伪指令的形参也只能有一个。,10.2.4条件汇编伪指令PC机有8种条件汇编伪指令,它们是IF、IFE、IFDEF、IFNDET、IFB、IFNB、IFIDN、IFNIDN。一般格式是:IFXX表达式语句序列1ELSE语句序列2ENDIFIF与ENDIF必须有,且成对出现,ELSE是可选的,其中IFXX是上述l0种条件汇编伪指令之一,XX为指定的条件,如果指定的条件成立,宏汇编程序将汇编语句序列1,否则汇编语句序列2。,10.3宏指令与子程序的区别,宏汇编是用一条宏指令来代替一个程序段,可有效地源代码的书写长度,且格式清晰,调用方便。在某种意义上,子程序也有类似功能,但二者之间有明显的区别,主要区别在以下几个方面:1过程调用使用CALL语句,由CPU执行,宏指令调用由汇编程序中宏处理程序来识别。2过程调用时,每调用一次都要保留程序的断点和保护现场,返回时要恢复现场和断点,增加了操作时间,执行速度慢。而宏指令调用时,不需要这些入栈和出栈操作,执行速度较快。,3过程调用的子程序与主程序分开独立存在,经汇编后在存储器中只占一个子程序段的空间,主程序转入此处运行,因此目标代码长度短,节省内存空间。而宏调用是在汇编过程中,宏调用多少次,就插入多少次,故目标代码长度长,占内存空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论