版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章条件汇编与宏指令9.1条件汇编伪操作9.2宏伪操作9.1条件汇编伪操作条件汇编伪操作允许用户在编制汇编语言程序时规定某种条件,汇编程序在汇编过程中测试条件是否成立,当条件成立时,则将某段汇编语言源程序汇编为目标程序,否则,不进行汇编。
IBMPC宏汇编程序提供了十种条件汇编伪操作命令:IF,IFE,IF1,IF2,IFDEF,IFNDEF,IFB,IFNB,IFIDN,IFDIF。这些条件汇编伪操作命令的一般格式是:IFx [CONT]: ;条件块:ENDIFIFx [CONT]: ;条件块1ELSE: ;条件块2ENDIF下面分别介绍十种条件汇编伪操作命令的功能:(1)IFCONT
当条件表达式CONT的值不为零时,条件为真。(2)IFECONT
当条件表达式CONT的值为零时,条件为真。(3)IF1
如果是第一遍扫描,条件为真。(4)IF2
如果是第二遍扫描,条件为真。(5)IFDEFCONT
此操作中的条件CONT是一个符号,如果该符号已经定义,或已用EXTRN伪指令说明为外部标号,则条件为真。(6)IFNDEFCONT
此操作中的条件CONT是一个符号,如果该符号未经定义,并且也未经EXTRN伪指令说明,则条件为真。(7)IFB<CONT>
如果尖括号中为空,则条件为真。(8)IFNB<CONT>
如果尖括号中不为空,则条件为真。(9)IFIDN<CHAR1>,<CHAR2>CHAR1和CHRA2为字符串,如果两个字符串相同,则条件为真。(10)IFDIF<CHAR1>,<CHAR2>CHAR1和CHRA2为字符串,如果两个字符串不同,则条件为真。例如:IFB<>条件为假,而IFB<>条件为真。
IFIDN<ABCD>,<‘ABCD’.>条件为假,IFIDN<ABCD><ABCD>条件为真。条件汇编伪操作命令举例:ARG1 EQU 35HARG2 = NOT ARG1 IF (ARG1ORARG2)EQ0FFFFH MOV AX,ARG1 MOV BX,ARG2 ADD AX,BX IF (ARG1ANDARG2)EQ0FFFFH SUB AX,CX IFE ARG1 ADD AX,DX ENDIF MOV [SI],AX ENDIF MOV [DI],AX ENDIFMOV AX,0035HMOV BX,0FFCAHADD AX,BXMOV [DI],AX9.2宏伪操作9.2.1宏定义与宏结束伪操作命令1.宏定义的一般格式:
MNAME MACRO [形式参数表] : : 宏体
:
ENDM
2.宏调用与宏扩展在汇编语言源程序中,操作码段上写上宏名字,则称为宏调用。宏调用的格式:
MNAME [实在参数表]汇编程序对汇编语言源程序进行汇编时,每当在操作码段遇到宏名字时,就用其相应的宏体代替它,即将它所代表的宏体写入宏名字的出现处,这个过程叫做宏扩展。在宏扩展时,用实在参数替代宏体中的形式参数。
用宏伪操作命令把在一个程序中要多次使用的功能程序段定义为一个名字,这个名字就可以当作指令一样使用,为与机器指令相区别,我们称之为宏指令。例9.1定义数据块传送的宏指令
BLMOV MACRO SRC,DST,CNT LEA SI,SRC LEA DI,DST MOV CX,CNT CLD REPMOVSB ENDM有宏调用如下:BLMOV ADR1,ADR2,20宏扩展后,得到如下的程序段:
LEA SI,ADR1 LEA DI,ADR2 MOV CX,20 CLD REP MOVSB9.2.2参数的使用宏中的参数是非常灵活的,它可以用来表示用户自定义的符号、数值、指令、寄存器名、任意字符串或子字符串及标号等。
1.用参数代表自定义符号和数值例9.2定义将某存储区清零的宏指令。CLEAR MACRO DIR,DST,CNT DIR LEA DI,DST MOV CX,CNT XOR AL,AL REP STOSB ENDM宏调用如下:CLEAR CLD,ADR1,80经汇编后,扩展为:CLDLEA DI,ADR1MOV CX,80XOR AL,ALREP MOVSB2.用参数代表指令3.用参数代替寄存器名字例9.3定义将任一个寄存器循环左移或右移n位的宏指令。
RLS MACRO DIR,REG,CNT MOV CL,CNT RO&DIR REG,CL ENDM宏调用:
RLS R,AX,5宏扩展:
MOV CL,5 ROR AX,CL4.用参数代表任一字符串或子字符串例9.4定义两个多精度数据求和的宏指令。MADD1 MACROLABEL,SRC,DST,LEN,SUN LEA SI,SRC LEA DI,DST LEA BX,SUN MOV CX,LEN CLCLABEL: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL INC SI INC DI INC BX LOOP LABEL ENDM宏调用:MADD1 LOOP1,ADR3,ADR1,8,ADR2宏扩展为:
LEA SI,ADR3 LEA DI,ADR1 LEA BX,ADR2 MOV CX,8 CLCLOOP1: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL INC SI INC DI INC BX LOOP LOOP19.2.3宏中的标号处理1.把标号定义为形式参数2.在宏定义中声明标号为局部标号将标号声明为局部标号须用局部标号声明伪指令LOCAL。格式如下:
LOCAL LAB1[,LAB2,…]
功能:LOCAL的作用就是要告诉汇编程序宏体中这些标号是局部的。说明:LAB1,LAB2,…是宏体中出现的标号。该语句必须是MACRO后的第一个语句,即MACRO和LOCAL之间不能有任何字符行。汇编程序在宏扩展时,将对宏体中的局部标号产生唯一的标号。例9.5定义求三个寄存器中最小数的宏指令。FMIN MACRO REG1,REG2,REG3 LOCAL NEXT1,NEXT2 CMP REG1,REG2 JNA NEXT1 MOV REG1,REG2NEXT1: CMP REG1,REG3 JNA NEXT2 MOV REG1,REG3NEXT2: NOP ENDM宏调用如下:
FMIN AX,BX,CX … FMIN DX,DI,SI宏扩展如下:
FMIN AX,BX,CX1 CMP AX,BX1 JNA ??00001 MOV AX,BX1 ??0000: CMP AX,CX1 JNA ??00011 MOV AX,CX1 ??0001: NOP MOV DX,3000H MOV DI,300H MOV SI,3400H FMIN DX,DI,SI1 CMP DX,DI1 JNA ??00021 MOV DX,DI1 ??0002: CMP DX,SI1 JNA ??00031 MOV DX,SI1 ??0003: NOP9.2.4宏嵌套宏嵌套有两种形式:宏定义中嵌套宏定义和宏定义中嵌套宏调用,两种宏嵌套的深度不限。
1.宏定义中嵌套宏定义形式如下:MAC1 MACRO …MAC2 MACRO …MAC3 MACRO … ENDM … ENDM … ENDM当宏定义中嵌套宏定义时,必须首先调用最外层宏定义,然后才能调用内层宏定义。下面是一个宏嵌套的例子。BHTOA1 MACRO MOV AH,ALAHHN MACRO LOACAL AHHN1 MOV CL,4 SHR AH,CL CMP AH,10 JC AHHN1 ADD AH,7AHHN1: ADD AH,30H ENDMALLN MACRO LOCAL ALLN1 AND AL,0FH CMP AL,10 JC ALLN1 ADD AL,7ALLN1: ADD AL,30H ENDM ENDM例9.6用嵌套的形式定义将AL中的数据转换为两个十六进制数的ASCII码的宏指令。有如下宏调用:
BHTOA1 AHHN ALLN则宏扩展后得到如下程序段:
BHTOA11 MOV AH,AL AHHN1 MOV CL,41 SHR AH,CL1 CMP AH,101 JC ??00001 ADD AH,71 ??0000: ADD AH,30H ALLN1 AND AL,0FH1 CMP AL,101 JC ??00011 ADD AL,71 ??0001: ADD AL,30H
2.宏定义中嵌套宏调用形式如下:MACA MACRO … MACB … ENDMMACB MACRO … ENDM各宏定义可单独调用。例9.7利用宏定义嵌套宏调用的形式,定义将AL中的数据转换为两位十六进制数的ASCII码。宏定义如下:HTOA2 MACRO PUSH CX MOV CH,AL MOV CL,4 SHR AL,CL HTOA MOV AH,AL MOV AL,CH AND AL,0FH HTOA POP CX ENDMHTOA MACRO LOCAL HTOA1 AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,7HTOA1: ADD AL,30H ENDM宏调用:BHTOA2宏扩展如下:
BHTOA21 PUSH CX1 MOV CH,AL1 MOV CL,41 SHR AL,CL2 AND AL,0FH2 CMP AL,102 JC ??00002 ADD AL,72 ??0000: ADD AL,30H1 MOV AH,AL1 MOV AL,CH1 AND AL,0FH2 AND AL,0FH2 CMP A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度餐厅设备采购租赁合同
- 2024年度石油化工装置建设施工合同
- 网络课程合同范本
- 2024年度软件开发合同:移动应用的创造与优化
- 二零二四年度龙门吊设备运营与管理合作协议
- 2024至2030年服装绳带项目投资价值分析报告
- 2024至2030年中国风温计行业投资前景及策略咨询研究报告
- 2024年热管式空气预热器项目可行性研究报告
- 二零二四年度广告合同标的为媒体广告投放
- 2024年六斗卡片柜项目可行性研究报告
- 【精选】感恩主题班会“感谢一路有你”主题班会教案精选
- 人教PEP五年级上册英语课件 Unit 4 Part B 第二课时
- 三年级上册美术 我的自画像册
- 网络通信类visio图库
- 我国高校教学与科研失衡原因及协调对策
- 《哈尔的移动城堡》(PPT课件)
- 船上油污应急计划
- 初中理化生数地仪器配备标准
- (完整版)国际体力活动量表IPAQ中文版短卷和长卷及评分标准5页
- 四年级科学(上)双向细目表
- 干气密封-槽型设计对密封性能的影响的研究
评论
0/150
提交评论