?? page160.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="page159.html">上一頁</a> <a href="page161.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>-160-</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=3>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
out_ax<br>
code<br>
<br>
</td>
<td colspan=2>
int<br>
mov<br>
dec<br>
jnz<br>
<br>
mov<br>
int<br>
mov<br>
int<br>
pop<br>
ret<br>
endp<br>
ends<br>
end
</td>
<td colspan=5>
10h<br>
ax,dx<br>
ch<br>
outloop<br>
<br>
ax,0e0dh<br>
10h<br>
al,0ah<br>
10h<br>
ax<br>
<br>
<br>
<br>
main
</td>
<td colspan=8>
;輸出一個數(shù)字<br>
;取回DX寄存器中的移位結(jié)果<br>
;循環(huán)計(jì)數(shù)減1<br>
;循環(huán)至OUTLOOP繼續(xù)輸出下一個數(shù)位<br>
<br>
;輸出回車符<br>
<br>
;輸出換行符<br>
<br>
;恢復(fù)AX寄存器<br>
;返回<br>
<br>
<br>
<br>
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
這個程序不僅可以顯示出按鍵的ASCII碼,還可以顯示出16H中斷的0號功能在AH寄存器中返回的數(shù)據(jù)。運(yùn)行這個程序,會發(fā)現(xiàn)AH寄存器中的數(shù)據(jù)與所按鍵的ASCII碼好象并無關(guān)系,比如按下打字鍵盤上的數(shù)字"1"鍵,可以看到AX寄存器返回的數(shù)據(jù)是0231H,其中31H是按鍵的ASCII碼;如果按住Shift鍵再按下數(shù)字"1"鍵,此時AX寄存器返回0221H,21H是"!"的ASCII碼,而AH寄存器中的數(shù)據(jù)竟然沒變;如果按下右邊數(shù)字小鍵盤上的"1",就會看到AX寄存器中返回4F31H,31H仍是"1"的ASCII碼,而AH寄存器中的數(shù)據(jù)卻變成了4FH。<br>
如果我們暫時給AH寄存器中的數(shù)據(jù)命名為"幻碼"的話那么我們現(xiàn)在就可以總結(jié)出這樣兩條規(guī)律:<br>
<font face="楷體_GB2312">
(1)Shift鍵可以改變同一按鍵的ASCII碼,但同一鍵的"幻碼"固定不變;<br>
(2)分在不同鍵區(qū)的同名鍵具有相同的ASCII碼,但具有不同的"幻碼"。這個規(guī)律是否絕對,我們可以按下其它的鍵來檢驗(yàn),最后我們可以發(fā)現(xiàn)這個規(guī)律對于大多數(shù)鍵來講是正確的,個別的一些鍵無此規(guī)律。<br>
</font>
那么就"幻碼"本身而言,各個鍵所對應(yīng)的"幻碼"有沒有什么規(guī)律呢?我們再次運(yùn)行這個程序,然后由"1"至"0"順次按下打字鍵區(qū)中的數(shù)字鍵,再由左至右順次按下第一行字母鍵,看看是否得到了下面的結(jié)果:<br>
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18 align=center><img src="figures/F6_10.gif"></font></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
這個試驗(yàn)揭示出"幻碼"的這樣一個規(guī)律:每個鍵對應(yīng)的"幻碼"與這個鍵在鍵盤上的位置有一定的關(guān)系。這個規(guī)律從何而來?<br>
PC機(jī)的祖先--IBM PC/XT配備了一個83鍵的標(biāo)準(zhǔn)鍵盤,現(xiàn)在這種鍵盤己然絕跡。我們通常使用的鍵盤都是101鍵的。這種鍵盤上每個鍵對應(yīng)的"幻碼"可在表6-3查出:<br>
鍵盤的結(jié)構(gòu)可分為兩大部分:按鍵開關(guān)和邏輯控制電路。每個鍵都是一個開關(guān),都具有"通"和"斷"兩種狀態(tài)。當(dāng)鍵盤通電后,控制電路就會按預(yù)定順序輪流查詢每個鍵的狀態(tài),
</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="page159.html">上一頁</a> <a href="page161.html">下一頁</a> <a href="page168.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -