目录 上一页 下一页 附录A

第11章 更高级的技术 -319-



msg
main
code

print
ret
db 'Best Wish
endp
ends
end
msg

To YOU',0dh,0ah,24h


main
;输出转换后的字符串
;结束进程




  除了宏汇编技术之外,条件汇编也是一种高级的汇编技术。所谓条件汇编,指得是把源程序分成几个部分,编译时如果具备了某个条件则编译其中一个部分,如果相应条件不具备则编译其它部分。所以说,条件实际上是提供给编译程序处理的。
  在具体讨论条件汇编技术之前我们先来看一看示例程序CHILD.ASM:
  这个程序的功能很简单,它只是在屏幕上显示一行文字--"Hello,cowboy!"。现在如果假设有一位很任性的小姑娘看到了这个程序显示的文字,她十分希望这个程序能显示出"Hello,cowgirl!",那么这个程序就要做些修改了。
  说句老实话,修改程序比编写程序还要烦人,象这样的小程序当然看不出什么,对于一些比较大的程序来说修改工作可不比编写工作轻松。我们之所以强调要把程序中频繁使用的
CHILD.ASM
code


main




msg
main
code


segment
assume
org
proc
mov
mov
int
int
db 'Hello,
endp
ends
end


cs:code
100h
near
ah,09
dx,offset msg
21h
20h
cowboy!',0dh,0ah,07h,24h


main
数据用"EQU"伪指令定义成常量,为的就是修改起来方便一些。
  那么对于给出的这个小程序而言,有没有什么方法能使它的适应性强一些呢?最好能让它"识相"一些,只要告诉它是"boy"还是"girl",再把它重新编译一次它就能显示出相应的问候语,这是最好不过了。做到这一点并不困难,只要把程序修改成下面这个样子就可以了:
CHILD.ASM
girl

code


main





IF


equ

segment
assume
org
proc
mov
mov
int
int

girl


1


cs:code
100h
near
ah,09
dx,offset msg
21h
20h




;告之编译程序现在要把程序送给一位"Girl"





;显示问候语


;结束进程

;如果将程序送给"Girl",则问候语使用下述
;字符串

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 附录A