三、指令系统
(一)指令和指令系统
指令主要由两个部分组成:
操作码———用来指出计算机应执行何种操作的一个二进制代码。例如:加法、减法、乘法、除法、取数、存数等各种基本操作,它们均有各自相应的操作码。
操作数地址———指出该指令所操作(处理)的对象(称为操作数)所在的存储单元的地址。计算机中操作数可以相当灵活地指定,它可以直接包含在指令中,可以在CPU的某个寄存器中,一般情况是在存储器的某个(些)存储单元中。指定操作数所在位置的方法称为寻址方式。不同的计算机具有各自不同的指令,对某种特定的计算机而言,其所有指令的集合,称为该计算机的指令系统。
(二)指令的特征和功能
一般而言,指令系统应该具备下述特性:
(1)指令的完备性。是指一个指令系统应满足给定的算法,可编出程序并实现之。
(2)指令的有效性。指令系统中所包含的指令必须是有效的,从而可用相当少的指令编出实现某种算法的程序。
(3)指令的简明性。它指一个指令系统能简化指令处理机的操作,又能简化编程。
(4)指令的效率。它指系统中指令的执行时间。
另外,尚要求指令系统应便于记忆和理解,占用内存少,尽量缩短逻辑延迟等。
(三)寻址方式
1.立即寻址
立即寻址又称立即数寻址。操作数紧跟在操作码之后,直接放在指令中,这种操作数称为立即数。立即数规定只能为整数。立即数可以是8位或16位,要求低字节数放在低位地址中,高字节数放在高位地址中。
2.寄存器寻址
操作数在CPU的内部寄存器中,寄存器名由指令指出,这种寻址方式称之为寄存器寻址方式。对8位操作数,寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH中的任意一个,对16位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP或BP之一。
3.直接寻址
直接寻址方式的操作数地址的16位偏移量(又称有效地址EA)直接包含在指令中,它紧跟在操作码之后,存放在代码段区域。如果指令前面无前缀指明在哪一段,则默认操作数存放在数据段寄存器DS中。它的地址为数据段寄存器DS加上这16位地址偏移量。
4.寄存器间接寻址
寄存器间接寻址方式的操作数在存储器中,操作数地址的16位偏移量包含在寄存器BX、BP、SI和DI之一中。如果指令中未具体用前缀指明是哪个段寄存器,则寻址时,对BX、SI、DI寄存器,默认操作数在数据段寄存器DS中,即数据段寄存器DS加上SI、DI、BX中的偏移量为操作数的地址。
5.寄存器相对寻址(或称变址寻址)
采用寄存器间接寻址时,允许在指令中指定一个8位或16位的偏移量,这样,有效地址由一个基址或变址寄存器的内容加上一个偏移量来得到。即
[BX]
[BP]
有效地址EA=[SI] +(8位偏移量或16位偏移量)
[DI]
6.基址加变址寻址
将一个基址寄存器的内容加上一个变址寄存器的内容形成操作数的有效地址,这种寻址称为基址加变址寻址方式。这种寻址方式中,基址寄存器名和变址寄存器名均由指令指出。如无段跨越前缀,对BX寄存器默认的段寄存器为DS。只要用上寄存器BP,则默认的段寄存器为SS。
7.相对的基址加变址寻址
与寄存器相对寻址类拟,基址加变址寻址也允许带一个8位或16位的位移量。因此,操作数的有效地址是一个基础寄存器的内容加上一个变域寄存器的内容,再加一个8位或16位的偏移量。
8.比例变址寻址
比例变址寻址只能在80386到Pentium微处理器中使用。比例变址是指一对寄存器中的第二个用比例因子2、4或8来乘,产生操作数的内存地址。
(四)指令格式1.8086指令格式
8086/8088指令长度是比较灵活的,可在1~6个字节之间变化,组成如下表所示。
8086CPU指令形式
操作码 MOD字节
偏移量
操作码 MOD字节 DATA/DISP
操作码 MOD字节 DATA/DISPL DATA/DISPH
操作码 MOD字节 DATA/DISPL DATA/DISPH
DATA
操作码 MOD字节 DATA/DISPL DATA/DISPH DATAL DATAH
2.Pentium指令的一般格式
Pentium微处理器指令的一般格式如下图所示。从图中可看到,一条指令是由可任选的指令前缀(可以以任何的次序)、一个或两个源操作码字节、有可能要用的地址说明符(由ModR/M字节和按比例变址基址SIB字节构成)、一个位移量(根据需要)和一个立即操作数数据字段(如果需要的话)等元素组成的。
指令前缀 地址大小 前缀操作数 大小前缀 段超前前缀
0或1 0或1 0或1 0或1
………………………………………………………………
字节数
操作码 Mod R/m SIB 位移量 立即数
1或2 0或1 0或1 0或10,1,2或4
………………………………………………………………
字节数
Pentium指令的一般格式
(五)指令周期
微处理器的工作过程,不外乎取出指令、执行指令,再取出指令、执行指令……这样一个循环过程。一条指令的取出和执行所必需的时间,称为指令周期。指令周期依取出指令的时间不同而不同。
(六)指令的流水线和并行控制
为了提高计算机访问存储器和执行指令的处理速度,可以让一些需要计算机处理的多项操作在时间上重叠进行,甚至设计出多个功能相同或相近的部件同时对其进行处理,这种技术就是流水线与并行执行技术。
【编辑推荐】