?? page28.html
字號:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第3章 中斷調(diào)用與子程序</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="page27.html">上一頁</a> <a href="page29.html">下一頁</a> <a href="page45.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>-28-</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>
<p>
<font face="楷體_GB2312" lang="ZH-CN" size=3>
回來繼續(xù)讀書;若電話鈴響同時水也開了,那么A君出于對生命的珍惜必然先去關(guān)煤氣灶,然后去接電話;若在接電話的過程中水開了,那么A君必然會讓對方先等一等,待他關(guān)閉煤氣灶后,再返回來繼續(xù)接電話,接完電話后再回到書房繼續(xù)讀書。<br>
</font>
說了這許多,其含義不言而喻:我們是在收到“信號”后才中斷正在做的事情,轉(zhuǎn)去處理其它事情。而且“重要”的事情總是優(yōu)先處理。<br>
CPU的工作情況和我們?nèi)祟愊嗨疲谖覀兪褂玫碾娔X中,CPU是以另一種工作方式--“中斷方式”工作的。CPU專心執(zhí)行一個主要的程序,對外部設(shè)備不聞不問。當(dāng)鍵盤有鍵被接下時,鍵盤會通過電路向CPU發(fā)一個信號,CPU收到信號后就會記下當(dāng)前程序?qū)⒁獔?zhí)行的指令的地址,而后去執(zhí)行一小段“中斷服務(wù)程序”來保存鍵盤輸入的數(shù)據(jù)。處理完畢,CPU又會回到剛才被中斷的地方繼續(xù)完成其“本職工作”;當(dāng)打印機(jī)需要數(shù)據(jù)時,它也會向CPU發(fā)出信號,CPU收到信號后,同樣會中斷正在干的活,轉(zhuǎn)去執(zhí)行另一小段服務(wù)程序給打印機(jī)提供支援。<br>
不難看出,以這種方式工作時CPU的效率就比較高。當(dāng)外設(shè)沒有要求CPU提供服務(wù)時,CPU會全力執(zhí)行其主要的任務(wù)。而且只要設(shè)計出良好的中斷信號傳輸與處理電路,這種工作方式的可靠性是很高的。所謂“中斷”,指得就是CPU的這樣一種工作方式。<br>
</p>
</tr>
<tr>
<td></td><td></td>
<td colspan=3 align="center"><img src="icons/attention.gif"></td>
<td colspan=15><FONT FACE="楷體_GB2312" LANG="ZH-CN" SIZE=3>
這里有兩個名詞需要首先說明:<br>
(1)中斷源──中斷的來源(產(chǎn)生中斷信號的設(shè)備或指令);<BR>(2)中斷服務(wù)程序──CPU在收到中斷信號后所執(zhí)行的為中斷源提供服務(wù)的小段程序。<br>
</font></td>
<td></td><td></td> <!右邊距>
</tr>
<!正文>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
<p>
依據(jù)中斷源的不同,一般把中斷分成三類:硬件中斷、軟件中斷和處理機(jī)中斷。硬件設(shè)備產(chǎn)生的中斷就是硬件中斷;由INT指令產(chǎn)生的中斷稱為軟件中斷;而由CPU本身產(chǎn)生的中斷就是處理機(jī)中斷。<br>
</p>
</td>
<td></td><td></td> <!右邊距>
</tr>
<!正文>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18><FONT FACE="黑體" LANG="ZH-CN"><A NAME="312"><P>3.1.2 中斷的處理過程</P></A></FONT>
<p>
無論是對硬件、軟件還是處理機(jī)中斷,CPU的處理方式都是一樣的:
</p>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=3 align="center"><img src="icons/attention.gif"></td>
<td colspan=15><FONT FACE="楷體_GB2312" LANG="ZH-CN" SIZE=3>
<p>
(1)當(dāng)CPU收到中斷信號或執(zhí)行INT指令后,CPU首先會把標(biāo)志寄存器推入堆棧,而后再把指令指針I(yè)P和代碼段地址寄存器CS推入堆棧。這樣做的目的是為了在執(zhí)行完中斷服務(wù)程序后能正確地返回被中斷處繼續(xù)執(zhí)行程序,相當(dāng)于我們記下正在讀的頁碼。<BR>(2)保存完返回地址后,CPU就轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。
</p>
</font></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
<p>
這里就有這樣一個問題,CPU如何知道中斷服務(wù)程序在內(nèi)存中的位置呢?<br>
如果PC電腦只有一個中斷及其服務(wù)程序那么這個問題就簡單了。不過我們使用的PC電腦所接的外部設(shè)備不止一個,鍵盤、軟盤驅(qū)動器、打印機(jī)等等。每種設(shè)備基本上都用中斷方式與CPU聯(lián)系。況且中斷不一定都來自外設(shè),還可能來自處理機(jī)或軟件。這就要求CPU可以區(qū)分不同的中斷源,處理多個中斷。<br>
在設(shè)計8086/88CPU時,Intel公司的技術(shù)人員為其安排了256個中斷,而且這些中斷都被編了號,從0到0FFH。不同的中斷源產(chǎn)生中斷的號碼不一樣,例如處理機(jī)產(chǎn)生中斷的號碼范圍固定為00H-07H;而外設(shè)產(chǎn)生中斷的號碼范圍是08H-0FH,70H-77H兩部分;“INT nn”指令中
</p>
</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="page27.html">上一頁</a> <a href="page29.html">下一頁</a> <a href="page45.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -