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

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

ID:52369125

大小:210.06 KB

页数:23页

时间:2020-04-05

《汇编语言-宏指令》PPT课件.ppt_第1页
《汇编语言-宏指令》PPT课件.ppt_第2页
《汇编语言-宏指令》PPT课件.ppt_第3页
《汇编语言-宏指令》PPT课件.ppt_第4页
《汇编语言-宏指令》PPT课件.ppt_第5页
资源描述:

《《汇编语言-宏指令》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章学习要点:(1)宏汇编(2)重复汇编(3)条件汇编一、宏、宏汇编宏是计算机软件系统中一个广泛存在的概念。从办公软件OFFICE到程序开发语言C等等,可以把某项要操作的某一个过程定义为宏。具体到在汇编语言中,宏也是汇编的主要特点之一,它是与子程序类似但又独具特色的另外一种简化源程序的方法。(一)宏指令的定义和使用宏指令在使用之前要先定义,其格式一般如下:宏指令名MACRO[形式参数表];参数的另外一个名称变元……(宏定义体)ENDM可选的形式参数表可由若干参数组成,各形参间用逗号分隔。例如,把通过DOS的1功能调用从键盘读入一个字符

2、的程序片段定义为一个宏:GETCHMACROMOVAH,1INT21H;从键盘键入一个字符时,该字符存入ALENDM在定义宏指令后,就可以通过宏指令来表示对应的程序片段,这成为宏调用。其格式为:宏指令名[实参表]在对源程序汇编时,汇编程序把程序中的宏指令替换成对应的宏定义体,这称为宏展开或宏扩展。如:……….GETCH对应为--->MOVAH,1……INT21H…尽管都实现了调用,但是宏调用和子程序的调用是有差别的:宏调用更多地是表示一种替换!(二)宏指令的用途1.缩短源代码2.扩充指令集3.更改某些指令助记符的意义(宏指令的优先级高

3、于指令和伪指令)(三)宏指令中参数的使用宏指令可以不带参数,但往往带有参数的宏指令更具灵活性。1.指令的参数可以是常数、寄存器和存储单元,还可以是表达式。例:MOVCL,4SALAL,CL如上述代码要多次使用,就可以定义为:SHIFTMACROMOVCL,4SALAL,CLENDM但是,如果每次的移位次数不同了,则可定义为:SHIFTMACROX;X为参数MOVCL,XSALAL,CLENDM这是,调用方式可为:SHIFT4;移4位SHIFT6;移6位,显然,有参数时使用起来更灵活。2.宏指令的参数可以是操作码例如:有下面的宏定义:M

4、ANDMMACROOPR,X,YMOVAX,XOPRAX,YMOVX,AXENDM该宏定义的意思是?????改宏被调用和展开的时候,意义就明确了。如:MANDMMOV,[BX],[SI]MANDMADD,[BX],ES:[1234H]参数还可以是操作码的一部分:SHIFTMACROX,Y,ZMOVCL,XS&ZY,CL;&起符号连接作用ENDM调用:SHIFT4,AL,AL展开为:MOVCL,4;4为参数XSALAL,CL;第1个“AL”为参数Z,第2个“AL”为参数Y该宏的调用方式还可以是:“SHIFT6,BX,AR”或“SHIFT

5、8,SI,HR”等等。3.宏调用参数个数可以与定义时不一致正常情况下,宏调用时使用的实参个数应该与宏定义时的形参个数一致,但汇编程序并不要求他们它们必须相等。若实参个数多于形参个数,那么多余的实参被忽略;若实参个数少于形参的个数,那么多余的形参用“空”代替。4.两个特殊的宏运算符(1)强迫替换运算符&在宏定义中,若参数在其它字符的紧前或紧后,或者参数出现在带引号的字符串中时,就必须使用该运算符,以区分参数。例:在下面宏指令JUMP中,参数CON作为操作码一部分。JUMPMACROCON,LABJ&CONLABENDM则调用时,JUMP

6、NZHEAR->JNZHEARJUMPZ,THERE->JZTHERE例:在下面宏指令MSGGEN中,两个参数合并成一个标号,一个参数用在字符串中。MSGGENMACROLAB,NUM,XYZLAB&NUMDB‘HELLOMR.&XYZ’,0DH,0AH,24HMSGGEN则调用MSGGENMSG,1,TAYLOR展开为:MSG1DB‘HELLOMR.TAYLOR’,0DH,0AH,24H(2)表达式运算符%在宏调用时,使用该运算符把其后表达式的结果作为宏参替换,而非表达式自身。宏MSGGEN的定义方式如上例。则调用MSGGENMSG

7、,%(2+3),‘TOM’展开为:MSG5DB‘HELLOMR.TOM’,0DH,0AH,24H5.与宏有关的伪指令(1)局部标号说明伪指令LOCAL格式:LOCAL标号表标号表由标号构成,标号间用逗号分隔。汇编程序在每次展开时,总把由LOCAL伪指令说明的标号用唯一的符号(??0000至??FFFF)代替,从而避免标号重定义错误。例如:定义一个取绝对值的宏ABSOLMACROOPERLOCALNEXTCMPOPER,0JGENEXTNEGOPERNEXT:ENDM宏调用ABSOLVARABSOLBX时,宏展开:…;主程序中的代码段…

8、CMPVAR,0JGE??0000NEGVAR??0000:CMPBX,0JGE??0001NEGBX??0001:…(2)清除宏定义的为指令PURGE格式:PURGE宏名表例如:…AAAMACRO…ENDM……;宏AA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。