⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page280.html

📁 李春生的汇编书籍
💻 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="page279.html">上一页</a> <a href="page281.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>-280-</td><td></td> <!页码>
<td colspan=6>PC机汇编语言实战精解</td><td colspan=4></td><td colspan=6 align="right"><img src="icons/flag.gif"></td> <!书名>
<td></td><td></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=18>
那些反映运算后果的标志位都应该有相应的条件转移指令。<br>
  原则上讲的确应该有这样的规律,不过有个特例--AF标志没有相应的条件转移指令。除AF外,SF、ZF、PF、CF、OF都有对应的条件转移指令。另外有一些条件转移指令要根据几个标志位的情况进行转移,比如前面我们讨论过的指令"JA",还有其它的一些。在本节里我们将总结所有的条件转移指令以及它们所判断的条件。<br>
  在总结之前还要先解决一个前面遗留下来的问题,就是指令JA/JB与指令JG/JL的区别。前面已经提到过如果要对符号不同的两个数进行比较,应该使用JG/JL指令判断结果。下面先进行一个实验,实验过程中请注意观察符号标志位SF与溢出标志位OF:<br>
  C:\ASM\>DEBUG[Enter]<br>
  -a[Enter]<br>
  0F6A:0100 mov al,5<br>
  0F6A:0102 cmp al,3<br>
  0F6A:0104 cmp al,-1<br>
  0F6A:0106 cmp al,80<br>
  0F6A:0108 [Enter]<br><br>
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=4>-g=100 102[Enter]</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>AX=0005</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=002A</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=0102</td>
<td colspan=5>NV UP EI PL NZ NA PO NC</td><td colspan=3></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>0F6A:0102</td><td colspan=2>3C03</td><td colspan=6>CMP AL,03</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  注意在进行数据比较之前SF与OF标志都为0,且CF标志也为0。
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=4>-p[Enter]</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>AX=0005</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=002A</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>NV UP EI PL NZ NA PO NC</td><td colspan=3></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>0F6A:0104</td><td colspan=2>3CFF</td><td colspan=6>CMP AL,FF</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  第一次我们将+5与+3相比较,各标志位都没有变化。如果单从CF与ZF标志来看是可以说明5>3的,因为此次比较即没有产生借位且结果也不是0。指令JA就是依靠这两个标志位进行判断的。
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=4>-p[Enter]</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>AX=0005</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=002A</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=0106</td>
<td colspan=5>NV UP EI PL NZ AC PE CY</td><td colspan=3></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>0F6A:0106</td><td colspan=2>3C80</td><td colspan=6>CMP AL,80</td><td colspan=4></td><td colspan=4></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  第二次将+5与-1相比较,标志寄存器产生了变化。如果此时仍然通过CF标志对比较结果进行判断,就会有+5<-1的结果,只有小数减大数才会产生借位。由此可以得出这样的结论:CPU在设置CF标志位的时候是不考虑参加运算的数是否有符号的。换句话说,CPU把参加运算的数
</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 &copy; 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="page279.html">上一页</a> <a href="page281.html">下一页</a> <a href="page291.html">下一章</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -