?? page157.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="page156.html">上一頁</a> <a href="page158.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> <!章節名>
<td></td><td>-157-</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=3>
0BFC:0110<br>
0BFC:0113<br>
0BFC:0116<br>
0BFC:0118<br>
0BFC:011B<br>
0BFC:011D<br>
0BFC:011F<br>
0BFC:0121<br>
0BFC:0123<br>
0BFC:0126<br>
0BFC:0129<br>
0BFC:012B<br>
0BFC:012C<br>
0BFC:012D<br>
0BFC:012F<br>
0BFC:0130<br>
0BFC:0131<br>
0BFC:0133<br>
0BFC:0134<br>
0BFC:0135<br>
0BFC:0137<br>
0BFC:0138<br>
0BFC:013A<br>
0BFC:013D<br>
0BFC:013F
</td>
<td colspan=2>
MOV<br>
MOV<br>
REPZ<br>
MOV<br>
MOV<br>
INT<br>
CMP<br>
JZ<br>
ADD<br>
MOV<br>
MOV<br>
OUT<br>
INC<br>
MOV<br>
OUT<br>
DEC<br>
MOV<br>
OUT<br>
INC<br>
MOV<br>
OUT<br>
JMP<br>
MOV<br>
INT<br>
INT
</td>
<td colspan=5>
AX,0242<br>
CX,0800<br>
STOSW<br>
BX,0000<br>
AH,00<br>
16<br>
AL,1B<br>
013A<br>
BX,+50<br>
DX,03D4<br>
AL,0C<br>
DX,AL<br>
DX<br>
AL,BH<br>
DX,AL<br>
DX<br>
AL,0D<br>
DX,AL<br>
DX<br>
AL,BL<br>
DX,AL<br>
011B<br>
AX,0003<br>
10<br>
20
</td>
<td colspan=8>
;AX寄存器裝入"綠色"的"B"<br>
;寫入一個顯示頁的數據<br>
<br>
;BX寄存器清0<br>
;等待鍵盤輸入<br>
<br>
;輸入的是"ESC"嗎?<br>
;是"ESC",轉013A結束程序<br>
;BX寄存器加50H(一個字符行)<br>
;DX指向索引寄存器<br>
;選擇CRTC12寄存器<br>
;輸出索引號<br>
;DX指向數據寄存器<br>
;取得偏移地址的高字節<br>
;并將其輸出至CRTC12<br>
;DX指向索引寄存器<br>
;選擇CRTC13寄存器<br>
;輸出索引號<br>
;DX指向數據寄存器<br>
;取得偏移地址的低字節<br>
;并將其輸出至CRTC13<br>
;轉011B繼續<br>
;設置顯示模式為03H<br>
<br>
;結束程序
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
這個程序先在顯示緩沖區第0頁中寫入一屏藍色的"A",在第1頁寫入一屏綠色的"B",首先出現在屏幕上的是第0頁。我們可以看到每按一次鍵,屏幕便向上滾動一行,同時可以看到第1頁的內容也有一部分出現在屏幕上。連續按鍵則第0頁的內容逐漸滾出屏幕,而第1頁的內容出現在屏幕上。直到按下Esc后程序重置顯示模式并結束運行。<br>
用這種方法滾動屏幕比使用10H中斷要快速,一般情況下我們往往將這種滾屏方法稱為"硬件滾屏",而將使用10H中斷滾動屏幕稱為"軟件滾屏"。這種滾屏方法應用不多,因為它總要將下一顯示頁的內容滾上屏幕。但有時使用這種滾屏技術可以很簡單地產生一些特殊效果,比如使一段文字從屏幕下面"徐徐升起"。<br>
③ CRTC14-CRTC15寄存器稱光標地址寄存器,用于控制光標位置。這兩個寄存器的結構和顯示起始地址寄存器(CRTC12-CRTC13)一樣,只不過低14位表示的是光標所在的內存地址。<br>
也就是說,CRT控制器看待光標位置的方式和我們不一樣,我們習慣于用行與列坐標來給出光標位置,而CRTC則是把光標當做字符來看待,光標位置就是"光標字符"在顯示緩存中的偏移地址,單位同顯示起址一樣使用"字"。例如我們需要將光標置于第一行第四列,則光標地址為"(1×160+4×2)/2=54H"。請看下面的實驗:
</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="page156.html">上一頁</a> <a href="page158.html">下一頁</a> <a href="page168.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -