?? page14.html
字號(hào):
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第2章 開始設(shè)計(jì)程序</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="page13.html">上一頁</a> <a href="page15.html">下一頁</a> <a href="page27.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>-14-</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><img src="icons/P2_5_DS.gif"></td>
<td colspan=17>
DS稱為數(shù)據(jù)段地址寄存器(Data segment),它保存數(shù)據(jù)段的段地址。如果在程序中有數(shù)據(jù)的存取操作時(shí),若不"顯式"地指定段寄存器,則將在DS指定的段尋找相應(yīng)的存儲(chǔ)單元。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td><img src="icons/P2_6_ES.gif"></td>
<td colspan=17>
ES稱為附加段地址寄存器(Exterial segment),也可以稱為擴(kuò)展段地址寄存器,它用于指向內(nèi)存中的任一段。一般情況下我們常使用這個(gè)段寄存器取得內(nèi)存中某個(gè)單元的數(shù)據(jù)而不需修改DS寄存器。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td><img src="icons/P2_7_CS.gif"></td>
<td colspan=17>
CS是代碼段地址寄存器(Code segment),它和IP(指令指針)寄存器一起指向目前正在執(zhí)行的指令。也就是說,CPU永遠(yuǎn)在CS:IP指向的內(nèi)存單元中取得指令機(jī)器碼并執(zhí)行。CS寄存器的數(shù)值有變化,CPU所取的指令就有變化。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td><img src="icons/P2_8_SS.gif"></td>
<td colspan=17>
SS是堆棧段地址寄存器(Stack segment),它保存了堆棧存儲(chǔ)區(qū)的段地址。堆棧是開辟在內(nèi)存中的一段特殊空間,數(shù)據(jù)在堆棧中存取不同于在其它內(nèi)存空間。有關(guān)堆棧的概念將在后面做更詳細(xì)地介紹。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
以上所講的所有段寄存器都是16位的,無法拆分成8位使用,同時(shí),段寄存器不能參與任何數(shù)學(xué)運(yùn)算和邏輯操作。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
<font face="黑體">(5) 指令指針寄存器(Instruction Pointer)</font><br>
IP是CPU內(nèi)部一個(gè)16位的寄存器,它用于記錄CPU將要執(zhí)行的指令的偏移地址。指令的段地址由CS保存。IP不同于其它寄存器,它不能隨意的修改,不能參與任何運(yùn)算或邏輯操作。它的唯一用途就是為CPU取得指令提供偏移地址(CS提供段地址)。也就是說,CPU永遠(yuǎn)從CS:IP指定的內(nèi)存地址處取得所要執(zhí)行的指令。<br>
如果CS:IP指向的位置沒有合乎邏輯的指令,而是一些雜亂無章的數(shù)據(jù),那么CPU就會(huì)傻乎乎地把這些亂七八糟的數(shù)據(jù)當(dāng)成指令來胡亂執(zhí)行,其結(jié)果將是未知的。通常情況下會(huì)導(dǎo)致"死機(jī)"。<br>
在進(jìn)入DEBUG環(huán)境后IP究竟指向什么位置?屏幕上顯示IP指向偏移100H的位置。也就是說,我們后面要編制的程序也必須從偏移100H處開始。為什么要空出前面256字節(jié)內(nèi)存呢?這是因?yàn)樵谶@256字節(jié)的內(nèi)存中保存有DOS系統(tǒng)提供的重要數(shù)據(jù)。關(guān)于這些數(shù)據(jù)的說明會(huì)在后面陸續(xù)介紹。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
<font face="黑體">(6)變址、基指針、堆棧指針和標(biāo)志寄存器(Index,Base Pointer,Stack Point & Flag)</font><br>
這部分內(nèi)容現(xiàn)在暫時(shí)不用,后面用到時(shí)會(huì)詳細(xì)加以說明。<br>
一個(gè)看似簡(jiǎn)單的R命令引出了這么多枯燥的東西,實(shí)在讓人頭痛。不過這可是些極其重要的基本知識(shí),不了解這些細(xì)節(jié)內(nèi)容就無法繼續(xù)學(xué)習(xí)下去。<br>
實(shí)際上與學(xué)習(xí)高級(jí)語言相比,這些知識(shí)更應(yīng)使人感到新奇有趣。畢竟,我們只能看到高級(jí)語言執(zhí)行的結(jié)果,而看不到它執(zhí)行的過程。
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
<font face="黑體" lang="ZH-CN"><a name="22"><p>2.2 編制第一個(gè)程序</p></a></font>
<font face="黑體" lang="ZH-CN"><a name="221"><p>2.2.1 程序的輸入和保存</p></a></font>
<td></td><td></td> <!右邊距>
</tr>
<!正文>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
了解了上面這些知識(shí),我們就可以開始編寫第一個(gè)程序了。編程之前先要命令DEBUG 作好翻譯匯編指令的準(zhǔn)備--在"-"后面打入一個(gè)字母"A"并回車。看到了什么有趣的東西嗎?
</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="page13.html">上一頁</a> <a href="page15.html">下一頁</a> <a href="page27.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -