《汇编语言-宏指令》PPT课件.ppt

上传人:tia****nde 文档编号:12735022 上传时间:2020-05-20 格式:PPT 页数:23 大小:210KB
返回 下载 相关 举报
《汇编语言-宏指令》PPT课件.ppt_第1页
第1页 / 共23页
《汇编语言-宏指令》PPT课件.ppt_第2页
第2页 / 共23页
《汇编语言-宏指令》PPT课件.ppt_第3页
第3页 / 共23页
点击查看更多>>
资源描述
本章学习要点:(1)宏汇编(2)重复汇编(3)条件汇编一、宏、宏汇编宏是计算机软件系统中一个广泛存在的概念。从办公软件OFFICE到程序开发语言C等等,可以把某项要操作的某一个过程定义为宏。具体到在汇编语言中,宏也是汇编的主要特点之一,它是与子程序类似但又独具特色的另外一种简化源程序的方法。(一)宏指令的定义和使用宏指令在使用之前要先定义,其格式一般如下:宏指令名MACRO形式参数表;参数的另外一个名称变元(宏定义体)ENDM可选的形式参数表可由若干参数组成,各形参间用逗号分隔。,例如,把通过DOS的1功能调用从键盘读入一个字符的程序片段定义为一个宏:GETCHMACROMOVAH,1INT21H;从键盘键入一个字符时,该字符存入ALENDM在定义宏指令后,就可以通过宏指令来表示对应的程序片段,这成为宏调用。其格式为:宏指令名实参表在对源程序汇编时,汇编程序把程序中的宏指令替换成对应的宏定义体,这称为宏展开或宏扩展。如:.GETCH对应为-MOVAH,1INT21H,尽管都实现了调用,但是宏调用和子程序的调用是有差别的:,宏调用更多地是表示一种替换!,(二)宏指令的用途1.缩短源代码2.扩充指令集3.更改某些指令助记符的意义(宏指令的优先级高于指令和伪指令)(三)宏指令中参数的使用宏指令可以不带参数,但往往带有参数的宏指令更具灵活性。1.指令的参数可以是常数、寄存器和存储单元,还可以是表达式。例:MOVCL,4SALAL,CL如上述代码要多次使用,就可以定义为:SHIFTMACROMOVCL,4SALAL,CLENDM,但是,如果每次的移位次数不同了,则可定义为:SHIFTMACROX;X为参数MOVCL,XSALAL,CLENDM这是,调用方式可为:SHIFT4;移4位SHIFT6;移6位,显然,有参数时使用起来更灵活。2.宏指令的参数可以是操作码例如:有下面的宏定义:MANDMMACROOPR,X,YMOVAX,XOPRAX,YMOVX,AXENDM该宏定义的意思是?,改宏被调用和展开的时候,意义就明确了。如:MANDMMOV,BX,SIMANDMADD,BX,ES:1234H参数还可以是操作码的一部分:SHIFTMACROX,Y,ZMOVCL,XS第1个“AL”为参数Z,第2个“AL”为参数Y该宏的调用方式还可以是:“SHIFT6,BX,AR”或“SHIFT8,SI,HR”等等。,3.宏调用参数个数可以与定义时不一致正常情况下,宏调用时使用的实参个数应该与宏定义时的形参个数一致,但汇编程序并不要求他们它们必须相等。若实参个数多于形参个数,那么多余的实参被忽略;若实参个数少于形参的个数,那么多余的形参用“空”代替。4.两个特殊的宏运算符(1)强迫替换运算符主程序中的代码段CMPVAR,0JGE?0000NEGVAR?0000:CMPBX,0JGE?0001NEGBX?0001:,(2)清除宏定义的为指令PURGE格式:PURGE宏名表例如:AAAMACROENDM;宏AAA可以有效使用的区间PURGEAAA;宏AAA不可有效地使用,例:利用宏指令修改某些助记符意义宏定义:ADDMACROOP1,OP2,RESULTENDM宏调用:ADDX,Y,Z;使用宏ADDPURGEADD;使用指令ADD当然,最后能不能达成所愿,还要具体看编译器是怎么来支持的!,6.宏定义的嵌套宏定义的嵌套有两种情况:宏定义体中含宏调用;宏定义体中含宏定义。(1)宏定义体中宏调用宏汇编语言允许在宏定义体中使用宏调用,但限制条件是:必须先定义后调用。例如:DIFMACROX,Y;XY送AXMOVAX,XSUBAX,YENDMDIFSQRMACROOPR1,OPR2,RESULT;(XY)2送AXPUSHDXPUSHAX|POPAXDIFOPR1,OPR2;注意堆栈|POPDXIMULAX|ENDMMOVRESULT,AX,(2)宏定义体中定义宏指令宏定义体中还允许包含宏定义,但是只有在调用了外围的宏后,才能调用内层的宏。例如:DEFMACMACROMACNAME,OPERMACNAMEMACROX,Y,ZPUSHAXMOVAX,X|有宏调用:DEFMACADDITION,ADDOPERAX,Y|展开:ADDITIONMACROX,Y,ZMOVZ,AX|PUSHAXPOPAX|MOVAX,XENDM|ADDAX,YENDMMOVZ,AXPOPAXENDM于是:可以使用“ADDITIONVAR1,VAR2,VAR3”调用宏。,7.宏调用综合示例,二、重复汇编有时候程序中会连续地重复完全相同或几乎相同的一组语句。当出现这种情况时,可考虑用重复伪指令定义重复块,以简化源程序。1.伪指令REPT伪指令REPT用于创建重复块,重复块的重复次数由一数值表达式给定。一般格式如下:REPT表达式需重复的语句组ENDM宏汇编程序将把“需重复的语句组”连续低重复汇编由表达式值所决定的次数,就相当于是重写了多少次!例:X=0REP5DBXX=X+1ENDM;相当于“DB0,1,2,3,4”,2.伪指令IRP伪指令IRP用于创建重复块,重复次数及每次使用的实参由实参数列决定。一般格式如下:IRP形式参数,需重复的语句组ENDM实参的个数规定了重复的次数。例:下面的重复块实现把0-9的平方值存入存储区中。IRPX,DBX*XENDM再如:下面重复块吧若干寄存器值压入堆栈。IRPREG,PUSHREGENDM,3.伪指令IRPC伪指令IRPC与伪指令IRP相似,但实参数列是一个字符串。一般格式如下:IRPC形式参数,字符串需重复的语句组ENDM字符串的长度规定了重复的次数。如果字符串含有空格、逗号等分隔符,那么字符串需用一对尖括号括起来。例:IRPCX,0123DBXENDM展开后是得到:DB0,1,2,3还是:DB0,1,2,3记住:宏更多地表现为一种替换!,例:IRPCX,0123DB说明具体引用的标号NEXT,OUTMOVAX,AIFK-1IFK2CMPC,AXJLENEXTMOVAX,CENDIFNEXT:CMPB,AXJLEOUT|宏调用:MOVAX,B|MAX1,PENDIF|MAX2,P,QOUT:ENDM|MAX3,P,Q,R,例:宏指令GOTO根据参数情况产生不同的转移效果。GOTOMACROL,X,REL,YIFBJMPLELSEMOVAX,XCMPAX,YJ通过COUNT来控制,而非参数N来控制ENDIFENDM宏调用:COUNT=0POWERAX,3,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!