?? page245.html
字號:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第9章 圖形顯示</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="page244.html">上一頁</a> <a href="page246.html">下一頁</a> <a href="page269.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">第9章 圖形顯示</td> <!章節名>
<td></td><td>-245-</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=2>
<br>
<br>
<br>
<br>
<br>
loop3:<br>
<br>
<br>
<br>
<br>
<br>
<br>
next_dot:<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
disp<br>
code<br>
<br>
</td>
<td colspan=2>
mov<br>
mov<br>
<br>
lodsw<br>
xchg<br>
<br>
test<br>
push<br>
jz<br>
mov<br>
mov<br>
int<br>
<br>
inc<br>
shr<br>
pop<br>
dec<br>
jnz<br>
inc<br>
pop<br>
loop<br>
<br>
pop<br>
pop<br>
pop<br>
ret<br>
endp<br>
ends<br>
end
</td>
<td colspan=4>
cx,152<br>
di,16<br>
<br>
<br>
ah,al<br>
<br>
ax,bx<br>
ax<br>
next_dot<br>
ah,0ch<br>
al,2<br>
10h<br>
<br>
cx<br>
bx,1<br>
ax<br>
di<br>
loop3<br>
dx<br>
cx<br>
loop2<br>
<br>
di<br>
si<br>
bx<br>
<br>
<br>
<br>
main
</td>
<td colspan=10>
;漢字左上角的X坐標送入CX寄存器<br>
;處理16個Bit<br>
<br>
;取得一個字<br>
;交換高低字節<br>
<br>
;測試"掩模"中指定的數位<br>
;暫存待測數據<br>
;若所測試的數位為0,轉NEXT_DOT繼續<br>
;畫一個洋紅色的點<br>
<br>
<br>
<br>
;X坐標加1,準備處理下一個數位<br>
;BX寄存器中的"掩模"右移1位<br>
;恢復AX寄存器中的待測數據<br>
;已處理了全部16個數位了嗎?<br>
;未處理完全部數位,轉LOOP3繼續<br>
;Y坐標加1,準備處理下一條線<br>
;恢復CX寄存器中的計數值<br>
;轉LOOP2繼續<br>
<br>
;恢復寄存器<br>
<br>
<br>
;返回主過程<br>
<br>
<br>
<br>
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
這個程序和第三章的PROG4程序有一點相象,程序PROG4是利用AND指令進行按位測試工作的。實質上CPU執行TEST指令和執行AND指令是一樣的,即把待測試的寄存器與"掩模"數據做一次"與"操作,根據結果設置標志位,但"與"之后的結果不保留。TEST與AND的關系類似于CMP與SUB的關系,將這樣兩個指令聯合記憶效果不錯。當然,也可以按以下規律記憶:<br>
<font face="楷體_GB2312">
(1)TEST指令后的源操作數為被測試數據,目的操作數為"掩模",需要測試哪幾個數位,"掩模"中相應的數位就要置1。<br>
(2)若被測試的數位都是0,那么ZF標志將被置1,指令"JZ"可以完成轉移,反之如果被測數位中有一個不是0,ZF標志就會清0,指令"JNZ"可以完成轉移。仔細觀察"Z/NZ"與被測數位之間的關系可以很好地掌握TEST指令。<br>
</font>
數據的分析看來不是很困難,那么如何獲得字模數據呢?所有的漢字操作系統都帶有標
</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="page244.html">上一頁</a> <a href="page246.html">下一頁</a> <a href="page269.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -