4.1.1指令系统的发展
程序:计算机的程序是由一系列的机器指令组成的。
指令就是计算机执行某种操作的命令。
这里某种操作???其实很有意思啊
20世纪50年代,所支持的指令系统只有定点加减,逻辑运算、数据传送、转移等十几至几十条指令。
60年代后期,除以上基本指令,还设置了乘除运算、浮点运算、十进制运算、字符串处理,指令数目多达几百条,寻址方式也趋多样化
计算机的指令有微指令、机器指令和宏指令。
微指令:微程序级的命令,属于硬件。
宏指令:若干条机器指令组成的软件指令,属于软件。
机器指令:介于微指令和宏指令之间,通常简称为指令。
每一条指令可完成一个独立的算术运算或算术逻辑运算操作。
4.1.2指令系统的性能要求
完备性
指令系统丰富、功能齐全、使用方便。
有效性
该指令系统编写的程序能够高效率地运行。
高效率主要表现在程序占据存储空间小、执行速度快。
规整性
对称性
匀齐性
指令格式和数据格式的一致性
兼容性
系列机各机种之间具有相同的基本结构和共有的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。
4.2 指令格式
机器指令
机器指令是机器字来表示。
表示一条指令的机器字,就称为指令字,通常简称指令。
指令格式,则是指令字用二进制代码来表示的结构形式,通常由操作码字段和地址码字段组成。
一条指令的结构如下形式来表示:
操作码字段OP
地址码字段A
操作码
设计计算机时,对指令系统的每一条指令都要规定一个操作码。
操作码字段应该执行怎样的操作?
加法,减法,乘法,除法,取数,存数等等。
一般来说,一个包含 n” role=”presentation”>nn 条指令。
地址码
有几个操作数地址,称为几操作数 或 几地址指令。
在早期,一般操作数有被操作数、操作数和操作结果这三种数,所以就形成了三地址指令格式。
后来发展成二地址格式、一地址格式和零地址格式。
(1)零地址指令:只有操作码,没有地址码。
(2)一地址指令只有一个地址码,指定一个操作数,另一个操作数是隐含的。
例数学含义:AC 累加寄存器AC中的数据位隐含的被操作数,操作结果又回到累加寄存器AC中,而累加寄存器中原来的数随即被冲掉。
op表示操作性质:加、减、乘、除…
(AC)表示累加寄存器中AC的数;(A)表示内存中地址A的存储单元中的数;然后运算完又送回到(AC).
(3)二地址指令,有两个地址码字段A1,A2” role=”presentation”>A1,A2A1,A2 兼做存放操作结构的地址。so数学含义:
A1A1
在二地址指令格式中,从操作数的物理位置来说,可以归结为三种类型:
1.访问内存的指令格式,称为存储器-存储器(SS)型。
2.访问寄存器的指令格式,称为寄存器-寄存器(RR)型。
3.即要访问内存单元,又要访问寄存器,称为寄存器-存储器(RS)型。
(4)三地址指令中有三个操作数 A1,A2,A3” role=”presentation”>A1,A2,A3A1,A2,A3,其数学含义:
A3A3
指令字长度
一个指令字中包含二进制代码的位数,称为指令字长度。
机器字长:计算机能直接处理的二进制数据的位数,他决定了计算机的运算精度。
半字长指令:指令字长度等于半个机器字长度的指令。
单字长指令:指令字长度等于机器长度的指令。
双字长指令:指令字长度等于两个机器长度的指令。
多字长指令的缺点:必须两次或三次访问内存以取出一整条指令,这就降低了CPU的运算速度,同时又占用了更多的空间。
例题考察:
分清楚单字长还是双字长;
操作码字段OP可以指定 2n” role=”presentation”>2n2n 条指令
二地址指令格式中,根据访问的物理位置来判断RR\SS\RS型
4.3 操作数类型
4.3.1 一般的数据类型
地址数据
无符号整数
数值数据
①定点整数或定点小数;②浮点数;③压缩十进制数,一个字节用两位BCD码表示
字符数据
目前广泛使用ASCII码
逻辑数据
一个单元有若干二进制位项组成,每个位的值可以是1或0.
4.4 指令和数据的寻址方式
寻址方式分为 指令寻址方式 和 地址寻址方式。
在冯·诺依曼型结构的计算机中,内存中指令的寻址和数据的寻址是交替进行的。
4.4.1 指令的寻址方式
有两种;
顺序寻址方式
指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序进行。
指令的顺序寻址方式,必须使用程序计数器PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
跳跃寻址方式
所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。
4.4.2 操作数基本寻址方式
隐含寻址
不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。
操作数在专用寄存器中
立即寻址
指令的地址字段指出的不是操作数的地址,而是操作数本身。
特点:指令中包含的操作数立即可用,节省了访问内存的时间。
操作数=A.
直接寻址
特点:在指令格式的地址字段中直接指出操作数在内存的地址A。
如果用D表示操作数,那么直接寻址的表达式为:D=(A).
EA=A.
间接寻址
相对于直接寻址而言,指令地址字段中的形式地址A不是操作数D的真正地址,而是操作数地址的指示器。
两次访存,影响指令执行速度。
EA=(A).
寄存器寻址
当操作数不在内存中,而是放在CPU的通用寄存器中,可采用寄存器寻址方式。
指令结构中的RR型指令,就是采用寄存器寻址方式的例子。
EA=R
寄存器间接寻址
与寄存器寻址的区别:
指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
EA=(R).
偏移寻址
直接寻址和寄存器间接寻址的结合。
EA=A+(R);
常用的三种偏移寻址:
相对寻址:EA=A+(PC);引用的专用寄存器是程序计数器(PC).
基址寻址:EA=A+(R);引用的专用寄存器是基址寄存器.
变址寻址:EA=A+(R);引用的专用寄存器是变址寄存器.
段寻址方式
EA=A+(R);
堆栈寻址
EA=栈顶
作业题作业题
一种二地址RS型指令的结构如下所示:
6位
4位
1位
2位
16位
OP
–
通用寄存器
间接寻址标志http://www.w3.org/1998/Math/MathML">I” role=”presentation”>II
寻址模式字段X
偏移量字段D
给出寻址方式
有效地址E算法
说明
http://www.w3.org/1998/Math/MathML">E=D” role=”presentation”>E=DE=D
http://www.w3.org/1998/Math/MathML">E=(PC+D)” role=”presentation”>E=(PC+D)E=(PC+D)
PC为程序计数器
http://www.w3.org/1998/Math/MathML">E=(R2)+D” role=”presentation”>E=(R2)+DE=(R2)+D
http://www.w3.org/1998/Math/MathML">R2” role=”presentation”>R2R2 为变址寄存器
http://www.w3.org/1998/Math/MathML">E=(R2)” role=”presentation”>E=(R2)E=(R2)
http://www.w3.org/1998/Math/MathML">E=(D)” role=”presentation”>E=(D)E=(D)
http://www.w3.org/1998/Math/MathML">E=(R1)+D” role=”presentation”>E=(R1)+DE=(R1)+D
http://www.w3.org/1998/Math/MathML">R1” role=”presentation”>R1R1 为基址寄存器
写出6种寻址方式的名称。(简单呐!)