- 0
- 0
- 约9.02千字
- 约 38页
- 2022-11-02 发布于上海
- 举报
汇编语言程序设计910会计学第1页/共38页第9章 宏9.1 宏的定义和引用 宏是用来代表一个具有特定功能的程序段,它只需在源程序中定义一次,但可在源程序中引用多次。只要在编写程序时需要它,就可以直接使用它。9.1.1 宏的定义 在使用宏之前,必须先定义宏。定义宏一般格式如下: 宏名 MACRO [形参1, 形参2, ……] … ;宏的定义体 ENDM 在书写宏定义时,必须遵照下列规定:第2页/共38页第9章 宏MACRO和ENDM是二个成对出现的关键字,分别表示宏定义的开始和结束;MACRO和ENDM之间的部分是宏的定义体,它是由指令、伪指令或引用其它宏所组成的程序片段,是宏所包含的具体内容;“宏名”是由程序员指定的一个合法的标识符,它代表该宏;宏名可以与指令助忆符、伪指令名相同。在这种情况下,宏指令优先,而同名的指令或伪指令都失效;在ENDM的前面不要再写一次宏名,这与段或子程序定义的结束方式不同;在宏定义的首部可列举若干形式参数(也称哑元),参数之间要用逗号分隔。第3页/共38页第9章 宏例9.1:定义一个把16位数据寄存器压栈的宏。PUSHR MACRO PUSH AX PUSH BX PUSH CX PUSH DXENDM例9.2:定义二个字存储变量相加的宏。MADDM MACRO OPRD1, OPRD2 MOV AX, OPRD2 ADD OPRD1, AXENDM第4页/共38页第9章 宏9.1.2 宏的引用 在源程序中,一旦定义了某宏,那么,在该程序的任何位置都可直接引用该宏,而不必重复编写相应的程序段。引用宏的一般格式如下: 宏名 [实参1, 实参2, ……]其中:实参的位置要与形参的位置要对应,但实参个数可以与形参个数不相等。当实参的个数多于形参的个数时,多出的实参被忽略;当实参的个数少于形参的个数时,没有实参对应的形参用“空”来对应。 在宏展开时,所得到的指令必须是合法的汇编指令,否则,汇编程序将会给出出错信息。第5页/共38页第9章 宏9.1.3 宏的参数传递方式 引用宏时,参数是通过“实参”替换“形参”的方式来实现传递的。参数形式灵活多样,参数可以是常数、寄存器、存储单元和表达式,还可以是指令的操作码。例9.3:定义二个字存储变量相加和相减的宏。方法1:定义二个宏,分别实现存储变量的加操作和减操作 MADDM MACRO OPRD1, OPRD2 MOV AX, OPRD2 ADD OPRD1, AX ENDM MSUBM MACRO OPRD1, OPRD2 MOV AX, OPRD2 SUB OPRD1, AX ENDM方法2:定义一个宏,把存储变量的“加”和“减”操作合并在一起 MOPM MACRO OP, OPRD1, OPRD2 MOV AX, OPRD2 OP OPRD1, AX ENDM其中:参数OP是一个对应于操作码的形式参数。第6页/共38页第9章 宏9.1.5 宏与子程序的区别宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;宏引用时,参数是通过“实参”替换“形参”来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;宏引用语句扩展后,目标程序中就不再有宏引用语句。运行时,不会有额外的时间开销,而子程序调用指令存在于目标程序之中,执行调用指令需要时间。总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序来简化源程序和目标程序。第7页/共38页第9章 宏9.2 宏参数的特殊运算符9.2.1 连接运算符 在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符()。例9.5:定义一个转移宏JUMP,其一个参数决定转移类别,另一个参数指定转移目标。解: JUMP MACRO CON, here JCON here ENDM第8页/共38页第9章 宏例9.6:定义一个问候性的字符串宏GREETING,其一个参数说明字符串的变量名,另一个参数指名问候的对象。解: GREETING MACRO MSG, name MSG DB ‘Hello, name’ ENDM 假设有下面引用语句, GREETING STR1, 张三 GREETING MSG1, John 那么,它们宏扩展时将会得到如下三个问候性的字符串定义。 G
您可能关注的文档
- 结合中日钓鱼岛争议的现状谈谈加强国防建设的重要性研究.pptx
- 高血压的基本概念与分类.pptx
- 论厄运直面苦难实用.pptx
- 有电介质时的高斯定理.pptx
- 数学平面向量的线性运算三新人教a必修四.pptx
- 多路径负载均衡.pptx
- 求图示刚架楼面处的侧移幅值惯性力幅值和柱底截面弯矩幅值.pptx
- 海洋渔业船舶安全生产事故的成因及防范对策.pptx
- 高中化学配位键.pptx
- 汽车基础知识培训.pptx
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
原创力文档

文档评论(0)