1、淮海工学院计算机科学系,第五章指令系统,5.1 指令系统的发展 5.2 指令格式 5.3 数据表示 5.4 寻址方式 5.5 指令类型 5.6指令系统的兼容性 5.7 精简指令系统和复杂指令系统 5.8 指令系统举例 思考题,淮海工学院计算机科学系,5.1 指令系统的发展计算机系统主要由硬件(hardware)和软件(software)两部分组成。硬件就是由中央处理机(CPU)、存储器以及外部设备等组成的实际装置。软件则是为便于用户使用计算机而编写的各种程序, 最终转换成一系列机器指令后在计算机上执行。计算机的性能与它所设置的指令系统有很大的关系,而指令系统的设置又与机器的硬件结构密切相关。通
2、常性能较好的计算机都设置有功能齐全、通用性强、指令丰富的指令系统,但这需要复杂的硬件结构来支持。,淮海工学院计算机科学系,5.2 指令格式 一、指令格式计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:(1) 操作码:具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同操作。(2) 操作数的地址:CPU通过该地址就可以取得所需的操作数。(3) 操作结果的存储地址:把对操作数的处理所产生的结果保存在该地址中,以便再次使用。(4) 下一条指令的地址:一般来说,
3、当程序顺序执行时,下条指令的地址由程序计数器(PC)指出,仅当改变程序的运行顺序(如转移、调用子程序)时,下条指令的地址才由指令给出。,淮海工学院计算机科学系,指令的格式(1)操作码:指示计算机所要执行的操作。如:MOV , ADD. (2)操作数的地址码:指令操作的对象,可以是参与操作的操作数的本身,也可以是操作数的地址。(操作数的个数可以是0个,1个,2个或多个。 1、零地址指令格式: OPCODEOPCODE操作码指令中只有操作码,而没有操作数或没有操作数地址。这种指令有两种可能:(1) 无需任何操作数。如空操作指令,停机指令等。(2) 所需的操作数是默认的。,淮海工学院计算机科学系,2
4、、一地址指令格式: OPCODE AOPCODE操作码A操作数的存储器地址或寄存器名指令中只给出一个地址,该地址既是操作数的地址,又是操作结果的存储地址。 3、二地址指令格式: OPCODE A1 A2OPCODE操作码A1第一个源操作数的存储器地址或寄存器地址。A2第二个源操作数和存放操作结果的存储器地址或寄存器地址。这是最常见的指令格式,两个地址指出两个源操作数地址,其中一个还是存放结果的目的地址。对两个源操作数进行操作码所规定的操作后,将结果存入目的地址 。,淮海工学院计算机科学系,4、三地址指令:格式: OPCODE A1 A2 A3OPCODE操作码A1第一个源操作数的存储器地址或寄
5、存器地址A2第二个源操作数的存储器地址或寄存器地址A3操作结果的存储器地址或寄存器地址其操作是对A1,A2指出的两个源操作数进行操作码(OPCODE)所指定的操作,结果存入A3中。 5、多地址指令在某些性能较好的大、中型机甚至高档小型机中,往往设置一些功能很强的,用于处理成批数据的指令,如字符串处理指令,向量、矩阵运算指令等。为了描述一批数据,指令中需要多个地址来指出数据存放的首地址、长度和下标等信息。以上所述的几种指令格式只是一般情况,并非所有的计算机都具有。,淮海工学院计算机科学系,二、指令操作码的扩展技术指令操作码的长度决定了指令系统中完成不同操作的指令条数。若某机器的操作码长度为K位,
6、则它最多只能有2k条不同指令。指令操作码通常有两种编码格式:(1)固定格式:即操作码的长度固定,且集中放在指令字的一个字段中。这种格式对于简化硬件设计,减少指令译码时间非常有利,在字长较长的大、中型机和超级小型机以及RISC上广泛采用。(2)可变格式:即操作码的长度可变,且分散地放在指令字的不同字段中。这种格式能够有效地压缩程序中操作码的平均长度,在字长较短的微型机上广泛采用。,淮海工学院计算机科学系,扩展的方法: 例如:设某机器的指令长度为16位,包括4位基本操作码字段和三个4位地址字段,其格式如图5.1所示。一种可供扩展的方法和步骤如下: (1) 15条三地址指令的操作码由4位基本操作码从
7、00001110给出,剩下一个码点1111用于把操作码扩展到A1,即4位扩展到8位;(2) 15条二地址指令的操作码由8位操作码从1111000011111110给出,剩下一个码点11111111用于把操作码扩展到A2,即从8位扩展到12位;(3) 15条一地址指令的操作码由12位操作码从111111110000111111111110给出,剩下一个码点111111111111用于把操作码扩展到A3,即从12位扩展到16位;(4) 16条零地址指令的操作码由16位操作码从11111111111100001111111111111111给出。,淮海工学院计算机科学系,三 指令长度与字长的关系 1
8、、字长:是指计算机能直接处理的二进制数据的位数,它与计算机的功能和用途有很大的关系,是计算机的一个重要技术指标。首先,字长决定了计算机的运算精度,字长越长,计算机的运算精度越高,因此,高性能的计算机字长较长,而性能较差的计算机字长相对要短一些。其次,地址码长度决定了指令直接寻址能力,若为n位,则给出的n位直接地址寻址2n字节。扩大寻址能力的方法,一是通过增加机器字长来增加地址码的长度;二是采用地址扩展技术,把存储空间分成若干个段,用基地址加位移量的方法来增加地址码的长度。 2、指令:长度主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。各指令的长度不是固定的,但也不是任意的。为了充分
9、地利用存储空间,指令的长度通常为字节的整数倍。,淮海工学院计算机科学系,5.4 寻址方法寻址方式是指寻找指令地址或操作数有效地址的方法。在程序执行过程中,操作数可能在运算部件的某个寄存器(寄存器寻址)中或存储器(存储器寻址)中,也可能就在指令(立即数)中。 一、寄存器寻址是指操作数地址码放在寄存器中的寻址方式。 二、存储器寻址方式是指从存储器中获得参与操作的操作数的过程。 1、直接寻址:指令的地址码部分直接给出操作数所在的存储器的地址码。,淮海工学院计算机科学系,2、基址寻址:是指操作数的地址由基址寄存器的内容和指令的地址码A相加得到,主要用于为程序或数据分配存储区3、变址寻址:指令地址码部分
10、给出的地址A和指定的变址寄存器X的内容通过加法器相加,所得的和作为地址。,淮海工学院计算机科学系,4、间接寻址:将存储器的地址码放在寄存器中或存储器的寻址方式。5、相对寻址:把程序计数器PC的内容(即当前执行指令的地址)与指令的地址码部分给出的位移量(disp)之和作为操作数的地址或转移地址,称为相对寻址。,淮海工学院计算机科学系,三、立即数寻址:所需的操作数由指令的地址码部分直接给出,就称为立即数(或直接数)寻址方式。 四、堆栈操作:,淮海工学院计算机科学系,5.5 指令类型 一、指令的分类及功能 1、算术逻辑运算指令 2、移位操作指令,移位操作指令分为算术移位、逻辑移位和循环移位三种,可以
11、将操作数左移或右移若干位; 都影响仅为标志,淮海工学院计算机科学系,3、浮点运算指令:单精度(32位)、双精度(64位)数据进行处理 4、十进制运算指令: 5、字符串处理指令:一般包括字符串传送、字符串比较、字符串查询、字符串转换等指令。 6、数据传送指令:这类指令用以实现寄存器与寄存器,寄存器与存储器单元,存储器单元与存储器单元之间的数据传送。 7、转移类指令:按转移的性质,转移指令分为无条件转移、条件转移、过程调用与返回、陷阱(trap)等几种。 无条件转移与条件转移调用指令与返回指令陷阱(trap)与陷阱指令 8、堆栈与堆栈操作指令 9、输入输出指令 10、特权指令 11、其他指令,淮海
12、工学院计算机科学系,二、子程序举例 1、双字长加法指令假设在寄存器R1,R2和R3,R4分别存放两个双字长操作数,其中R1,R3为高位。加法运算可分为两种情况讨论: 假设机器设置有ADD(加法指令)和ADC(加进位的加法指令),则执行下列两条指令后在R3、R4中得到运算结果。 指令 操作说明xK: ADD R2,R4 ;低位相加,R4(R2)+(R4),并根据运算结果置进位位C。K+1:ADC R1,R3 ;高位相加,并加进位位C,R3(R1)+(R3)+C (2) 假设机器仅设置ADD指令,而没有ADC指令,则应执行下列程序:指令 操作说明K: ADD R2,R4 ; 低位相加,R4(R2)
13、+(R4),并根据运算结果置进位位CK+1: BCC K+3 ;如C=0,程序转移到K+3;如C=1,顺执行下一条指令K+2: ADD #1,R1 ; R1(R1)+1K+3: ADD R1,R3 ; 高位相加,R3(R1)+(R3),淮海工学院计算机科学系,5.6 指令系统的兼容性 5.7 精简指令系统计算机(RISC)和复杂指令系统计算机(CISC)RISC是在继承CISC的成功技术并克服CISC的缺点的基础上产生并发展起来的,大部分RISC具有下述一些特点: 优先选取使用频率最高的一些简单指令,以及一些很有用但不复杂的指令。避免复杂指令。 指令长度固定,指令格式种类少,寻址方式种类少。指
14、令之间各字段的划分比较一致,各字段的功能也比较规整。 只有取数/存数指令(load/store)访问存储器,其余指令的操作都在寄存器之间进行。 CPU中通用寄存器数量相当多。算术逻辑运算指令的操作数都在通用寄存器中存取。,淮海工学院计算机科学系,CISC是复杂指令系统计算机的英文缩写,其特点是: 指令系统庞大,指令数目一般多达200-300条 寻址方式多 指令格式多 指令字长不固定 可访存指令不受限制 各种指令使用频率相差很大 各种指令执行时间相差很大 大多数采用微程序控制器,淮海工学院计算机科学系,1、 某指令系统指令长16位,每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三
15、类。若双操作数指令有K条,无操作数指令有L条,问单操作数指令最多可能有多少条? 2、基址寄存器的内容为2000H(H表示十六进制),变址寄存器内容为03A0H,指令的地址码部分是3FH,当前正在执行的指令所在地址为2B00H,请求出变址编址(考虑基址)和相对编址两种情况的访存有效地址(即实际地址)。 3、接上题 设变址编址用于取数指令,相对编址用于转移指令,存储器内存放的内 容如下:(1) 请写出从存储器中所取的数据以及转移地址。(2) 若采取直接编址,请写出从存储器取出的数据。,思考题,淮海工学院计算机科学系,地址 内容 003FH 2300H 2000H 2400H 203FH 2500H
16、 233FH 2600H 23A0H 2700H 23DFH 2800H 2B00H 063FH 4、已知Pentium微处理器各段寄存器的内容如下:DS=0800H,CS=1800H,SS=4000H,ES=3000H。又disp字段的内容为2000H。请计算: (1) 执行MOV指令,且已知为直接寻址,请计算有效地址。 (2) IP(指令指针)的内容为1440,请计算出下一条指令的地址(假设顺序执行)。 (3) 今将某寄存器内容直接送入堆栈,请计算出接收数据的存储器地址。 5、讨论RISC和CISC在指令系统方面的主要区别。,淮海工学院计算机科学系,6、在下面有关寻址方式的叙述中,选择正确答案填入( )内。根据操作数所在位置,指出其寻址方式:操作数在寄存器中,为(A)寻址方式;操作数地址在寄存器中称为(B)寻址方式;操作数在指令中,称为(C)寻址方式;操作数地址(主存)在指令中,为(D)寻址方式。操作数的地址,为某一寄存器中的内容与位移量之和则可以是(E)、(F)、(G)寻址方式。供选择的答案:A、B、C、D、E、F、G: 直接 寄存器 寄存器间接 基址 变址 相对 堆栈 立即数,