1 / 70

第三章 指令系统

第三章 指令系统. 指令系统概述 寻址方式 典型指令、指令系统举例. 3.1 指令系统概述. 指令系统的发展 指令的格式 指令操作码的扩展技术 指令长度与字长的关系 指令的分类. 1. 指令系统的发展. 早期硬件结构较简单——指令系统都比较简单,条数少、运算功能弱。 60 年代 , 为了实现软件的兼容 , 出现了基本指令系统相同、基本体系结构相同的系列 (series) 计算机。

stacy
Download Presentation

第三章 指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 指令系统 • 指令系统概述 • 寻址方式 • 典型指令、指令系统举例

  2. 3.1 指令系统概述 • 指令系统的发展 • 指令的格式 • 指令操作码的扩展技术 • 指令长度与字长的关系 • 指令的分类

  3. 1.指令系统的发展 • 早期硬件结构较简单——指令系统都比较简单,条数少、运算功能弱。 • 60年代,为了实现软件的兼容,出现了基本指令系统相同、基本体系结构相同的系列(series)计算机。 • 20世纪70~80年代,集成电路和超大规模集成电路的发展,指令系统日渐复杂和完备,指令条数多达几百条,构成了CISC(Complex Instruction SetComputer)。 • 80年代初,指令系统的复杂和完备程度并不是提高计算机性能的唯一途径,提出了RISC(Reduced Instruction Set Computer)

  4. 1.指令系统的发展 • 从计算机组成的层次结构来说,指令有微指令、机器指令和宏指令。 • 微指令:是微程序设计级的命令,属于硬件。 • 宏指令:是由若干条机器指令组成的软件指令,属于软件。 • 机器指令:介于微指令和宏指令之间,通常简称指令,就是让计算机完成某种操作的命令;每一条指令可完成一个独立的算术运算或逻辑运算操作。 • 指令系统:一台计算机中所有指令的集合,称为这台计算机的指令系统。

  5. 操作码字段 地址码字段 2.指令的格式 • 指令格式:指令用二进制代码表示的结构形式。 • 操作码:表示该条指令的所要完成的操作性质和 功能。 • 地址码:用于给出被操作的信息(指令或数据) 所在的地址。

  6. 3.操作码的组织与编码 • 定长操作码:所有指令的操作码长度固定不变,一般都在指令字的最高位。 n位操作码可以表示2n条不同指令 特点:简化硬件结构,便于译码和识别 例如:VAX-11、IBM360 机,16位TEC-2教学机 • 变长操作码:操作码长度随指令的不同可以变化,一般操作码位于指令字的高位。 特点:一般指令字长度固定、且较短,可以用较短的指令字表示较多的指令条数。 例如:PDP-11机、8位教学机 • 操作码字段与地址字段有所交叉:主操作码、辅助操作码。

  7. 三地址指令 操作码 A1 A2 A3 二地址指令 操作码 A1 A2 一地址指令 操作码 A 操作码 零地址指令 4.地址码的设计 一般的操作数有:被操作数、操作数、操作结果,根据指令中所包含的操作数的不同,有如下几种指令格式: 多地址指令

  8. 5. 指令操作码的扩展技术 • 通常操作码的编码可采用组织形式:即定长操作码 (指令长度可变)、变长操作码(指令长度固定)。 • 扩展操作码:在指令字中用一个固定字段表示基本操作码、对于一部分不需要某个地址码的指令,可将操作码扩展到该地址字段。 • 扩展原则:首先对指令按使用频度的大小进行分“群”;将“高频”的指令分在同一群中,对其用短的操作码编码,而将“低频”的指令分在另一群中,使用长操作码编码。每一群都各自用等长操作码编码。

  9. 扩展标志码 • 为了能唯一解码和快速解码,在短操作码中还要使用某些码来作为扩展成长操作码的扩展标志码。 • 扩展方法:每次保留一个码点标志 每次保留一个标志位 • 常用操作码长度分配:3-6-9,4-8-12

  10. 方法1-保留一个码点 I1 0.40 000 00 I2 0.30 001 01 I3 0.15 010 10 I4 0.05 011 1100 I5 0.04 100 1101 I6 0.03 101 1110 I7 0.03 110 1111 指令 频度 定长 扩展

  11. 方法2-保留一个标志位 I1 0.40 000 00 I2 0.30 001 01 I3 0.15 010 1000 I4 0.05 011 1001 I5 0.04 100 1010 I6 0.03 101 1011 I7 0.03 110 1100 指令 频度 定长 扩展

  12. 8 6 5 3 2 0 操作码 A1 A2 8 3 2 0 操作码 A1 8 0 操作码 3-6-9 扩展

  13. 常用操作码扩展方法举例

  14. 15 12 11 8 7 4 3 0 操作码 A1 A2 A3 15 8 7 4 3 0 操作码 A1 A2 15 4 3 0 操作码 A1 15 0 操作码 4-8-12 扩展

  15. 常用操作码扩展方法举例

  16. 例 题 例1. 某台计算机的指令系统共有50条指令,试问: (1)若采用固定长度编码方式,其操作码的编码长度需要多少位? (2)该指令系统中有10条指令的使用概率为90%,其余为10%,若采用不等长编码方式,其操作码的平均长度为多少? (3)若原指令系统采用固定长度编码,后继产品中增加50条指令,试设计其指令操作码,并计算其平均长度。

  17. 解: (1)操作码长度固定时,编码长度需要6位,才可满足26>=50,一般取前50个编码值即可。 (2)操作码长度可变时,10条常用指令需4位编码, 取前10个编码值为:0000~1001,余下6个编码再需与x位编码组合应满足: 6×2x>=40,则x=3,即共需用4+3=7位编码可表示其余40条不常用指令,平均长度为: 4×90%+7×10%=4.3(位)。 (3)其中有26-50=14个冗余码,则再需与y位编码组合应满足14×2y>=50,则y=2,即共需用6+2=8位编码可表示后继增加的指令,操作码平均长度为: 6×50%+8×50%=7(位)

  18. 6.指令字的长度 • 指令字长度:一个指令字中包含的二进制代码的位数。 • 机器字长:计算机所能直接处理的二进制数据的位数,它决定了计算机的运算精度。 • 根据指令字长度与机器字长的关系,指令可分为: 半字长、单字长、双字长和多字长指令。 • 指令字结构: 等长指令字结构 变长指令字结构

  19. 7.指令的分类 指令按功能可分为: • 算术与逻辑运算指令 • 移位操作指令 • 数据传送指令 • 转移指令 • 子程序调用与返回指令 • 特权指令 • 其它指令:空操作指令、动态停机指令、堆栈操作指令、开中断、关中断等 。

  20. 3.2 寻址方式 基本概念: • 物理地址(有效地址):指令或数据在存储器中实际存放的单元地址。 • 寻址方式:寻找指令或操作数的有效地址的方法。 • 形式地址:指令中给出的操作数的地址。 • 指令的寻址方式:形成指令的有效地址的方法。 • 操作数的寻址方式:形成操作数的有效地址的方法。

  21. 3.2.1 指令的寻址方式 1.顺序寻址方式 指令在内存中按顺序存放,取指令时,指令的地址自动按某一增量修改。一般由程序计数器(又称指令指针寄存器)PC来给出下一条指令的地址。

  22. 2.跳跃寻址方式 下一条指令的地址不是由PC给出,而是由本条指令的地址码字段给出。 如条件转移或无条件转移指令

  23. 单字长 OP Ri D 操作数 双字长 OP Ri D 3.2.2 操作数寻址方式 • 1.立即寻址 • 指令的地址码字段给出的不是操作数的地址,而是操作数本身。 • 特点:执行速度快,取出指令的同时也取出了数据,但操作数固定不变。 • 例如:将一个数据传送到寄存器中,其格式如下: 例:MVRD R1, 20 ;将立即数20赋给寄存器R1 (教学机) MOV R1,#20H ; (51单片机) MOV R1,#0x20;(ARM机) MOV AX,1200H;(8086计算机)

  24. M • • • OP X1 D 操作数 S • • • 2.直接寻址 • 指令的地址码字段直接给出操作数所在存储单元的地址。 • 特点:操作数所在单元的地址包含在指令中,需再访问一次存储器才可取出数据。 EA = D S=(D) 例:MOV R1, 20H ;(51单片机) MOV AX,[1200H];(8086机)

  25. M • • • EA OP X2 D S • • • 3.间接寻址 • 指令的地址码字段给出不是操作数的地址,而是操作数地址的地址,即形式地址所在单元的内容才是操作数的有效地址。 • 特点:需两次访问存储器才可取出操作数,执行速度慢。 EA =(D) S = (EA)= ((D))

  26. OP X41 Ri Ri S 4(1).寄存器寻址 • 寄存器寻址:指令的地址码字段给出的是寄存器的编号,且寄存器中存放的即是参加运算的操作数。 • 特点:与直接寻址相比,执行速度较快, EA=Ri S =(Ri) 例: INC R1 ; R1=R1+1(教学机) ADD A,R1 ;A=R1+A(51单片机) ADD R1,R2,R3 ;R1=R2+R3 (ARM机) ADD AX,BX ;AX=AX+BX(8086计算机)

  27. M OP X42 Ri Ri • • • EA S • • • 4(2).寄存器间接寻址 • 寄存器间接寻址:寄存器中存放的是操作数的有效地址。 • 特点:执行速度较慢 EA=(Ri) S = (EA)=((Ri)) 例:LDRR R1,[R2] ;将以R2为地址的数取出(教学机) ADD A,@R1 ;(51单片机) LDR R1,[R0] ;将以R2为地址的数取出(ARM机) MOV AX,[BX ] ;(8086计算机)

  28. M OP X5 D • • • + PC A S • • • 5.相对寻址 • 操作数的有效地址 = 指令的形式地址与程序计数器的内容相加之和。 • 特点:偏移量用补码表示,可正可负,可用较短的地址码访问内存。 EA= (PC)+D=A+D S= (EA) = (A+D) 例:JRNC 2009 ;结果中无进位则转到2009 (教学机)

  29. M OP X6 D • • • + RX A S • • • 6. 变址寻址 • 操作数的有效地址 = 指令的形式地址与某一指定的变址寄存器内容相加之和。 • 特点:变址寄存器的内容可由用户设置,提供地址修改量,常用于数据块的访问。 EA= (RX)+D S= (EA) = (A+D) 例:MOV AX,1100[SI] ;(8086机)

  30. M OP X7 D • • • + BX A S • • • 7.基址寻址 • 操作数的有效地址 = 指令的形式地址与某一指定的基址寄存器内容相加之和。 • 特点:用于程序定位,扩大寻址空间,基地址寄存器中的值是由硬件或特权指令设定,用户不能修改。 EA= (BX)+D S= (EA) = (A+D) 例:MOV AX,[BX+10] ;(8086机) LDR R2,[R3,#0X0C] ;(ARM机)

  31. M 1. 存数 进栈: (SP)+1 SP • • • 2. (SP)-1 SP 1. 出栈: 2. 取数 • • • 8.堆栈寻址 堆栈:存储器中某一特定的存储区,按后进先出的原则存取数据。该存储区的地址由专门的寄存器——堆栈指针SP(Stack Point)给出。 堆栈的形成方式:串联堆栈(由寄存器堆构成,硬堆栈) 存储器堆栈(软堆栈) 堆栈的类型:满递减型、满递增型、空递减型、空递增型 空递减型堆栈操作: 栈顶 堆栈 操作 地址递减 栈底

  32. 15 - 12 11 - 9 8 - 6 5 - 3 2 - 0 操作码 寻址方式 寄存器号 寻址方式 寄存器号 15 - 6 5 - 3 2 - 0 源地址 目标地址 操 作 码 寻址方式 寄存器号 操作数地址 3.2.3 寻址方式举例 1.PDP-11机寻址方式 指令格式:定长指令,指令字长16位,操作码可随操作数个数的不同而变化,操作码部分可取4~16位。 寻址方式:直接、间接、程序计数器型

  33. 1 或2字节 0或1字节 0或1字节 0~4字节 0~4字节 OP MOD R/M SIB Displacement Immidiate Mod Reg/Opcode R/M SS Index Base 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 2.Pentium 的寻址方式 指令格式:变长指令(1~12字节)、操作码字段可变,操作码不仅包含指令功能、还包含寻址方式的信息,指令译码操作复杂,属CISC结构。 寻址方式:立即、寄存器、直接、间接、变址、基址、 相对、比例变址、复合寻址等9种寻址方式。 比例 变址 基址

  34. Pentium的寻址方式

  35. RR OP Ri Rj RS RX OP Ri Rj B D OP Ri X2 B D SI OP I B D SS OP L B1 D1 B2 D2 3. IBM 360机指令系统 参见P165-166 指令格式:变长指令(2~6字节),操作码字段固定为8位。 寻址方式:立即、变址、寄存器、间址、变址基址复合。 指令类型:RR型、RX型、RS型、SI型、SS型。 8 4 4 4 12 4 12

  36. 15 - 9 8 - 6 7 - 4 3 - 0 OP —— 源寄存器 目标寄存器 例 题 例2 指令格式如下所示,其中OP为操作码,试分析指令格式的特点。 解:(1)表示两地址指令,指令字长为16位; (2)操作码字段为7位,可以表示27= 128条不同的指令; (3)源操作数和结果均存放在寄存器中,可分别指定16个通用寄存器,所以是RR型指令; (4)这种指令结构常用于算术逻辑运算类指令。

  37. 6位 4位 1位 2位 16位 OP —— 通用寄存器 I X 偏移量D 寻址方式 I X 有效地址E 说 明 1 0 0 0 E = D 2 0 0 1 E=(PC)±D PC为程序计数器 3 0 1 0 E=(R2)±D R2为变址寄存器 4 1 1 1 E=(R3) 5 1 0 0 E=(D) 6 0 1 1 E=(R1) ±D R1为基址寄存器 例 题 例3 一种RS型指令的结构如下所示: 其中I为间址标志位,X为寻址模式,D为偏移量。通过I、X、D的组合,可构成下表所示的寻址方式,请写出6种寻址方式的名称。

  38. 例 题 例4 基址寄存器的内容为2000H,变址寄存器的内容为03A0H,指令的地址码部分是003FH,当前正在执行的指令所在的地址为2B00H。 (1)求基址变址寻址和相对寻址两种情况的访存有效地址; (2)设变址寻址用于取数指令,相对寻址用于转移指令,存储器存放的内容如下: 地址 内容 003FH 2300H 2000H 2400H 203FH 2500H 23A0H 2700H 23DFH 2800H 2B00H 063FH 请写出从存储器中所取的数据及转移地址。 (3)若采用直接寻址,请写出从存储器中取出的数据。

  39. 解: (1)基址变址: EA=基址+变址+偏移量 =2000H+03A0H+003FH=23DFH 相对寻址:EA=(PC)+偏移量 =2B00H+003FH=2B3FH (2)变址寻址时EA=23DF 因此从23DFH单元取出的数据为2800H; 相对寻址时转移地址=2B3FH (3)直接寻址时EA=003FH, S=(EA)=2300,因此取出的数据为2300H

  40. 15 - 10 9 - 8 7 - 0 OP X D 例 题 例5某机指令格式如下: 图中X为寻址特征位,且X=0时不变址;X=1时用变址寄存器X1进行变址;X=2时用变址寄存器X2进行变址;X=3时相对寻址。设(PC)=1234H,(X1)=0037H,(X2)=1122H,请确定下列指令的有效地址(均用16进制表示): 1)4422H 2)3248H 3)1322H 4)39A1H 5) 6738H

  41. 解: 将指令的编码4422H展开为2进制形式为: 0100010000100010 OP X D 对应X=0,为直接寻址 所以:EA=D=00100010B=0022H 同理将6738H展开为2进制形式为: 0110011100111000 OP X D 对应X=11,为相对寻址 所以:EA=(PC)+D=1234H+38H=126CH

  42. 15 - 10 9 - 6 7 - 4 3 - 0 OP —— 源寄存器 变址寄存器 位移量(16位) 作 业 1.指令格式如下所示,其中OP为操作码,试分析指令格式的特点。 2.若某计算机数据线、地址线均是8位,有一条相对寻址的无条件转移指令存于内存的20H单元中,指令给出的位移量D=00010101,试计算: (1)取该指令时PC的内容; (2)该指令执行结束时PC的内容。 3.自己分析例4中2)3248H 3)1322H 4)39A1H 指令对应的有效地址。

  43. 3.3 指令系统举例 3.3.1TEC-2000 16位教学计算机的指令系统 1.教学机的指令系统说明与指令分类 指令长度:单字长指令、双字长指令。允许定义三字长指令; 操作数个数:双操作数、单操作数、无操作数; 寻址方式:寄存器寻址(16个寄存器)、寄存器间接寻址、立即数寻址、直接寻址、变址寻址、相对寻址、堆栈寻址等; 指令功能类型:算术逻辑运算指令、读写内存指令、输入输出指令、转移指令、子程序调用和返回、数据传送、移位、置进位标志、清进位标志等指令。

  44. 2.指令的执行步骤: 按照执行步骤分类:A、B、C、D四组指令。参见“王诚”P145 A组指令:通用寄存器直接数据传送或运算,或其他特殊操作,在取出指令之后可1步完成。 B组指令:一次内存或I/O操作,在取出指令之后可2步完成。 C组指令:在取出指令之后可3步完成。 D组指令:在取出指令之后可4步完成。 TEC-2000 16位教学机系统的指令系统:包括29条基本指令、19条扩展指令(供教学试验时进行扩展)。参见“王诚”P145-147

  45. 操 作 码 IRH7 IRH6IRH5 IRH4 IRH3IRH2 IRH1 IRH0 0 表示 基本指令 1表示扩展指令 不同指令 0001表示A组 10表示B组 110表示 C 组 111表示 D 组 3.指令的格式 指令长度可变(1~2字节),操作码字段固定(8位),其中8位指令操作码记作IRH7~IRH0,含义如下:

  46. 汇编语句命名规则: R: 寄存器 D: 立即数 JR: 相对寻址 X: 变址寻址 A: 直接地址 例如,MVRR MVRD JR(JRC) STRR LDRX CALA JMPA CALR JMPR LDRA

  47. 操作码 0000 0000 DR 0000 操作码 0000 SR OFFSET I/O PORT 具体根据所需操作数不同可分为以下5种: (1)单字、无操作数指令: PSHF:10000100 00000000 RET: 10001111 00000000 POPF:10001100 00000000 CLC: 01101100 00000000 (2)单字、单操作数指令: DEC R1: 0000100000010000

  48. ADD DR,SR: DR+SR DR ADD R1,R2: 0000000000010010 操作码DR SR 操作码0000 0000 ADR (3)单字、双操作数指令: (4)双字、单操作数指令: JMPA ADR; JMPA 1000 : 1000000000000000 00010000 00000000

  49. 操作码DR 0000 0000 SR ADR MVRD DR,DATA: DATA DR MVRD R1, 40: 1000100000010000 00000000 01000000 LDRX DR ,OFFSET[SR]: [OFFSET+SR] DR LDRX R2,1000[R1] : 1110010100100001 00010000 00000000 (5)双字、双操作数指令:

  50. 5. 简单程序设计举例 例1:把字符‘P’~ ‘Z’ 写到内存的2050开始的连续单元中,然后读出并显示到屏幕上。 A 2000 2000: MVRD R3,0B ;给出写入字符个数 2002: MVRD R2,2050 ;写入的起始地址 2004: MVRD R1,50 ;字符‘P’的ASIIC码送入R1 2006: STRR [R2],R1 ;将R1中的数送入以R2中的内容 ;为地址的内存中 2007: LDRR R0,[R2] ;读出内存单元中数据到R0寄存器 2008: OUT 80 ;R0内容送到串口显示 2009: IN 81 ;读入串口状态字 200A: SHR R0 ;R0的内容右移一位 200B: JRNC 2009 ;检查传送完否 200C: INC R1 ;修改R1寄存器中内容(待显示字符) 200D: INC R2 ;修改R2中内容(内存地址) 200E: DEC R3 ;计数值减1 200F: JRNZ 2006 ;未写完继续 2010: RET;程序结束

More Related