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

📄 2.htm

📁 浙江大学计算机学院计算机组成教材《计算机组成与设计》(潘学增)的课堂教学课件。
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>基本指令 </title>


<meta name="Microsoft Theme" content="arcs 011">
<meta name="Microsoft Border" content="none">
</head>

<body style="background-color: #FF0000" background="arctile.jpg" bgcolor="#FFFFFF" text="#000000" link="#3399FF" vlink="#666666" alink="#FF9900">

<p align="center"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="6">&nbsp;<b>3.2</b>&nbsp;&nbsp; 
<strong>基本指令 </strong></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong></font></p>    
    
<p align="right"><font color="#000000"><a href="index.htm"><img border="0" src="../images/back.gif" align="left" width="60" height="45"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     
<a href="1.htm"><img border="0" src="../images/prev.gif" width="60" height="45"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     
<a href="3.htm"><img border="0" src="../images/forw.gif" width="60" height="45"></a></font></p>    
    
<p><strong><font color="#000000" size="4">MIPS 包括:<a href="#I.">算术运算指令</a>(<em>Arithmetic       
instructions</em>),<a href="#II.">数据传输指令</a>(<em>Data transfer       
instructions</em>),<a href="#III">条件转移指令</a>(<em>Conional instructions</em>)和<a href="#IV">无条件转移指令</a>(<em>Not      
conditional instructions</em>).</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" src="../images/sub.gif" width="26" height="27"><a name="I."> I.</a> &nbsp; 算术运算指令 (<em>includes add,sub and addi</em>).</font></strong></p>      
      
<p><strong><font color="#000000" size="4">在C语言中常有这样的指令: &nbsp;&nbsp;&nbsp;      
f=(g+h)-(i+j);       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>       
</strong></p>      
      
<p><strong><font color="#000000" size="4">变量 f,g,h,i和 j       
被分配到寄存器$16,$17,$18,$19和$20中.编译器负责将程序变量与寄存器联系起来。</font></strong></p>      
      
<p><strong><font color="#000000" size="4">编译后的程序是:</font></strong></p>    
    
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
add &nbsp; $8,$17,$18       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# register $8 contains g+h</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
add &nbsp; $9,$19,$20       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# register $9 contains i+j</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
sub &nbsp; $16,$8,$9       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# f gets $8-$9,or (g+h)-(i+j)</font></strong></p>     
     
<p><strong><font color="#000000" size="4">addi &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是立即数加法指令,即可以将寄存器与十进制数相加。如:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
addi $16,$17,100       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# $16=$17+100.</font></strong></p>      
      
<p><font color="#000000"> </font></p>

<p><strong><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" src="../images/sub.gif" width="26" height="27">  
<a name="II."><font size="4">II.</font></a><font size="4"> &nbsp; 数据传输指令 (<em>includes lw,sw,lui)</em></font></font></strong></p>      
      
<p><strong><font color="#000000" size="4">如果我们假设 g 和 h       
与寄存器 $17 和 $18联系,寄存器 $19 存有 4*i.(<em>for the byte      
addresses of MIPS,the address</em> <em>index differ by 4</em>)&nbsp;</font> </strong></p>      
      
<p><strong><font color="#000000" size="4">C 语句: &nbsp;&nbsp;&nbsp;&nbsp;       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; A[i]=h+A[i];</font></strong></p>    
    
<p><strong><font color="#000000" size="4">可被编译成下面的MIPS汇编代码 :</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
lw &nbsp;&nbsp; $8,Astart($19)       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# Temporary reg $8 gets A[i]</font></strong></p>     
     
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
add &nbsp; $8,$18,$8       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# Temporary reg $8 gets h+A[i]</font></strong></p>     
     
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
sw &nbsp;&nbsp; $8,Astart($19)       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# Stores h+A[i] back into A[i]</font></strong></p>     
     
<p><strong><font color="#000000" size="4">lui (<em>load upper immediate</em>)当一个数较大时,超出16位,则可以用<em>lui</em>设置高16位,接着用其他指令设置低16位.如:</font>       
</strong></p>      
      
<p><strong><font color="#000000" size="4">把&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
0000 0000 0011 1101 0000 1001 0000 0000&nbsp;&nbsp;&nbsp;&nbsp; 这个32位的数放到寄存器$16中去,可以分两步做:</font> </strong></p>      
      
<p><strong><font color="#000000" size="4">第一步:       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lui       
&nbsp;&nbsp; $16,61       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# 61 decimal = 0000 0000 0011 1101 binary</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
&nbsp; &nbsp;寄存器 $16 就变成了:</font> </strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
0000 0000 0011 1101 0000 0000 0000 0000       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>       
</strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;第二步:       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addi &nbsp;       
$16,$16,2304       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
# 2304 decimal = 0000 1001 0000 0000</font> </strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
最后寄存器 $16 就变成了结果值:</font></strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
0000 0000 0011 1101 0000 1001 0000 0000       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>       
</strong></p>      
      
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" src="../images/sub.gif" width="26" height="27">&nbsp;<a name="III">III</a>. &nbsp; &nbsp;条件转移指令&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </strong></p>      
      
<p><strong><font color="#000000" size="4">条件转移指令包括:beq,bne,slt,slti,sltu,sltiu.</font></strong></p>    
    
<p><strong><font color="#000000" size="4">beq&nbsp; $1,$2,100&nbsp;&nbsp;&nbsp; 是判断$1,$2是否相等,如果两者相等的话,程序转到PC+4+100;</font></strong></p>      
      
<p><strong><font color="#000000" size="4">bne&nbsp; $1,$2,100&nbsp;&nbsp;&nbsp; 与beq恰好相反,如果$1,$2不相等的话,程序转到PC+4+100.</font></strong></p>      
      
<p><strong><font color="#000000" size="4">slt&nbsp; $1,$2,$3&nbsp;&nbsp;&nbsp;&nbsp; 是比较$2,$3的大小,如果$2&lt;$3,那么$1=1,否则$1=0.</font></strong></p>      
      
<p><strong><font color="#000000" size="4"><em>slti,sltu,sltiu</em>的基本语法与上述的<em>slt</em>是一样的,只是参数略有差别。</font></strong></p>    
    
<p><strong><font color="#000000" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" src="../images/sub.gif" width="26" height="27">      
<a name="IV">IV</a>.&nbsp;&nbsp;&nbsp; 无条件转移指令</font></strong></p>      
      
<p><strong><font color="#000000" size="4">无条件转移指令包括:j,jr,jal.</font></strong></p>    
    
<p><strong><font color="#000000" size="4">j&nbsp;&nbsp;&nbsp; 10000       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
表示程序无条件的强行转移到目标地址10000。</font></strong></p>      
      
<p><strong><font color="#000000" size="4">jr&nbsp;&nbsp; $31       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个语句是专为<em>switch</em>设立的,它以寄存器为转移地址,转移到$31指定的单元执行指令。</font></strong></p>      
      
<p><strong><font color="#000000" size="4">jal&nbsp; 10000 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       
这个语句是为程序调用而设立的,它的意思是$31=PC+4;程序转到10000。</font> </strong></p>      
      
<p><strong><font color="#000000"><font size="4">我们将在后面的大程序中看到这些语句的功能。</font>       
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </strong></p>      
      
<p><font color="#000000"> </font></p>

<p> </p>

<p> </p>
</body>
</html>

⌨️ 快捷键说明

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