上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
条件汇编伪指令
作者:未知 申领版权
2010年12月12日 共有 1601 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    条件汇编伪指令
    条件汇编伪指令是告诉汇编程序:根据某种条件确定一组程序段是否加入到目标程序中。使用条件汇编伪指令的主要目的是:同一个源程序能根据不同的汇编条件生成不同功能的目标程序,增强宏定义的使用范围。
    条件汇编伪指令与高级语言(如:C/C )的条件编译语句在书写形式上相似,在所起作用方面是完全一致的。
    9.5.1 条件汇编伪指令的功能
    条件汇编伪指令的一般格式如下:
    
    
    

 
    
IFnnnn
    
条件表达式
    
语句组1
    
[ELSE
    
 
    
语句组2]
    
ENDIF
    

其中:IFnnnn是表9.2中的伪指令,“[…]”内的语句是可选的。
    条件汇编伪指令是在汇编程序把源程序转换成目标程序时起作用,其一般含义是:若条件汇编伪指令后面的“条件表达式”为真,那么,语句组1将被汇编;否则,语句组2将被汇编(如果含有ELSE伪指令)。
    语句组1或语句组2内还可以包有条件汇编伪指令,这时,就形成了嵌套的条件汇编伪指令。一个嵌套的ELSE伪指令总是与最近的、还没有与其它ELSE伪指令相比配的IFnnnn伪指令相比配。
    每条条件汇编伪指令的具体含义如表9.3所示。
    表9.3 条件汇编伪指令及其功能一览表
    
    
    

伪指令
    
含义
    
IF exp
    
若数值表达式exp的值不为0,则语句组1包含在目标文件中
    
IFE exp
    
若数值表达式exp的值为0,则语句组1包含在目标文件中
    
IFDEF label
    
若标号label有定义或被说明为EXTRN,则语句组1包含在目标文件中
    
IFNDEF label
    
若标号label没有定义,也没被说明为EXTRN,则语句组1包含在目标文件中
    
IFB <参数>
    
在宏引用时,若该形参没有相应的实参相对应,则语句组1包含在目标文件中
    
IFNB <参数>
    
在宏引用时,若该形参没有相应的实参相对应,则语句组1包含在目标文件中
    
IFIDN <参数1>, <参数2>
    
若参数1=参数2,则语句组1包含在目标文件中
    
IFDIF <参数1>, <参数2>
    
若参数1≠参数2,则语句组1包含在目标文件中
    
IF1
    
若汇编程序在第一遍扫描时,则语句组1包含在目标文件中
    
IF2
    
若汇编程序在第二遍扫描时,则语句组1包含在目标文件中
    

9.5.2条件汇编伪指令的举例
    例9.14 编写一个可用DOS或BIOS功能调用输入字符的宏定义。
    
    
    

解:
    
 
    
方法1:使用条件汇编伪指令IF
    
INPUT
    
MACRO
    
IF
    
DOS
    
;当符号DOS不为0时,则使用DOS的功能调用
    
MOV  AH, 1H
    
INT    21H
    
ELSE
    
;否则,将使用BIOS的功能调用
    
 
    
MOV  AH, 10H
    
INT    16H
    
ENDIF
    
ENDM
    

在引用宏INPUT时,汇编程序会根据DOS是否为0来生成调用不同输入功能的程序段。
    
    
    

 
    
方法2:使用条件汇编伪指令IFDEF
    
INPUT
    
MACRO
    
IFDEF
    
DOS
    
;当定义了DOS,则使用DOS的功能调用
    
MOV  AH, 1H
    
INT    21H
    
ELSE
    
;否则,将使用BIOS的功能调用
    
 
    
MOV  AH, 10H
    
INT    16H
    
ENDIF
    
ENDM
    

在引用宏INPUT时,汇编程序会根据符号DOS是否已定义来生成调用不同输入功能的程序段。
    例9.15 编写一个可用功能调用输入字符的宏定义。
    
    
    

解:
    
 
    
READCH
    
MACRO  char
    
MOV
    
AH, 1H
    
INT
    
21H
    
;接受一个字符,并存入AL中
    
IFNB
    
<char>
    
;若参数char有实参与之对应
    
IFDIF  <char>, <AL>
    
;若参数char≠AL,则把所输入字符保存到实参中
    
  MOV  char, AL
    
ENDIF
    
ENDIF
    
ENDM
    

 
    9.6 宏的扩充
    MASM 6.11编程系统对宏定义及其相关语句进行了一定程度的扩充。虽然这些扩充给编程带来了一些方便,但它们不一定能被其它的汇编语言编程系统所接受,所以,程序员在使用这些方便的扩充功能时,要注意到可能带来的限制。
    下面介绍MASM 6.11编程系统对宏及其相关语句的扩充。
    9.6.1 宏定义形式
    在MASM 6.11编程系统中,其宏定义的一般形式如下:
    对上述宏定义的说明与9.1.1节中的说明完全一致,其需要增加的说明如下:
    
    
    

 

相关新闻

考点:合成氨条件的选择
考点:影响化学平衡移动的条件
高中化学实验
有机合成
化学学习的浓厚兴趣
影响化学平衡的条件
大家来看一些不错的sql语句
合成氨条件的选择
化学平衡3
Win32汇编的环境和基础

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》