?? page142.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>
<!導(dǎo)航條>
<p><a href="content1.html">目錄</a> <a href="page141.html">上一頁</a> <a href="page143.html">下一頁</a> <a href="page168.html">下一章</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>-142-</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=18>
為了解決這個問題,PC電腦的制造者特意在機(jī)器中安裝了一片ROM存儲器,里面有一組程序(習(xí)慣上稱這組程序是"固化"的程序),這組程序就是通常所說的BIOS。這片ROM非常重要,沒有這片ROM則電腦是根本不能啟動的。更為重要的是這片ROM為程序設(shè)計(jì)者提供了一些最最常用的"子程序",這些子程序可以完成諸如顯示文字或讀取磁盤等功能,程序員只要使用"INT"指令很簡單地調(diào)用這些子程序完成一些較為復(fù)雜的工作。這一層次就是一般所說的"BIOS"層。<br>
由于有現(xiàn)成的子程序可以調(diào)用,所以在這一層次上設(shè)計(jì)程序就很簡單,而且程序容易移植到別的機(jī)型上,只要這些機(jī)型具有相同的中斷號和功能號。這一層次的缺點(diǎn)在于程序要損失一些速度和靈活性。<br>
第三個層次是由操作系統(tǒng)的設(shè)計(jì)者提供的,這就是前面所說的"DOS API"。不過這里有必要多說一點(diǎn),DOS系統(tǒng)允許用戶使用"DEVICE"命令調(diào)入一些"設(shè)備驅(qū)動程序",這些驅(qū)動程序可以控制一些"非標(biāo)準(zhǔn)"設(shè)備(不能由BIOS控制的設(shè)備),比如CD-ROM。程序員可以通過調(diào)用這些驅(qū)動程序來操作這些設(shè)備,這也能算上是在DOS層編程。<br>
這一層次具有最好的可移植性,同時(shí)也具有最低的效率和靈活性,舉個例子,通過BIOS編程顯示字符可以方便地控制字符的屬性,而通過DOS編程就無法做到這一點(diǎn)。<br>
既然我們可以在三個層次上設(shè)計(jì)程序,那么究竟在工作哪個層次上就有一些值得考慮的地方:需要效率和靈活性就要放棄可移植性,需要可移植性就要放棄效率和靈活性。究竟取誰舍誰,就要根據(jù)需要而定。<br>
這一節(jié)將詳細(xì)討論如何設(shè)計(jì)程序通過控制"Video RAM"來達(dá)到控制字符顯示的目的,也就是說這一節(jié)的程序是在硬件層上工作的。通過這一節(jié)的學(xué)習(xí),我們將更深入地了解PC系統(tǒng)。具體內(nèi)容包括系統(tǒng)內(nèi)存的規(guī)劃,顯示內(nèi)存與屏幕文字的對應(yīng)關(guān)系等,這些知識有助于我們今后開發(fā)出更快速的程序。下面我們就來討論第一個重要的內(nèi)容:顯示內(nèi)存的地址。<br>
講到這里我們有必要詳細(xì)了解一下PC系統(tǒng)的內(nèi)存規(guī)劃,我們知道8086/88 處理機(jī)可以配備1MB內(nèi)存,那么這些內(nèi)存究竟是如何安排的呢?是不是所有的內(nèi)存都可以裝入代碼呢?情況并非如我們想象的那樣簡單。圖6-5反映了PC系統(tǒng)內(nèi)存的分配情況:<br>
可以看到物理地址0A000H以下是運(yùn)行程序的空間,我們在DOS的提示符下打入一個程序的名字,DOS就會將這個程序從磁盤讀入這部分內(nèi)存中運(yùn)行。這部分空間從物理地址00000H至9FFFFH共640KB,一般稱其為基本內(nèi)存(Base Memory)或常規(guī)內(nèi)存(Conversional Memory)。<br>
從0A000至0FFFFFH共384KB內(nèi)存空間有專門用途,最高端的64KB(即0F0000H-0FFFFFH)分配給SYSTEM BIOS占用,而從0A0000H-0BFFFFH共128KB的內(nèi)存空間分配給顯示系統(tǒng)使用,其余空間保留給其它的擴(kuò)充卡或由EMS管理程序使用。我們所關(guān)心的"Video RAM"就在0A0000H-0BFFFFH這一段空間內(nèi)。這一段空間又可細(xì)分為以下幾個部分:<br>
(1)EGA/VGA圖形緩沖區(qū):如果我們選擇了EGA/VGA的圖形模式,那么VRAM將出現(xiàn)在物理地址0A0000H-0AFFFFH這64KB空間中。<br>
(2)MDA文本緩沖區(qū):這部分空間從物理地址0B0000H至0B7FFFH共32KB,由早期的MDA卡使用,由于MDA卡上只有4KB內(nèi)存,所以它只使用0B000H-0B1000H共4KB地址空間。需要注意的是HGC卡(Hercules Graphics Card)使用整個32KB空間作為其圖形緩沖區(qū),同時(shí)它又兼容MDA卡。
</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="page141.html">上一頁</a> <a href="page143.html">下一頁</a> <a href="page168.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -