![]() | 第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 |