目录 上一页 下一页 附录A

-320- PC机汇编语言实战精解

msg

ELSE

msg

ENDIF
main
code

db 'Hello



db 'Hello


endp
ends
end
,cowgirl!',0dh,0ah,07h,24h



,cowboy!',0dh,0ah,07h,24h




main


;否则使用以下的字符串



;条件判断部分结束



  程序中新增的"IF"、"ELSE"和"ENDIF"就是用于完成条件汇编的伪指令,这三条伪指令之间有两部分源程序,"IF"下面的源程序把字符串MSG定义成"Hello,cowgirl","ELSE"下面的程序段将MSG定义成"Hello,cowboy"。这样一来编译程序就会有两种选择,到底编译哪块程序就要依条件来定。
  具体来说,当"IF"伪指令之后的表达式值为"1"时,则"IF"下面的程序段被编译,"ELSE"下面的程序段舍去。若"IF"之后的表达式为"0",则"ELSE"下面的程序段将被编译,而"IF"下面的程序段被舍去。
  在这个程序之中我们一开始就定义了"GIRL EQU 1",很明显这个程序只能输出"Hello,cowgirl!"了,因为"Hello,cowboy!"根本没有被编译。如果需要把这个程序给男孩子,只要把源程序开始修改为"GIRL EQU 0"就可以了。
  采用条件汇编技术的一个优点就是能加强程序的可移植性,比如有两台同一型号的PC电脑,结构几乎完全相同,只是一台使用VGA显示卡而另一台使用EGA卡。为这样的两台电脑编写程序就可以采用条件汇编技术,把涉及显示功能的程序段搞成下面这样:
IF



ELSE



ENDIF
VGA
.
.
.

.
.
.



(用于VGA卡的程序段)



(用于EGA卡的程序段)


  当使用EGA显示卡的用户拿到这样的源程序之后就无需自己对程序进行修改了。
  类似的情况还有一些,比如TASM编译程序支持的伪指令与MASM早期版本略有不同,为使源程序能适应不同的编译程序,采用条件汇编技术也是很有必要的。
  条件汇编还有其它一些用于判断条件的伪指令,我们讨论的"IF"是最简单的一个,其它的伪指令都列在表10-1中,以供大家研究参考,限于篇幅,本节不再详细讨论。
表11-1 条件汇编伪指令
伪指令说明
IF 表达式求出表达式的值,如果此值不是0则编译其后的程序段
IFE 表达式与"IF"相反,如果表达式的值为0则编译其后的程序段
IFDEF 符号如果符号在源程序中有定义,则编译其后的程序段
IFNDEF 符号与"IFDEF"相反,如果符号在源程序中没定义则条件成立
IFB 自变量如果自变量为空则条件成立
IFNB 自变量与"IFB"相反,如果自变量不空则条件成立

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 附录A