📄 1.4.1.htm
字号:
<html>
<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>
<BODY>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.0c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.1b.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<font class="example">例1.1</font> 下面是(1.1)汇编指令翻译成的假想的机器代码
<table align=center width=350 class="content">
<tr><td>0001 01 00 00000000*</td><td></td></tr>
<tr><td>0011 01 10 00000010</td><td>(1.2)</td></tr>
<tr><td>0010 01 00 00000100*</td><td></td></tr>
</table>
<p>在上面的三条指令中,前4位是指令码,0001、0010和0011分别代表装入、存储和加,装入指的是从内存取到寄存器,而存储则反过来。下面2位表示寄存器,01指的是寄存器R1。再下面2位是“标志”位,00代表普通的地址模式,即最后8位是内存地址。标志10代表“立即”模式,也就是最后8位代表操作常数,这个模式出现在(1.2)的第二条指令中。 </p>
<p>我们还可以看到(1.2)的第二和第三条指令有*号,*号代表重定位,它和重定位机器代码的各个操作数有关。假如存放数据的地址空间的起始地址是L,*号表示L必须加到那条指令的地址上。如果L=00001111,即15,那么a和b的地址分别是15和19,(1.7)的指令将以 <br><br>
<table align=center width=350 class="content">
<tr><td>0001 01 00 00001111</td><td></td></tr>
<tr><td>0011 01 10 00000010</td><td>(1.3)</td></tr>
<tr><td>0010 01 00 00010011</td><td></td></tr>
</table>
<br>
的形式出现在绝对的(或不可重定位的)机器代码中。注意,(1.2)的第二条指令没有*号标记,所以L没有加到它的地址上,这是完全正确的。因为这些代表的是常数2,而不是存储单元2。 </p>
</td>
</tr></table>
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.0c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.1b.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -