?? page320.html
字號:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第11章 更高級的技術(shù)</title>
</head>
<body>
<style type="text/css">
body {
background-color: #c0c0c0;
}
table {
background-color: #c0c0c0;
line-height: 24px;
}
</style>
<!導(dǎo)航條>
<p><a href="content1.html">目錄</a> <a href="page319.html">上一頁</a> <a href="page321.html">下一頁</a> <a href="page328.html">附錄A</a></p>
<table border=0 align="center" width=800 frame="box" rules="none">
<!標(biāo)尺行>
<tr>
<td width=3%></td><td width=6%></td><td width=1%></td>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=1%></td><td width=6%></td><td width=3%></td>
</tr>
<!頁眉行>
<tr height=60 valign="bottom">
<td></td><td>-320-</td><td></td> <!頁碼>
<td colspan=6>PC機(jī)匯編語言實(shí)戰(zhàn)精解</td><td colspan=4></td><td colspan=6 align="right"><img src="icons/flag.gif"></td> <!書名>
<td></td><td></td><td></td> <!右側(cè)空白>
</tr>
<!頁眉線>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!正文>
<font face="宋體" lang="ZH-CN" size=3>
<tr height=20><td colspan=22></td></tr> <!頂部空白>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>
msg<br>
<br>
ELSE<br>
<br>
msg<br>
<br>
ENDIF<br>
main<br>
code<br>
<br>
</td>
<td colspan=2>
db 'Hello<br>
<br>
<br>
<br>
db 'Hello<br>
<br>
<br>
endp<br>
ends<br>
end
</td>
<td colspan=6>
,cowgirl!',0dh,0ah,07h,24h<br>
<br>
<br>
<br>
,cowboy!',0dh,0ah,07h,24h<br>
<br>
<br>
<br>
<br>
main
</td>
<td colspan=8>
<br>
<br>
;否則使用以下的字符串<br>
<br>
<br>
<br>
;條件判斷部分結(jié)束<br>
<br>
<br>
<br>
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
程序中新增的"IF"、"ELSE"和"ENDIF"就是用于完成條件匯編的偽指令,這三條偽指令之間有兩部分源程序,"IF"下面的源程序把字符串MSG定義成"Hello,cowgirl","ELSE"下面的程序段將MSG定義成"Hello,cowboy"。這樣一來編譯程序就會(huì)有兩種選擇,到底編譯哪塊程序就要依條件來定。<br>
具體來說,當(dāng)"IF"偽指令之后的表達(dá)式值為"1"時(shí),則"IF"下面的程序段被編譯,"ELSE"下面的程序段舍去。若"IF"之后的表達(dá)式為"0",則"ELSE"下面的程序段將被編譯,而"IF"下面的程序段被舍去。<br>
在這個(gè)程序之中我們一開始就定義了"GIRL EQU 1",很明顯這個(gè)程序只能輸出"Hello,cowgirl!"了,因?yàn)?quot;Hello,cowboy!"根本沒有被編譯。如果需要把這個(gè)程序給男孩子,只要把源程序開始修改為"GIRL EQU 0"就可以了。<br>
采用條件匯編技術(shù)的一個(gè)優(yōu)點(diǎn)就是能加強(qiáng)程序的可移植性,比如有兩臺同一型號的PC電腦,結(jié)構(gòu)幾乎完全相同,只是一臺使用VGA顯示卡而另一臺使用EGA卡。為這樣的兩臺電腦編寫程序就可以采用條件匯編技術(shù),把涉及顯示功能的程序段搞成下面這樣:
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>
IF<br>
<br>
<br>
<br>
ELSE<br>
<br>
<br>
<br>
ENDIF
</td>
<td colspan=2>
VGA<br>
.<br>
.<br>
.<br>
<br>
.<br>
.<br>
.<br>
<br>
</td>
<td colspan=6>
<br>
<br>
(用于VGA卡的程序段)<br>
<br>
<br>
<br>
(用于EGA卡的程序段)<br>
<br>
<br>
</td>
<td colspan=8>
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
當(dāng)使用EGA顯示卡的用戶拿到這樣的源程序之后就無需自己對程序進(jìn)行修改了。<br>
類似的情況還有一些,比如TASM編譯程序支持的偽指令與MASM早期版本略有不同,為使源程序能適應(yīng)不同的編譯程序,采用條件匯編技術(shù)也是很有必要的。<br>
條件匯編還有其它一些用于判斷條件的偽指令,我們討論的"IF"是最簡單的一個(gè),其它的偽指令都列在表10-1中,以供大家研究參考,限于篇幅,本節(jié)不再詳細(xì)討論。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18 align=center><font face="楷體_GB2312">表11-1 條件匯編偽指令</font></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>偽指令</td><td colspan=14>說明</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IF 表達(dá)式</td><td colspan=14>求出表達(dá)式的值,如果此值不是0則編譯其后的程序段</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IFE 表達(dá)式</td><td colspan=14>與"IF"相反,如果表達(dá)式的值為0則編譯其后的程序段</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IFDEF 符號</td><td colspan=14>如果符號在源程序中有定義,則編譯其后的程序段</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IFNDEF 符號</td><td colspan=14>與"IFDEF"相反,如果符號在源程序中沒定義則條件成立</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IFB 自變量</td><td colspan=14>如果自變量為空則條件成立</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>IFNB 自變量</td><td colspan=14>與"IFB"相反,如果自變量不空則條件成立</td>
<td></td><td></td> <!右邊距>
</tr>
</font>
<!頁腳線>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!頁腳>
<tr height=60 valign="top">
<td></td><td></td>
<td colspan=9><i>Copyright © 2004-2005 <a href="mailto:webmaster@nucstorm.com">Chunk Lee</a></i></td>
<td colspan=9 align="right"><i><a href="http://www.nucstorm.com" target="_top">www.nucstorm.com</a></i></td>
<td></td><td></td>
</tr>
</table>
<!導(dǎo)航條>
<p align="right"><a href="content1.html">目錄</a> <a href="page319.html">上一頁</a> <a href="page321.html">下一頁</a> <a href="page328.html">附錄A</a></p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -