1、2019年7月29日星期一,南理工紫金学院 郑磊,1,第4章 指令系统,本章学习内容 指令格式 寻址方式 RISC技术 指令系统设计举例,2019年7月29日星期一,南理工紫金学院 郑磊,2,4.1 指令系统的基本概念,4.1.1、指令与指令系统 指令(机器指令):控制计算机执行某种操作的命令。 指令字(指令码):表示一条指令的一串二进制代码。 机器语言:用机器指令设计的编程语言,是计算机硬件实体直接表示控制信息的语言。 机器语言程序:用机器语言编制的程序。任何用其它语言编制的程序,都必须经过 “翻译”,翻译为机器语言程序,才能在机器中正确的运行。 指令系统(指令集):一台计算机所能执行的全部
2、指令的集合。,2019年7月29日星期一,南理工紫金学院 郑磊,3,完善的指令系统应具备的特征,完备性 高效性 规整性 兼容性,2019年7月29日星期一,南理工紫金学院 郑磊,4,操作码:指定指令所要完成的操作; 操作数的来源; 结果去向; 下一条指令的地址。 因此,一条指令的基本格式为:操作码 地址码,4.1.2 指令的格式,2019年7月29日星期一,南理工紫金学院 郑磊,5,1四地址指令 四地址指令格式:OP A1 A2 A3 A4 A1:第一源操作数的地址; A2:第二源操作数的地址; A3:存放操作结果的地址; A4:指示下一条要执行指令的地址。 指令功能:(A1)OP(A2)A3
3、;A4指示下条指令地址。,一、指令中地址码格式,主存地址、 寄存器地址、I/O端口地址,2019年7月29日星期一,南理工紫金学院 郑磊,6,2三地址指令 格式: OP A1 A2 A3 A1:第一源操作数的地址; A2:第二源操作数的地址; A3:存放操作结果的地址; 指令功能: (A1)OP(A2)A3;程序计数器PC指示下条指令地址。,2019年7月29日星期一,南理工紫金学院 郑磊,7,格式为: OP A1 A2 A1、A2:是操作数所在的地址。 指令功能:(A1)OP(A2)A1 或 (A1)OP(A2)A2 源地址:仅提供操作数的地址 目的地址:既提供一个操作数,又是存放结果的地址
4、。 二地址指令的几种形式 存储器存储器型(SS型)指令 寄存器寄存器型(RR型)指令 寄存器存储器型(RS型)指令,3二地址指令,2019年7月29日星期一,南理工紫金学院 郑磊,8,4一地址指令(单地址指令) 格式: OP A A提供操作数的地址。 一地址指令有两种情况: 只需一个操作数,其功能为:OP(A)A ,如INC、DEC、NEG等。 涉及双操作数:另一个操作数通常采用隐含寻址的方法,将操作数隐含在约定的累加器AC中,其指令功能为:(AC)OP(A)AC。,2019年7月29日星期一,南理工紫金学院 郑磊,9,5零地址指令 格式: OP 零地址指令有两种情况: 不需操作数的控制型指令
5、,如HLT、WAIT、NOP等。 堆栈支持的零地址指令:操作数隐含在堆栈中,其地址隐含在SP中。如RET(过程返回)、IRET(中断返回)。,2019年7月29日星期一,南理工紫金学院 郑磊,10,1. 定长编码:所有指令的操作码长度相同。指令译码简单,易于硬件设计。 2. 可变长编码:不同指令的操作码长度可以不同,通常采用扩展操作码技术。 扩展操作码技术:当指令长度一定时,将操作数地址多的指令选择短的操作码,操作数地址少的指令选择较长操作码。从而在不增加指令长度的情况下扩展操作码长度,使其能表示更多的指令。,二、指令中操作码格式,2019年7月29日星期一,南理工紫金学院 郑磊,11,例:设
6、某机的指令长度为16位。操作码为4位,具有三个地址字段,每个地址字段长为4位。要求有15条三地址指令,15条二地址指令, 15条一地址指令和16条零地址指令。,0000 xxxx xxxx xxxx,1110 xxxx xxxx xxxx,1111 0000 xxxx xxxx,15条三地址指令,1111 1110 xxxx xxxx,1111 1111 0000 xxxx,15条二地址指令,1111 1111 1110 xxxx,15条一地址指令,1111 1111 1111 0000,1111 1111 1111 1111,16条零地址指令,2019年7月29日星期一,南理工紫金学院 郑磊
7、,12,三、指令字长与机器字长,1. 定长指令字指令字长固定 结构简单、便于控制,不易扩展,平均指令长度长。 2. 变长指令字指令字长可变 指令长度为字节的整数倍,如单字长指令、双字长指令、半字长指令等。 平均指令长度短,易于扩展,但不同指令执行时间不一致,控制比较复杂。,2019年7月29日星期一,南理工紫金学院 郑磊,13,机器字长计算机能直接处理的二进制数据的位数计算机性能的一个重要的指标 指令字长一条指令中包含二进制代码的位数取决于操作码的长度、操作数的地址的长度和操作数地址的个数指令的长度有固定的,也有不固定的。为了充分利用存储空间,指令的长度通常为字节的整数倍。两者之间没有固定的关
8、系 单字长指令 半字长指令 双字长指令,2019年7月29日星期一,南理工紫金学院 郑磊,14,4.1.3 指令的类型,数据传送类指令用于实现通用寄存器之间、通用寄存器与存储单元之间、存储器不同单元之间的数据传送 运算类指令 算术运算 逻辑运算,2019年7月29日星期一,南理工紫金学院 郑磊,15,移位类指令,2019年7月29日星期一,南理工紫金学院 郑磊,16,程序控制类指令 转移类指令 子程序调用与返回指令 输入输出(I/O)类指令输入输出(I/O)类指令完成主机与外围设备间的数据传送 其他指令,2019年7月29日星期一,南理工紫金学院 郑磊,17,4.2 寻址方式,寻址的基本概念
9、寻址方式 操作数的寻址方式: 指令的寻址方式: 有效地址EA: 形式地址: 操作数寻址就是按一定的寻址方式由形式地址得到有效地址。,形成本条指令的操作数地址的方法,形成下一条要执行指令的地址的方法,操作数的实际地址。,指令字中给定的地址。,2019年7月29日星期一,南理工紫金学院 郑磊,18,1、立即寻址 指令字中的地址码部分直接给出操作数。DATA = A 例如:MOV #1000H,Rn 操作数在指令字中,取指令时即取出操作数,不必访存取操作数,4.2.1、 数据寻址,2019年7月29日星期一,南理工紫金学院 郑磊,19,2、直接寻址 地址码部分直接给出操作数在内存中的有效地址EA。E
10、A = A DATA = (EA) = (A) 例如:MOV 1000H , Rn 无需计算EA,执行指令时,需一次访存取操作数,DATA,2019年7月29日星期一,南理工紫金学院 郑磊,20,指令字中的地址码部分给出的是操作数地址的地址或是指示操作数地址的地址指示字。EA = (A) DATA = (EA)=( (A) ) 例如:MOV (1000H) , Rn 一级间址方式需两次访存才能取得操作数,EA,DATA,一级间址,3、间接寻址,2019年7月29日星期一,南理工紫金学院 郑磊,21,指令字中的地址码部分给出某一通用寄存器号,该寄存器的内容即为指令所需的操作数。EA = Ri D
11、ATA = ( Ri ) 例如:MOV R1 , R2 操作数在寄存器中,无需访存取操作数,速度快,4、寄存器直接寻址(寄存器寻址),DATA,2019年7月29日星期一,南理工紫金学院 郑磊,22,指令字中的地址码部分所指定的寄存器中内容是操作数在内存中的有效地址。EA = ( Ri ) DATA = ( Ri ) 例如:MOV ( R1 ) , R2 取操作数时需要一次访存,EA,DATA,5、寄存器间接寻址,2019年7月29日星期一,南理工紫金学院 郑磊,23,将程序计数器 PC 的当前内容与指令中给出的形式地址A相加形成操作数在内存中的有效地址。EA = ( PC ) + A DAT
12、A = ( ( PC ) + A ) 除了用于访问操作数外,常被用于转移类指令。,EA,DATA,X,PC,6、相对寻址,2019年7月29日星期一,南理工紫金学院 郑磊,24,地址码部分所指定的变址寄存器的内容与指令字中的形式地址A相加形成操作数在内存中的有效地址。EA = ( Ri ) + A DATA = ( ( Ri ) + A ) 例如:MOV addr( Ri ) , R2 需计算EA,取操作数需访存一次,主要用于处理数组,EA,DATA,X,7、变址寻址,2019年7月29日星期一,南理工紫金学院 郑磊,25,地址码部分所指定的基址寄存器的内容与指令字中的形式地址A相加形成操作数
13、的有效地址。EA = ( Rb ) + A DATA = ( ( Rb ) + A ) 例如:MOV addr( Rb ) , R2 主要用于为程序或数据分配存储空间,EA,DATA,X,8、基址寻址,2019年7月29日星期一,南理工紫金学院 郑磊,26,地址码部分所指定的基址寄存器的内容、变址寄存器的内容及指令字中的形式地址A相加形成操作数的有效地址。 10、其他寻址方式 扩展寻址、页面寻址、堆栈寻址、相联寻址等。,9、基址加变址寻址,2019年7月29日星期一,南理工紫金学院 郑磊,27,指令字中,无,内存中,EA=形式地址A,内存中,EA=( A ),寄存器中,EA= Ri,内存中,E
14、A=( Ri ),内存中,EA=(PC) +A,内存中,EA=( Rb ) +A,内存中,EA=( Ri ) +A,内存中,EA= ( Rb ) +( Ri ) +A,2019年7月29日星期一,南理工紫金学院 郑磊,28,4.2.2、指令寻址,顺序寻址: 跳越寻址:,PC增量PC,通过修改PC的内容实现转移。,顺序寻址,顺序寻址,顺序寻址,跳越寻址,顺序寻址,2019年7月29日星期一,南理工紫金学院 郑磊,29,4.3 RISC技术,1. 复杂指令系统计算机 CISC(Complex Instruction Set Computer) 靠增强指令的功能,增加指令系统的复杂程度来提高计算机系
15、统的性能。 2. 精简指令系统计算机RISC(Reduced Instruction Set Computer) 靠精简指令系统,简化指令功能及优化的编译程序来提高计算机系统的性能。,2019年7月29日星期一,南理工紫金学院 郑磊,30,RISC 的主要特征 选用使用频度较高的一些 简单指令,复杂指令的功能由简单指令来组合 指令长度固定、指令格式种类少、寻址方式少 只有LOAD / STORE 指令访存 CPU中有多个 通用寄存器 采用流水技术,一个时钟周期内完成一条指令 采用组合逻辑控制器 采用优化的编译程序,CISC 的主要特征 系统指令复杂庞大,各种指令使用频度相差大 指令长度不固定、
16、指令格式种类多、寻址方式多 访存指令不受限制 CPU 中设有专用寄存器 大多数指令需要多个时钟周期执行完毕 采用微程序控制器 难以用优化编译 生成高效的目的代码,2019年7月29日星期一,南理工紫金学院 郑磊,31,4.4 指令系统设计举例,JU-C1模型机指令系统 JU-C1模型机汇编程序设计举例,2019年7月29日星期一,南理工紫金学院 郑磊,32,4.4.1 JU-C1模型机指令系统,1、 JU-C1模型机的寄存器 模型机CPU字长16位,内部总线采用单总线结构。CPU外部的系统总线也是16位,分为地址总线AB、数据总线DB和控制总线CB。 模型机设置有一个通用寄存器组(Genena
17、l Register Set,GRS)包含8个16位的通用寄存器R0R7,用于存放参加运算的操作数和操作结果。,2019年7月29日星期一,南理工紫金学院 郑磊,33,2019年7月29日星期一,南理工紫金学院 郑磊,34,3个16位的专用寄存器:PC,存放下一条将要执行的指令的地址;PSW,存放当前指令执行后机器的状态标志信息,其中标志位包括借/进位标志CF,溢出标志OF,符号标志SF和零标志ZF;SP,存放堆栈栈顶的地址;,2019年7月29日星期一,南理工紫金学院 郑磊,35,2、JU-C1模型机的指令类型,JU-C1模型机的指令系统设计有35条指令,分为5类 数据传送类指令,共3条,2
18、019年7月29日星期一,南理工紫金学院 郑磊,36,算术、逻辑运算指令,共12条,2019年7月29日星期一,南理工紫金学院 郑磊,37,移位类指令,共7条,2019年7月29日星期一,南理工紫金学院 郑磊,38,程序控制类指令,共11条,其他指令,共2条,2019年7月29日星期一,南理工紫金学院 郑磊,39,3、JU-C1模型机指令格式,指令格式与指令类型(定长指令字,定长操作码) 单字指令其中 MOV为传送指令, OP为000001; (ES) ED ADD为加法指令,OP为000010; (ES) + (ED) ED例 :MOV R0, (R2),000001,00,000,01,0
19、10,040AH,Ms,Rs,Md,Rd,2019年7月29日星期一,南理工紫金学院 郑磊,40,双字指令,MOV #10,R0 JZ 0001H JZ只有目的地址,OP为00000001100,0760 0010,2019年7月29日星期一,南理工紫金学院 郑磊,41,三字指令,OR #F000H,2(R0),001000,011,000,10,11,F000H,0002H,2370 F000 0002,2019年7月29日星期一,南理工紫金学院 郑磊,42,4、模型机的寻址方式,2019年7月29日星期一,南理工紫金学院 郑磊,43,4.4.2 JU-C1模型机汇编程序设计举例,例4.1
20、有一数组A,起始地址为100H,包含三个元素。要求用JU-C1模型机的指令系统设计一程序实现下图的流程图所规定的功能 :,2019年7月29日星期一,南理工紫金学院 郑磊,44,0000H:,0002H:,0004H:,0006H:,0009H:,000BH:,000CH:,0760 0100,2B68 0001,019A 000B,2370 F000 0002,021A 000C,1F70 FFF0 0001,MOV #100H, R0,TEST #1, (R0),JZ 000BH,OR #F000H,2(R0),JMP 000CH,AND #FFF0H,1(R0),000001,11 011,00 000,000001 11011 00000,