汇编7-第七章
第七章?? 宏汇编 7.1 宏指令 7.2重复汇编 7.3条件汇编 7.1宏指令? 在汇编语言源程序中,有的程序段在整个程序中要多次出现。有的出现可能是完全不修改的重复,有的可能是仅修改程序段中某些操作数字段,而程序段的功能并无大的变化。为了使在源程序中不重复编写这个相同程序段,我们可以将这个程序段定义成一个“指令”,叫做宏指令。这样,在书写源程序时,可以简单地用宏指令名来代替原来的程序段,使源程序更加简洁、易读。例如在某个源程序中要多次用到对AX、BX、CX、DX的压栈,则可事先编写如下宏指令。 PUSHREG MACRO PUSH AX PUSH BX PUSH CX PUSH DX ENDM 则在后面的程序中,凡是需要对AX、BX、CX、DX的压栈的地方,就可以用PUSHREG来替代。 7.1.1 宏功能的使用过程 使用宏指令必须按照宏定义、宏调用、宏展开三步进行。 一、宏定义 应用宏指令之前,必须首先进行宏定义。用MACRO和ENDM伪指令进行宏定义。MACRO表示宏定义的开始,ENDM表示宏定义的结束。其格式有以下两种: (1)不带参数的宏定义: 宏名 MACRO : 宏体 : ENDM (2)带参数的宏定义: 宏名 MACRO 形参1,形参2,..... : 宏体 : ENDM 上述两种宏定义中,宏体是由若干语句序列组成的程序段。宏名就是给宏体中程序段指定一个符号名,亦是以后宏指令语句中调用该宏体直接引用的符号名。宏名在整个程序中应是唯一的。 不带参数的指令在每次宏调用时只需引用宏名,在宏展开时宏体内各语句序列均不作任何修改。 带参数的指令允许在宏调用中做适当修改,在宏定义中,把允许修改的部分用形式参数(简称形参)来表示,当宏调用时就用相应的实在参数(简称实参)来取代形式参数。形参可以是多个,各个形参之间用逗号相隔。例如对两个字节单元内容相互交换的程序段进行宏定义: EXCHANGE MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM 在上述宏定义中,有三个形参:MEM1、MEM2、REG,其中前两个表示将要进行交换的两个存储单元,最后一个参数表示实现两个存储单元数据进行交换时使用的寄存器。 宏定义可以进行嵌套。这时,宏体中语句序列除指令语句、伪指令语句外,可以是另一个已经定义的宏名。 二、 宏调用 经过宏定义,在源程序中任意位置可以调用宏指令。 宏调用格式: ·无参数宏调用: 宏名 ·带参数宏调用: 宏名 实参1,实参2,... 例如:对前面两个宏定义的调用: . . . PUSHREG . . . EXCHANGE BY1,BY2,AL . . : EXCHANGE DA_BYl,DA_BY2 : 宏汇编程序对带参数宏调用, 用第一个实参替代第一个形参, 第二个实参替代第二个形参, 以此类推。 因此,当实参是多个时, 实参的排列顺序要与形参的排列顺序一致. 若实参的个数比形参多,则多余实参自动被略去,若实参个数比形参少,那么多的形参自动用空白串替代. 三、 宏展开 当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏定义中宏体的程序段目标代码插在宏指令语句的位置上以替代宏指令语句。若是带参数的宏调用,则同时用相应的实参代替宏体中对应形参的位置,并对原有宏体代码作修改。这样,在程序的目标代码中,每个宏指令语句位置上都包含相应宏体的目标代码,此宏指令的使用不会减少程序的目标代码长度。下面是一个源程序的列表文件,它展示了宏定义,宏调用和宏展开的全部过程。在列表文件中,左边带“+”号的指令是宏汇编程序在宏展开时自动生成的指令。宏定义本身不生成任何目标代码,宏指令语句(即宏调用)本身也不生成目标代码,它仅表示宏调用出现的位置。列表文件如下: ;宏定义 INPUT MACRO MOV AH,0lH INT 2lH AND AL,0FH ENDM ;宏定义 EXCHANG MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM ;设置数据段 DATA
您可能关注的文档
- 屏幕显示当前系统的时间.doc
- 实验4-PhotoShop部分.doc
- 宏天食品有限公司业务操作规范.doc
- 宏定义的使用方.doc
- 宏钧进销存软件销售相关操作.doc
- 数据库二级 第4章 表操作.ppt
- 嵌入式实验报告_宗子轩.doc
- 嵌入式Linux下C++程序设计--05string类,vector类.ppt
- 嵌入式系统bootloader.ppt
- 川大《管理学原理》第二次作业.doc
- 2026西北工业大学柔性电子研究院招聘1人备考题库(陕西)及答案详解(夺冠系列).docx
- 2026福建龙岩市长汀县涂坊中心卫生院第一轮招聘编制外卫生专业技术人员招聘2人备考题库及参考答案详解.docx
- 2026福建莆田市审计局招聘非在编人员1人备考题库完整答案详解.docx
- 2026重庆生态环境局招聘备考题库及参考答案详解1套.docx
- 2026贵州遵义清华中学教师招聘4人备考题库及答案详解(夺冠系列).docx
- 2026青海黄南州尖扎县机关事业单位公益性岗位招聘备考题库(第二批)及参考答案详解1套.docx
- 2026贵州贵阳观山湖区红枫湖畜禽水产有限公司招聘备考题库及参考答案详解1套.docx
- 2026贵州铜仁市第二人民医院收费室见习生招募1人备考题库带答案详解.docx
- 2026贵州安顺市消防救援支队面向社会招聘政府专职消防员20人备考题库(第一批)附答案详解.docx
- 2026贵州医科大学附属白云医院养老护理员招聘8人备考题库及答案详解(易错题).docx
最近下载
- 无线组网技术教学课件ppt作者孙桂芝1项目四开通电信网络终端-任务1课件.pptx VIP
- 2025真题历年高考英语必备高频词汇汇编(800词版).docx
- 学校餐饮服务投诉处理方案.docx VIP
- And Im Home 高清钢琴谱五线谱.pdf VIP
- 人教版五年级数学上册期末测试卷(含答案).doc VIP
- 车辆定点维修保养服务方案.docx VIP
- 钢管镇墩抗滑稳定及地基应力计算.xls VIP
- 《药物代谢酶和药物作用靶点基因检测技术指南(试行)》.pdf VIP
- 河南省南阳市部分学校2026届高三上学期1月第四次联考试题地理含答案.docx VIP
- 《老年康复》全套教学课件.pptx
原创力文档

文档评论(0)