第九章-条件汇编与宏指令.ppt_第1页
第九章-条件汇编与宏指令.ppt_第2页
第九章-条件汇编与宏指令.ppt_第3页
第九章-条件汇编与宏指令.ppt_第4页
第九章-条件汇编与宏指令.ppt_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

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

文档简介

第九章条件汇编与宏指令,9.1条件汇编伪操作,9.2宏伪操作,9.1条件汇编伪操作,条件汇编伪操作允许用户在编制汇编语言程序时规定某种条件,汇编程序在汇编过程中测试条件是否成立,当条件成立时,则将某段汇编语言源程序汇编为目标程序,否则,不进行汇编。,IBMPC宏汇编程序提供了十种条件汇编伪操作命令:IF,IFE,IF1,IF2,IFDEF,IFNDEF,IFB,IFNB,IFIDN,IFDIF。,这些条件汇编伪操作命令的一般格式是:,IFxCONT:;条件块:ENDIF,IFxCONT:;条件块1ELSE:;条件块2ENDIF,下面分别介绍十种条件汇编伪操作命令的功能:,(1)IFCONT当条件表达式CONT的值不为零时,条件为真。,(2)IFECONT当条件表达式CONT的值为零时,条件为真。,(3)IF1如果是第一遍扫描,条件为真。,(4)IF2如果是第二遍扫描,条件为真。,(5)IFDEFCONT此操作中的条件CONT是一个符号,如果该符号已经定义,或已用EXTRN伪指令说明为外部标号,则条件为真。,(6)IFNDEFCONT此操作中的条件CONT是一个符号,如果该符号未经定义,并且也未经EXTRN伪指令说明,则条件为真。,(7)IFB如果尖括号中为空,则条件为真。,(8)IFNB如果尖括号中不为空,则条件为真。,(9)IFIDN,CHAR1和CHRA2为字符串,如果两个字符串相同,则条件为真。,(10)IFDIF,CHAR1和CHRA2为字符串,如果两个字符串不同,则条件为真。,例如:IFB条件为假,而IFB条件为真。IFIDN,条件为假,IFIDN条件为真。,条件汇编伪操作命令举例:ARG1EQU35HARG2=NOTARG1IF(ARG1ORARG2)EQ0FFFFHMOVAX,ARG1MOVBX,ARG2ADDAX,BXIF(ARG1ANDARG2)EQ0FFFFHSUBAX,CXIFEARG1ADDAX,DXENDIFMOVSI,AXENDIFMOVDI,AXENDIF,MOVAX,0035HMOVBX,0FFCAHADDAX,BXMOVDI,AX,9.2宏伪操作,9.2.1宏定义与宏结束伪操作命令1.宏定义的一般格式:MNAMEMACRO形式参数表:宏体:ENDM,2.宏调用与宏扩展在汇编语言源程序中,操作码段上写上宏名字,则称为宏调用。宏调用的格式:MNAME实在参数表汇编程序对汇编语言源程序进行汇编时,每当在操作码段遇到宏名字时,就用其相应的宏体代替它,即将它所代表的宏体写入宏名字的出现处,这个过程叫做宏扩展。在宏扩展时,用实在参数替代宏体中的形式参数。,用宏伪操作命令把在一个程序中要多次使用的功能程序段定义为一个名字,这个名字就可以当作指令一样使用,为与机器指令相区别,我们称之为宏指令。,例9.1定义数据块传送的宏指令BLMOVMACROSRC,DST,CNTLEASI,SRCLEADI,DSTMOVCX,CNTCLDREPMOVSBENDM,有宏调用如下:BLMOVADR1,ADR2,20,宏扩展后,得到如下的程序段:LEASI,ADR1LEADI,ADR2MOVCX,20CLDREPMOVSB,9.2.2参数的使用宏中的参数是非常灵活的,它可以用来表示用户自定义的符号、数值、指令、寄存器名、任意字符串或子字符串及标号等。,1.用参数代表自定义符号和数值,例9.2定义将某存储区清零的宏指令。CLEARMACRODIR,DST,CNTDIRLEADI,DSTMOVCX,CNTXORAL,ALREPSTOSBENDM,宏调用如下:CLEARCLD,ADR1,80,经汇编后,扩展为:CLDLEADI,ADR1MOVCX,80XORAL,ALREPMOVSB,2.用参数代表指令,3.用参数代替寄存器名字,例9.3定义将任一个寄存器循环左移或右移n位的宏指令。RLSMACRODIR,REG,CNTMOVCL,CNTRO&DIRREG,CLENDM,宏调用:RLSR,AX,5,宏扩展:MOVCL,5RORAX,CL,4.用参数代表任一字符串或子字符串,例9.4定义两个多精度数据求和的宏指令。MADD1MACROLABEL,SRC,DST,LEN,SUNLEASI,SRCLEADI,DSTLEABX,SUNMOVCX,LENCLCLABEL:MOVAL,SIADCAL,DIMOVBX,ALINCSIINCDIINCBXLOOPLABELENDM,宏调用:MADD1LOOP1,ADR3,ADR1,8,ADR2,宏扩展为:LEASI,ADR3LEADI,ADR1LEABX,ADR2MOVCX,8CLCLOOP1:MOVAL,SIADCAL,DIMOVBX,ALINCSIINCDIINCBXLOOPLOOP1,9.2.3宏中的标号处理,1.把标号定义为形式参数,2.在宏定义中声明标号为局部标号,将标号声明为局部标号须用局部标号声明伪指令LOCAL。格式如下:LOCALLAB1,LAB2,功能:LOCAL的作用就是要告诉汇编程序宏体中这些标号是局部的。说明:LAB1,LAB2,是宏体中出现的标号。该语句必须是MACRO后的第一个语句,即MACRO和LOCAL之间不能有任何字符行。汇编程序在宏扩展时,将对宏体中的局部标号产生唯一的标号。,例9.5定义求三个寄存器中最小数的宏指令。FMINMACROREG1,REG2,REG3LOCALNEXT1,NEXT2CMPREG1,REG2JNANEXT1MOVREG1,REG2NEXT1:CMPREG1,REG3JNANEXT2MOVREG1,REG3NEXT2:NOPENDM,宏调用如下:FMINAX,BX,CXFMINDX,DI,SI,宏扩展如下:FMINAX,BX,CX1CMPAX,BX1JNA?00001MOVAX,BX1?0000:CMPAX,CX1JNA?00011MOVAX,CX1?0001:NOPMOVDX,3000HMOVDI,300HMOVSI,3400HFMINDX,DI,SI1CMPDX,DI1JNA?00021MOVDX,DI1?0002:CMPDX,SI1JNA?00031MOVDX,SI1?0003:NOP,9.2.4宏嵌套,宏嵌套有两种形式:宏定义中嵌套宏定义和宏定义中嵌套宏调用,两种宏嵌套的深度不限。,1.宏定义中嵌套宏定义形式如下:,MAC1MACROMAC2MACROMAC3MACROENDMENDMENDM,当宏定义中嵌套宏定义时,必须首先调用最外层宏定义,然后才能调用内层宏定义。下面是一个宏嵌套的例子。,BHTOA1MACROMOVAH,ALAHHNMACROLOACALAHHN1MOVCL,4SHRAH,CLCMPAH,10JCAHHN1ADDAH,7AHHN1:ADDAH,30HENDMALLNMACROLOCALALLN1ANDAL,0FHCMPAL,10JCALLN1ADDAL,7ALLN1:ADDAL,30HENDMENDM,例9.6用嵌套的形式定义将AL中的数据转换为两个十六进制数的ASCII码的宏指令。,有如下宏调用:BHTOA1AHHNALLN,则宏扩展后得到如下程序段:BHTOA11MOVAH,ALAHHN1MOVCL,41SHRAH,CL1CMPAH,101JC?00001ADDAH,71?0000:ADDAH,30HALLN1ANDAL,0FH1CMPAL,101JC?00011ADDAL,71?0001:ADDAL,30H,2.宏定义中嵌套宏调用形式如下:,MACAMACROMACBENDMMACBMACROENDM各宏定义可单独调用。,例9.7利用宏定义嵌套宏调用的形式,定义将AL中的数据转换为两位十六进制数的ASCII码。,宏定义如下:HTOA2MACROPUSHCXMOVCH,ALMOVCL,4SHRAL,CLHTOAMOVAH,ALMOVAL,CHANDAL,0FHHTOAPOPCXENDMHTOAMACROLOCALHTOA1ANDAL,0FHCMPAL,10JCHTOA1ADDAL,7HTOA1:ADDAL,30HENDM,宏调用:BHTOA2,宏扩展如下:BHTOA21PUSHCX1MOVCH,AL1MOVCL,41SHRAL,CL2ANDAL,0FH2CMPAL,102J

温馨提示

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

评论

0/150

提交评论