IBM-PC汇编语言程序设计实例讲解课件_第1页
IBM-PC汇编语言程序设计实例讲解课件_第2页
IBM-PC汇编语言程序设计实例讲解课件_第3页
IBM-PC汇编语言程序设计实例讲解课件_第4页
IBM-PC汇编语言程序设计实例讲解课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第七章

高级汇编语言技术

宏汇编重复汇编条件汇编1方法2、当这组指令较短或不适合把它写成一个子程序 时,可以把它义成一个宏,每次需要执行时就去调用这个宏。问如果在一个程序中多次使用同一组指令时,为了避免每次都要重写,该如何解决?方法1、把这组指令写成一个子程序,每次需要执行时 只要调用这个子程序就可以了。27.1宏汇编

为用户提供更加容易、更加灵活、更加向高级语言靠拢的汇编工具。宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。汇编语言程序语句指令伪指令(伪操作)宏指令3宏定义

macro_name

MACRO

[哑元表];形参/虚参[LOCAL标号表]…… ……

ENDM*macro_name宏指令名(宏名),调用时用。

第一个符号必须是字母(注意与名称的差异)*[哑元表]形参表,哑元之间用逗号隔开*如果宏定义体有一个或多个标号,则必须用LOCAL伪操作列出所有的标号。???(宏定义体)一段有独立功能的程序代码5宏调用

macro_name

[实元表];实参*实元表中的实元与哑元表中的哑元在位置上一一对应;*若实元数>哑元数,则多余的实元无效;*若实元数<哑元数,则多余的哑元作“空(NUL)”处理;*对宏指令的调用必须先定义后调用。*应当注意,宏展开后,即用实参取代形式参数之后,所得到的语句应该是有效的,否则汇编时会出错。6宏展开

源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实元取代哑元,由LOCAL定义的标号也由??0000~??FFFF替代。7实元(在使用上要比子程序灵活)常数、寄存器、存贮单元用寻址方式能找到的地址、表达式指令的操作码、操作码的一部分8宏调用:在汇编期间被展开,每调用一次就把宏定义体 展开一次。宏定义宏调用宏展开Qmacrox,y

endm

……Qa,b……Qc,d……Qe,f……

……

………………10可以无变元可以是操作码可以是操作码的一部分,但在宏定义体中必须用

&来分隔。变元是ASCII串

%操作符7.1.2宏定义中的参数127.1.4在宏定义体内使用宏限制条件:必须先定义后调用在宏定义体内不仅可以使用宏,也可以可以包含宏定义(也就是说,宏定义允许嵌套)147.1.5列表伪操作.XALL默认值,只列出产生目标码的宏展开.LALL列出包括注释在内的所有宏展开.SALL不列出任何展开信息功能:控制汇编清单中宏展开的列出情况.LISTMACROALL.LISTMACRO.NOLISTMACROMASM6.0+;;注释;宏展开时,;;后面的注释不予展开。源程序(ASM文件)经汇编程序汇编,主要输出是OBJ文件和LST文件(列表文件)。LST文件同时列出源程序和机器语言程序清单,并给出符号表。157.1.6宏库的建立与调用宏库:只包含若干宏定义的文件,扩展名为MAC或LIB宏库的调用:

在程序的开始用INCLUDE语句说明,例如INCLUDEC:\MACRO.MACINCLUDED:\AAA\EEE.LIB注:INCLUDE语句可以不放在程序的最前面,但必须放在所有的宏调用之前宏库的建立:

由定义即可167.1.7PURGE伪操作宏指令名可与指令助记符和伪指令名同名,但这时宏指令的优先级最高,而同名的指令和伪操作便失效。格式:PURGE宏指令名[,宏指令名,…]PURGE可取消多个宏定义,而各宏指令名之间应以逗号分隔。功能:取消宏定义,使该宏定义为空。伪指令PURGE可取消宏定义,恢复指令的原来功效。17例7.1两个字相乘宏定义:multiply

MACRO

opr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpopdx

ENDM宏调用:

multiply

cx,var,xyz[bx]宏展开:

+pushdx+pushax+movax,cx+imulvar+movxyz[bx],ax+popax+popdx18例宏指令名与指令助记符或伪操作名相同,宏指令的优先级最高。宏定义:add

MACROopr1,opr2,result…………

ENDM宏调用:……addxx,yy,zzpurgeadd;取消宏定义……20例求绝对值(使用LOCAL伪操作)宏定义:absol

MACROoperLOCALnextcmpoper,0jgenextnegopernext:

ENDM宏调用:……absolvar……absolbx……宏展开:

……+cmpvar,0+jge??0000+negvar+??0000:……+cmpbx,0+jge??0001+negbx+??0001:……21;;注释;宏展开时,;;后面的注释不予展开。

例:QMACROm;displayamessage每次展开保留此注释;;misastring每次展开不保留此注释……

ENDM

%表达式;汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。237.2重复汇编在编写汇编语言程序中,有时需要进行连续地重复完成相同的或几乎完全相同的操作,这时可以使用重复汇编,使书写的程序变得相当简洁。重复汇编有两种格式重复伪操作不定重复伪操作24IPR伪操作[格式]IRP形式参数,<参数表>

…(指令体) ENDM[说明]其中,IRP和ENDM伪指令必须成对出现,其间是要重复的指令体。重复的次数由参数表中参数的个数所决定,而且每重复一次,依次用参数表中的参数来代替形式参数。参数表必须用尖括号括起来,参数间用逗号分隔。7.2.2不定重复伪操作IPR伪操作26IPRC伪操作[格式] IRPC形式参数,字符串(或<字符串>)

…(指令体) ENDM[说明]其中,伪指令IRPC和ENDM必须成对出现,其间是重复的指令体,重复的次数取决于字符串中字符的个数,在每次重复时,依次用字符串的字符代替形式参数。7

温馨提示

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

评论

0/150

提交评论