?? page277.html
字號:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第10章 細節補充</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="page276.html">上一頁</a> <a href="page278.html">下一頁</a> <a href="page291.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">第10章 細節補充</td> <!章節名>
<td></td><td>-277-</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=4>-t</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>AX=006E</td><td colspan=2>BX=0000</td><td colspan=2>CX=0000</td><td colspan=2>DX=0000</td><td colspan=2>SP=FFEE</td><td colspan=2>BP=0000</td><td colspan=2>SI=0000</td><td colspan=2>DI=0000</td><td colspan=2></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>DS=0F6A</td><td colspan=2>ES=0F6A</td><td colspan=2>SS=0F6A</td><td colspan=2>CS=0F6A</td><td colspan=2>IP=010A</td>
<td colspan=5>NV UP EI PL NZ AC PO CY</td><td colspan=3></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>0F6A:010A</td><td colspan=2>C3</td><td colspan=6>RET</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
B7 SHL 1=6EH=01101110B,結果包含5個1,為奇數,所以PF=0(PO)。<br>
由此實驗可以看出,無論是邏輯操作指令還是算術運算指令,或者是移位指令都能影響PF標志。<br>
(2)OF(Overflow Flag)<br>
這是溢出標志位,這一位表示了運算結果是否超出了計算機所能表示的數的范圍。溢出的概念容易讓人范迷糊,舉兩個例子,分別計算0FFH+1與68H+21H,哪次運算會溢出?<br>
初看起來計算0FFH+1將產生9位的結果,而68H+21H=89H,仍然是8位,好象計算0FFH+1應該導致溢出。結果真是這樣嗎?讓我們向"DEBUG"請教一下:
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
C:\ASM\>DEBUG[Enter]<br>
-a[Enter]<br>
0F6A:0100 mov al,ff<br>
0F6A:0102 add al,1<br>
0F6A:0104 mov al,68<br>
0F6A:0106 add al,21<br>
0F6A:0108 [Enter]
</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>-g=100 104[Enter]</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>AX=0000</td><td colspan=2>BX=0000</td><td colspan=2>CX=0000</td><td colspan=2>DX=0000</td><td colspan=2>SP=FFEE</td><td colspan=2>BP=0000</td><td colspan=2>SI=0000</td><td colspan=2>DI=0000</td><td colspan=2></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>DS=0F6A</td><td colspan=2>ES=0F6A</td><td colspan=2>SS=0F6A</td><td colspan=2>CS=0F6A</td><td colspan=2>IP=0104</td>
<td colspan=5><u>NV</u> UP EI PL ZR AC PE CY</td><td colspan=3></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>0F6A:0104</td><td colspan=2>B068</td><td colspan=6>MOV AL,68</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=4>-g=104 108[Enter]</td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>AX=0089</td><td colspan=2>BX=0000</td><td colspan=2>CX=0000</td><td colspan=2>DX=0000</td><td colspan=2>SP=FFEE</td><td colspan=2>BP=0000</td><td colspan=2>SI=0000</td><td colspan=2>DI=0000</td><td colspan=2></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>DS=0F6A</td><td colspan=2>ES=0F6A</td><td colspan=2>SS=0F6A</td><td colspan=2>CS=0F6A</td><td colspan=2>IP=0108</td>
<td colspan=5><u>OV</u> UP EI NG NZ NA PO NC</td><td colspan=3></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=2>0F6A:0108</td><td colspan=2>5F</td><td colspan=6>POP DI</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右邊距>
</tr>
<tr>
<td></td><td></td> <!左邊距>
<td colspan=18>
通過這個實驗可以看出,實際計算結果與我們推測的正好相反。0FFH+1沒有造成溢出,而68H+21H反而溢出了。<br>
為什么會有這樣的現象?如果我們把"溢出"的概念放到"帶符號數"的條件下考慮就會明白這其中的道理了。所謂"超出數的表示范圍"指得是超出"帶符號數"的范圍,毫無疑問68H+21H是等于89H,但是89H實際是一個負數。<br>
究竟什么情況下會導致溢出?數據在進行計算時各數位之間難免會有進位,以8位數據計算為例,與溢出有關的進位操作是Bit6至Bit7之間的進位與Bit7至CF之間的進位。具體來說,當Bit6至Bit7的進位與Bit7至CF的進位同時發生或同時不發生的情況下就沒有產生溢出。反之,如果只發生了一次進位,那么就導致了溢出。
</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="page276.html">上一頁</a> <a href="page278.html">下一頁</a> <a href="page291.html">下一章</a></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -