?? page141.html
字號:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第6章 文字輸出與鍵盤輸入</title>
</head>
<body>
<style type="text/css">
body {
background-color: #c0c0c0;
}
table {
background-color: #c0c0c0;
line-height: 24px;
}
</style>
<!導航條>
<p><a href="content1.html">目錄</a> <a href="page140.html">上一頁</a> <a href="page142.html">下一頁</a> <a href="page168.html">下一章</a></p>
<table border=0 align="center" width=800 frame="box" rules="none">
<!標尺行>
<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></td><td></td>
<td colspan=6><img src="icons/flag.gif"></td><td colspan=4></td><td colspan=6 align="right">第6章 文字輸出與鍵盤輸入</td> <!章節(jié)名>
<td></td><td>-141-</td><td></td> <!頁碼>
</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=18>
光標移動到"數(shù)字"的下面,則讓這個數(shù)字變?yōu)?quot;閃爍"顯示,光標移動到字母或其它符號下面顯示效果無變化。<br>
這個程序要完成這樣一些事情:進入程序后首先要取得當前光標位置并保存到數(shù)據(jù)段中;然后要取得按鍵并判斷是何按鍵;第三要根據(jù)按鍵情況在新位置設定光標;第四要取得光標所在新位置的字符并判斷這個字符是否為數(shù)字;第五要重新設置數(shù)字的屬性字節(jié)并將具有新屬性的數(shù)字在光標位置顯示出來。五項重點工作要使用五種BIOS功能調用,其中10H中斷的08號功能就是我們重點要掌握的。<br>
另外兩個有關字符的功能調用相對來說不太重要,它們是10H中斷的04H和0AH功能調用。04H功能用于讀取光筆位置,光筆也是一種輸入設備,不過在我們的PC電腦中應用得很少;0AH功能用于在屏幕當前光標位置處寫字符,但這個功能既不能顯示有屬性的字符,也不能自動處理光標后移,所以應用得也很少。這兩個功能我們也就不再多說了。<br>
這一節(jié)的內(nèi)容還是相當豐富的,我們詳細討論了應用在字符模式下的幾個功能調用,這些功能都是由BIOS為我們提供的。而DOS的21H中斷也為我們提供了一些用于輸出字符的功能,不過這些功能調用一般都不能直接處理屬性,所以我也不準備詳細討論它們,如果你需要使用這些功能,可以查閱本書的附錄。這一節(jié)的研究到此結束,下一節(jié)我們將討論Video RAM與文字顯示的關系。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18><font face="黑體"><a name="63">6.3 直接操作Video RAM</a></font></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
使用BIOS功能調用顯示文字是一種十分簡單的方法,這種方法具有兩個優(yōu)點:編程簡單并且可移植性好。不同的機型其顯示系統(tǒng)的結構可能不一樣,但只要它們具有完全相同的BIOS功能調用,那么所有使用BIOS功能的程序在這些機型上都能正確地執(zhí)行。這可以說是采用BIOS設計程序的最大優(yōu)點。<br>
不過采用BIOS功能調用編制程序也有一個缺陷,那就是效率低。這是因為BIOS程序執(zhí)行前需要保存"環(huán)境"(要改變的寄存器),同時為了能在圖形模式下顯示出文字,還要做判斷顯示模式等工作,這使得程序運行速度不高??梢娦逝c可移植性是相矛盾的。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=6 align="center"><img src="figures/F6_4.gif"><br><font face="楷體_GB2312">圖6-4 PC系統(tǒng)的簡單結構</font></td>
<td colspan=12>
這里需要稍微說一點關于"可移植性"的問題,這個問題在第一章提過一點,大致是說匯編語言雖然效率高,但可移植性沒有高級語言好。其實單就匯編語言自身而言,可移植性也分三個層次,原因很簡單,我們的系統(tǒng)本身就分為三個層次。圖6-4反映了PC系統(tǒng)的組成:<br>
對于程序設計而言,硬件層包括存儲器、寄存器和端口,它們和各種外部設備緊密相聯(lián),應用匯編語言控制它們就等于直接控制外部設備。我們在前面討論過音響程序的設計,相信大家對61H端口的功能還有很深的印象。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
在硬件層編程所具有的優(yōu)勢在于程序具有很高的效率和靈活性,這一點大家應該是很清楚的。通過編程控制定時器和61H端口,程序可以操縱PC電腦發(fā)出從音樂到槍聲等很多不同的聲音,甚至能發(fā)出語言。不過為了獲得需要的聲音效果,我們也必須深入地了解PC電腦的詳細構造,要掌握端口每一位的作用以及一些電路的結構。而且程序要處理的事情也很多,比如為了發(fā)出音樂,則程序必須要精確地定時,且必須具體到幾分音符對應幾個時鐘計數(shù)。這使得那些工作在硬件層的程序不易設計和調試。
</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>
<!導航條>
<p align="right"><a href="content1.html">目錄</a> <a href="page140.html">上一頁</a> <a href="page142.html">下一頁</a> <a href="page168.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -