slide1
Download
Skip this Video
Download Presentation
计算机组成原理

Loading in 2 Seconds...

play fullscreen
1 / 81

计算机组成原理 - PowerPoint PPT Presentation


  • 117 Views
  • Uploaded on

计算机组成原理. 第 4 章 指令系统. 第 4 章 存储系统. 学习内容: 第 1 节 指令格式和指令编码 第 2 节 操作数的存储及其寻址方式 第 3 节 指令系统 学习目标与要求: 理解指令中应包含的信息及其编码 掌握常用指令及指令格式 理解常用的寻址方法及其用途 了解常见指令的种类和功能. 4.1 指令格式和指令编码. 指令 :控制计算机执行某种操作的命令。 机器语言 :计算机硬件实体直接表示控制信息的语言。 机器语言程序 :用机器语言编制的程序。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '计算机组成原理' - dakota-lucas


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

计算机组成原理

第4章 指令系统

slide2
第4章 存储系统

学习内容:

  • 第1节 指令格式和指令编码
  • 第2节 操作数的存储及其寻址方式
  • 第3节 指令系统

学习目标与要求:

  • 理解指令中应包含的信息及其编码
  • 掌握常用指令及指令格式
  • 理解常用的寻址方法及其用途
  • 了解常见指令的种类和功能
slide3
4.1 指令格式和指令编码
  • 指令:控制计算机执行某种操作的命令。
  • 机器语言:计算机硬件实体直接表示控制信息的语言。
  • 机器语言程序:用机器语言编制的程序。
  • 机器语言是计算机硬件能直接理解并执行的语言,任何用其它语言编制的程序,都必须经过 “翻译”,翻译为机器语言程序,才能在机器中正确的运行。
  • 一条指令就是机器语言的一个语句,用来说明机器硬件应完成的操作。
  • 指令系统(指令集):一台计算机所能执行的全部指令的集合。
slide4
4.1 指令格式和指令编码
  • 机器语言是面向机器的:不同的计算机系统,具有不同的指令,每一计算机系统都具有自己的指令系统。
  • 指令系统必须是完备的:即任何运算都可以用指令系统中的指令编程实现。
  • 指令系统是计算机体系结构的核心;是计算机系统硬件、软件的主要界面。它既是计算机硬件设计的主要依据,又是计算机软件设计的基石。所以一台计算机指令系统的优劣,直接影响着计算机系统的性能。
slide5
4.1 指令格式和指令编码
  • 机器指令:二进制代码表示的计算机指令是计算机硬件能识别并直接执行的操作命令。
  • 机器指令是计算机完成其复杂功能中的一个步骤的描述。
  • 一条机器指令要包含以下信息:
    • 操作的类型
    • 操作数的存储位置(操作数的地址)
    • 操作结果的存储位置
    • 下一条指令的地址
  • 指令格式:计算机指令编码的格式。
4 1 1
4.1.1 操作码
  • 反映机器做什么操作。
  • 指令系统中的每一条指令都有一个唯一确定的操作码,用以指示指令的操作功能。不同的指令具有不同的操作码。
  • 为了能表示指令系统中的全部操作,指令字中必须有足够长度的操作码字段。假定指令系统中有m种操作,则操作码位数n应满足:
  • n≥log2m
  • 指令操作码的编码有定长编码和变长编码两种。
slide7
定长编码的指令操作码
  • 定长编码的指令操作码:所有指令码的长度一致,位置固定。是一种简单规整的编码方法。
  • 由于定长编码的操作码位数和位置固定,因而指令译码简单,有利于简化硬件设计。在字长较长的大、中型机以及超小型机中被广泛采用,
  • 例如:在IBM 360/370机中,所有指令的操作码均为8位,最多可指定256种操作。
slide8
变长编码的指令操作码
  • 变长编码的指令操作码:不同指令的操作码长度不完全相同,操作码的位数不固定,分散地放在指令字的不同位置上。
  • 采用变长编码的方法,可用较短的指令字长表示更多的操作类型,寻址较大的存储空间。
  • 在早期的微、小型机中,由于指令字较短,均采用变长编码的指令操作码。如Intel 8086、PDP一11等机器。
  • 变长编码的指令操作码的位数不固定,且位置分散,因而增加了指令译码与分析的难度,使硬件设计复杂化。
slide9
扩展操作码法
  • 最常用的变长操作码的编码方式是扩展操作码法。
  • 扩展操作码法:当指令长度一定时,将操作数地址多的指令选择短的操作码,操作数地址少的指令选择较长操作码。
  • 采用扩展操作码法即能充分地利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码长度,使它能表示更多的指令。
slide10
例:设某机的指令长度为16位。操作码为4位,具有三个地址字段,每个地址字段长为4位。其指令格式为:
  • 按照定长编码的方法,4位操作码可表示16条三地址指令。
  • 若指令系统中要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,共61条指令。则需要采用变长操作码方式进行编码。
slide12
例:设机器指令字长为16位,指令中地址字段的长度为4位,共有11条三地址指令,72条二地址指令,64条零地址指令。问最多还能规定多少条单地址指令?
  • 解:三地址指令的地址字段共需12位,所以可有4位操作码,可规定16条三地址指令。现有11条三地址指令,所以还有16-11=5个编码用于二地址指令。
  • 二地址指令的地址字段共需8位,可有8位操作码,去掉三地址指令用掉的操作码,可规定5×16=80条二地址指令。现有72条二地址指令,所以还有80-72=8个编码用于单地址指令。
  • 单地址指令的地址字段共需4位,可有12位操作码,去掉二、三地址指令用掉的操作码,可规定8×16=128条单地址指令。
  • 由于要求有64条零地址指令,而4位操作码只能提供16条指令,所以需要由单地址指令提供64/16=4个操作码编码,因此还能规定128-4=124条单地址指令。
slide14
例:设某台计算机有100条指令:

(1)采用固定长度操作码,试设计其操作码的编码。

(2)假如这100条指令中有10条指令的使用概率达90%,其余90条指令的使用概率为10%。试采用编码设计一种操作码编码的方案并求出操作码的平均长度。

解:(1)100条指令,27<100<28,采用定长操作码,需要7位操作码。00000000~1100011

(2)10条常用指令 需要4位操作码。0000~1001

剩下的90条。10100000~11111001

4 x 90%+8 x 10%=4.4位

4 1 2
4.1.2 地址码
  • 地址码:指明操作数的地址。
  • 指令的地址结构需考虑的问题:需要多少地址信息及如何给出地址。
  • 1.四地址指令
  • 四地址指令格式:
  • A1:第一源操作数的存储器地址或寄存器地址;
  • A2:第二源操作数的存储器地址或寄存器地址;
  • A3:存放操作结果的存储器地址或寄存器地址;
  • A4:指示下一条要执行指令的地址。
  • 四地址指令的功能:(A1)OP(A2)→A3;A4指示下条指令地址
  • 四地址指令直观明了,程序的执行流向明确,不存在转移指令。但指令长度太长,因此在实际机器中基本不用。
slide16
三地址指令
  • 程序在执行过程中大多数情况是按指令序列依次执行的,只有在执行转移指令时,程序的执行顺序才被改变。为了压缩指令长度,下一条指令地址采用隐含的方法给出。
  • 通常用一个程序计数器PC 来跟踪程序的执行并指示将要执行的指令地址。每执行一条指令,PC自动增量,增量值取决于执行指令的长度。
  • 当程序出现转移时,用专门的转移指令将转移地址直接送入PC。
  • 在三地址指令中不明显地指示下条指令地址。
slide17
三地址指令格式:
  • A1:第一源操作数的存储器地址或寄存器地址;
  • A2:第二源操作数的存储器地址或寄存器地址;
  • A3:存放操作结果的存储器地址或寄存器地址;
  • 三地址指令功能为: (A1)OP(A2)→A3;
  • PC指示下条指令地址
  • 三地址指令编程方便,结果不影响运算操作数,但指令长度仍比较长,所以一般在字长较长的大、中型机中使用,而微、小型机中很少使用三个地址均为存储器地址的三地址指令。
slide18
二地址指令
  • 二地址指令的格式为:
  • 这里A1、A2是操作数所在的存储器地址或寄存器地址。
  • 二地址指令功能为:
  • (A1)OP(A2)→A1 或 (A1)OP(A2)→A2
  • 源地址:仅提供操作数的地址
  • 目的地址:既提供一个操作数,又存放操作结果的地址。
  • 二地址指令的意义是:源地址中的操作数与目的地址中的操作数进行操作码所规定的操作,结果存入目的地址中。
slide19
二地址指令的几种形式
  • ① 存储器—存储器型(S—S型)指令:A1、A2均为存储器地址的二地址指令。
  • ② 寄存器—寄存器型(R—R型)指令: A1、A2均为寄存器地址的二地址指令。
  • ③ 寄存器—存储器型(R—S型)指令: A1、A2中一个是寄存器地址,另一个是存储器地址的二地址指令。也称一个半地址指令。
slide20
二地址指令的指令长度短,特别是R—R型指令,不需访问存储器取操作数,指令执行速度快,因此是最常用的一种指令格式。尤其在RISC结构机器中,所有运算型指令均为R—R型指令。
  • 二地址指令执行后,参加运算的操作数被破坏,若不希望被破坏,则需提前保护。
slide21
一地址指令(单地址指令)
  • 一地址指令的格式为:
  • A可以是存储器地址,也可是寄存器地址。
  • 一地址指令有两种情况
  • ① 单操作数指令:如INC、DEC、NEG等,只需一个操作数,其功能为:OP(A)→A。
  • ② 双操作数指令:另一个操作数通常采用隐含寻址的方法,将操作数隐含在约定的累加器AC中,其指令功能为:(AC)OP(A)→AC。
  • 一地址指令长度短,指令执行速度快(若A为存储器地址,只需一次访存取数),对于字长较短的微、小型机,是一种常用的指令格式。
slide22
零地址指令
  • 零地址指令中只有操作码而无地址码,其指令格式为;
  • 零地址指令有两种情况:
  • ① 不需操作数的控制型指令,如HALT、WAIT、NOP等。
  • ② 运算型零地址指令:操作数隐含在堆栈中。
4 1 3
4.1.3指令字长度
  • 指令字长度:一个指令字所包含的二进制信息的位数。
  • 定长指令:机器的指令系统中所有指令的长度都是一样的。
  • 可变长指令:各指令的长度可以不同。
  • 字长与指令长通常等于字符长度的整倍数。
  • 为了合理地安排存储空间,并使指令能表达较丰富的内容,采用可变长指令将更加灵活有效。
  • 单字长指令:指令长度等于机器字长。
  • 双字长指令:指令长度等于两个机器字长。
  • 另外还有更多倍字长的指令、半字长指令等。
  • 短指令占存储空间少,有利于提高指令执行速度,因此通常把最常用指令(如算术逻辑运算指令、数据传送指令等)设计成短指令格式。
4 1 4
4.1.4 指令助记符
  • 助记符:采用一些比较容易记忆的文字符号来表示指令中的操作码和操作数。
  • 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
slide25
4.2 操作数的存储及其寻址方式

4.2.1操作数的类型和存储方式

1.操作数的类型

  • 地址 无符号整数
  • 数字 定点数、浮点数、十进制数
  • 字符 ASCII
  • 逻辑数 逻辑运算
4 2 1
4.2.1操作码的类型和存储方式

2.操作数的存储方式

  • 大数端存储方式:将最低字节存储在最大地址位置的存储方式。
  • 小数端存储方式:将最低字节存储在最小地址位置的存储方式。
  • 例:将十进制数据1000000,试画出在32位数据类型中大数端和小数端字节方式下的存储格式。
  • 解:十进制数据1000000转化为(11110100001001000000)0F4240,在32位数据类型中为000F4240,在大数端的字节存储数据位00,0F,42,40;在小数端的字节存储数据位40,42,0F ,00。

大数端

小数端

3

3

2

2

1

1

0

0

slide27
3.数据在主存中的存放

在采用字节编址的情况下,数据在主存储器中的3种不同存放方法。设存储字长为64位(8个字节),即一个存取周期最多能够从主存读或写64位数据。读写的数据有4种不同长度,它们分别是字节(8位)、半字(16位)、单字(32位)和双字(64位)。请注意:此例中数据字长(32位)不等于存储字长(64位)。

字节

半字

单字

双字

slide28
存储字64位(8个字节)不浪费存储器资源的存放方法

现有一批数据,它们依次为:字节、半字、双字、单字、半字、单字、字节、单字。4种不同长度的数据一个紧接着一个存放。优点是不浪费宝贵的主存资源,但存在的问题是:当访问的一个双字、单字或半字跨越两个存储单元时,存储器的工作速度降低了一半,而且读写控制比较复杂。

slide29
存储字64位(8个字节)从存储字的起始位置开始存放

无论要存放的是字节、半字、单字或双字,都必须从存储字的起始位置开始存放,而空余部分浪费不用。优点是:无论访问一个字节、半字、单字或双字都可以在一个存储周期内完成,读写数据的控制比较简单。缺点是:浪费了宝贵的存储器资源。

slide30
0

4

6

1

3

2

5

7

12

14

15

8

9

10

11

13

20

22

16

17

19

18

21

23

26

27

24

25

28

29

30

31

35

32

33

34

36

39

37

38

存储字64位(8个字节)

字对齐的数据存放方法

此方法规定,双字地址的最末3个二进制位必须为000,单字地址的最末两位必须为00,半字地址的最末一位必须为0。它能够保证无论访问双字、单字、半字或字节,都在一个存取周期内完成,尽管存储器资源仍然有浪费。

slide31
4.堆栈
  • 堆栈是一种按特定顺序进行存取的存储区,这种特定顺序可归结为“后进先出”(LIFO)或“先进后出”(FILO)。

1.寄存器堆栈

  • 用一组专门的寄存器构成寄存器堆栈,又称为硬堆栈。这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,它们之间具有对应位自动推移的功能,即可将一个寄存器的内容推移到相邻的另一个寄存器中去。
slide32
低地址

堆栈区

高地址

4.堆栈
  • 从主存中划出一段区域来作堆栈,这种堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针SP,简称栈指针。栈指针所指定的主存单元,就是堆栈的栈顶。
slide33
自底向上生成堆栈的进栈
  • 堆栈的栈底地址大于栈顶地址,通常栈指针始终指向栈顶的满单元。进栈时,SP的内容需要先自动减1,然后再将数据压入堆栈。
  • (SP)-1→SP修改栈指针
  • (A)→(SP)将A中的数据压入堆栈

自底向上生成堆栈的出栈

  • 出栈时,需要先将堆栈中的数据弹出,然后SP的内容再自动加1。
  • ((SP))→A将栈顶内容弹出,送入A中
  • (SP)+1→SP修改栈指针
slide35
4.堆栈
  • 堆栈操作既不是在堆栈中移动它所存储的内容,也不是把已存储在栈中的内容从栈中抹掉,而是通过调整堆栈指针而给出新的栈顶位置,以便对位于栈顶位置的数据进行操作。
  • 在一般计算机中,堆栈主要用来暂存中断断点、子程序调用时的返回地址、状态标志及现场信息等,也可用于子程序调用时参数的传递,所以用于访问堆栈的指令只有进栈(压入)和出栈(弹出)两种。
4 2 2
指令寻址

数据寻址

4.2.2 数据的寻址方式
  • 寻址方式 :确定 本条指令的 操作数地址下一条欲执行 指令 的 指令地址。

顺序

( PC ) + 1 PC

由转移指令指出

跳跃

寻址方式

slide37
指令寻址
  • 顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则需要通过程序转移类指令实现。
  • 跳跃寻址的转移地址形成方式有3种:直接(绝对)、相对和间接寻址,它与下面介绍的数据寻址方式中的直接、相对和间接寻址是相同的,只不过寻找到的不是操作数的有效地址而是转移的有效地址而已。
4 2 21
4.2.2 数据的寻址方式
  • 数据寻址方式是根据指令中给出的地址码字段寻找真实操作数地址的方式。

指令中的形式地址A 有效地址EA

  • 每种计算机的指令系统都有自己的一套数据寻址方式,不同计算机的寻址方式的名称和含义并不统一。
4 2 22
4.2.2 数据的寻址方式
  • 1.隐含寻址方式
    • 在指令中不指出操作数的地址,根据指令的操作码就可判断操作数的存储位置,即操作数的地址隐含在操作码中。
    • 例如堆栈操作指令push和pop
4 2 23
OP

立即数

4.2.2 数据的寻址方式
  • 2.立即寻址
  • 指令字中直接给出操作数。即指令所需的操作数在指令的地址码部分直接给出。
  • 这种寻址方式在取指令的同时操作数即被取出,不必再次访问存储器,提高了指令执行速度。但由于指令字有限,使得数据范围受限。
  • 立即寻址方式通常用于给某一寄存器或存储器单元赋予初值或提供一个常数。
  • 例:Intel 8086指令:
  • MOV AX,2000H ;将数据2000H存入累加器AX中

Data=D

4 2 24
R0

操作数

Ri

Rn

寄存器

4.2.2 数据的寻址方式
  • 3.寄存器寻址
    • 寄存器寻址指令的地址码部分给出某一个通用寄存器的编号,这个指定的寄存器中存放着操作数。操作数S与寄存器Ri的关系为:
    • S=(Ri)
    • 寄存器寻址具有两个明显的优点:
      • ①从寄存器中存取数据比从主存中快得多;
      • ②由于寄存器的数量较少,其地址码字段比主存单元地址字段短得多。
slide42
4.直接寻址
  • 指令字中直接给出操作数的有效地址。
  • 有效地址 E=A
slide43
4.直接寻址
  • 这种方式简单直观,便于硬件实现。但随着存储器容量不断扩大,要寻址整个主存空间,将造成指令长度加长。另外程序位置受到限制。
  • 例:Intel 8086指令:
  • MOV AX,[2000H]
  • 将有效地址为2000H的内存单元的内容读入累加器AX中。
4 2 25
4.2.2 数据的寻址方式
  • 5.寄存器间接寻址
    • 指令中的地址码给出某一通用寄存器的编号,在被指定的寄存器中存放操作数的有效地址,而操作数则存放在主存单元中。
slide45
5. 寄存器间接寻址
  • 指令中地址码部分所指定的寄存器中内容是操作数的有效地址。
  • E=(Rn) Data=((Rn))
slide46
例:Intel 8086指令:
  • MOV AL,[BX]
  • 设 BX=2000H,(2000H)=80H,则 AL←80H
  • 由于寄存器间接寻址方式中,地址存放在寄存器中,因此只需一次访存即可取得操作数,而且寄存器又能给出全字长的地址码,可寻址较大的存储空间。
slide47
例:Intel 8086指令:
  • MOV AL,[BX]
  • 设 BX=2000H,(2000H)=80H,则 AL←80H
  • 由于寄存器间接寻址方式中,地址存放在寄存器中,因此只需一次访存即可取得操作数,而且寄存器又能给出全字长的地址码,可寻址较大的存储空间。
4 2 26
4.2.2 数据的寻址方式
  • 6.存储器间接寻址方式
    • 间接寻址意味着指令中给出的地址A不是操作数的地址;而是存放操作数地址的主存单元的地址,简称操作数地址的地址。
    • 间接寻址要比直接寻址灵活得多,它的主要优点为:
    • ①扩大了寻址范围,可用指令的短地址访问大的主存空间。
    • ②可将主存单元作为程序的地址指针,用以指示操作数在主存中的位置。当操作数的地址需要改变时,不必修改指令,只需修改存放有效地址的那个主存单元(间接地址单元)的内容就可以了。
slide49
6.存储器间接寻址方式
  • 指令的地址码部分给出的是操作数地址的地址或是指示操作数地址的地址指示字。
  • 间接寻址分为一级间址和多级间址。
  • 一级间址:指令的地址码部分给出的是操作数地址的地址。

E=(A) Data= ((A))

slide50
例:某计算机指令:
  • MOV AL,@2000H
  • E=(A)=(2000H)=3000H
  • Data=50H

AL

50H

3000H

2000H

2001H

slide51
多级间址:指令的地址码部分给出的是操作数地址的地址指示字。
  • 在多级间址中,通常把地址字的高位作为标志位,以指示该字是有效地址,还是地址指示字。
  • 图例中
  • E=(((A)))
slide52
间接寻址的特点:
  • ① 间接寻址比直接寻址灵活,可扩大寻址范围,以短的地址码访问大的存储空间。
  • 如:指令字长与存储器字长均为16位,指令中地址码长为10位,其直接寻址范围为1k空间;如果用间接寻址,有效地址为16位,其寻址空间为64k,比直接寻址扩大64倍。
  • ② 采用间接寻址,当操作数地址需要改变时,可不必修改指令,只要修改地址指示字中内容(即存放有效地址的单元内容)即可。
  • ③ 间接寻址需多次访存才能取得操作数,尤其是多级间接寻址,因而降低了指令的执行速度。
  • 大多数计算机只允许一级间接寻址。在一些大型高速计算机中,很少采用间接寻址。
4 2 27
4.2.2 数据的寻址方式
  • 7.相对寻址方式
    • 相对寻址是基址寻址的一种变通,由程序计数器PC提供基准地址,指令中的地址码字段作为位移量D,两者相加后得到操作数的有效地址,即EA=(PC)+D。位移量指出的是操作数和现行指令之间的相对位置。
slide54
PC当前内容一般为现行指令的下一单元的地址。
  • 形式地址是操作数地址相对于PC当前内容的一个相对位移量(Disp),位移量可正可负,一般用补码表示。
  • 在相对寻址中,只要保持位移量不变,就可实现指令带着数据在存储器中搬家,有利于实现程序再定位。
slide55
例:8086指令 JNC 03H 的功能为,如果进位为0,则转移到目标地址为 (PC)+03H处进行执行。设指令为双字节指令,本条指令地址为1000H。
  • 本条指令取指后,PC=1002H
  • 转移目标地址为
  • 1002H+0003H=1005H
  • 若指令为JNC 0FDH
  • 则转移目标地址为
  • 1002H+FFFDH=0FFFH
4 2 28
4.2.2 数据的寻址方式
  • ①操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值D。当指令地址改变时,由于其位移量不变,使得操作数与指令在可用的存储区内一起移动,所以仍能保证程序的正确执行。采用PC相对寻址方式编写的程序可在主存中任意浮动,它放在主存的任何地方,所执行的效果都是一样的。
  • ②由于指令中给出的位移量可正、可负,所以对于指令地址而言,操作数地址可能在指令地址之前或之后。
4 2 29
4.2.2 数据的寻址方式
  • 8.变址和基址寻址方式
    • 把变址寄存器Rx的内容与指令中给出的形式地址A相加,形成操作数有效地址,即EA=(Rx)+A。Rx的内容称为变址值。
    • S=((Rx)+A)
slide58
8.变址和基址寻址方式
  • 指令中指定的变址寄存器的内容与指令字中的形式地址相加形成操作数的有效地址。
  • 变址寄存器通常是通用寄存器中的某一个。
  • E=(Rx)+D Data=(E)
slide59
例:Intel 8086指令:
  • MOV AL,[BX+4]
  • 设 BX=2000H,BX+4=2004H
  • (2004H)=82H,则 AL←82H
slide60
变址寻址可用于数组、向量、字符串等数据的处理。
  • 例: Intel 8086指令:
  • LODS ;AL←(SI),SI←SI+1

+1

slide61
8.变址和基址寻址方式
  • 基址寄存器Rb的内容与指令中给出的位移量D相加,形成操作数有效地址,即EA=(Rb)+D。基址寄存器的内容称为基址值。指令的地址码字段是一个位移量,位移量可正、可负。
  • S=((Rb)+D)
slide62
8.变址和基址寻址方式
  • 操作数的有效地址等于指令中的形式地址与基址寄存器中的内容之和。
  • 基址寄存器可以是一个专用的寄存器,也可以是由指令指定的一个通用寄存器。
  • E=(Rb)+Disp
slide63
基址寻址主要用于将用户程序的逻辑地址(用户编写程序时所使用的地址)转换成主存的物理地址(程序在主存中的实际地址)。
  • 在多道程序运行时,系统的管理程序将多道程序装入主存。由于用户在编写程序时,不知道自己的程序应该放在主存的哪一个实际物理地址中,只能按相对位置使用逻辑地址编写程序。
  • 当用户程序装入主存时,为了实现用户程序的重定位,系统程序给每个用户程序分配一个基准地址。程序运行时,该基准地址装入基址寄存器,通过基址寻址,实现逻辑地址到物理地址的转换。
slide64
基址寻址与变址寻址在形式上以及有效地址的计算方法上都是相似的,但它们的应用场合是不同的。
  • 基址寻址是面向系统的,主要用于逻辑地址到物理地址的变换,用以解决程序定位问题。基址寄存器由系统程序通过特权指令使用,对用户是透明的。另外基址寄存器的内容一般不进行自动增量和减量。
  • 变址寻址是面向用户的,主要用于访问数组、向量、字符串等成批数据,用以解决程序的循环控制问题。变址寄存器的内容可以进行自动增量和减量。
  • 在早期的一些微、小型机中,基址寻址与变址寻址是不加区分的。
4 2 210
4.2.2 数据的寻址方式
  • 9.复合寻址方式
    • 把间接寻址方式同相对寻址或变址寻址等方式相结合而形成的寻址方式。
  • 寻址方式码字段的长度取决于寻址方式的数量。
slide66
4.3 指令系统
  • 指令是指示计算机执行某些操作的命令,一台计算机的所有指令的集合构成该机的指令系统。

4.3.1 指令类型

  • 1.数据传送指令
    • 一般传送指令具有数据复制的性质,即数据从源地址传送到目的地址,而源地址中的内容保持不变。一般传送类指令常用助记符MOV表示,根据数据传送的源和目的的不同,又可分为:
      • ⑴ 主存单元之间的传送。
      • ⑵ 从主存单元传送到寄存器。在有些计算机中,该指令用助记符LOAD表示。
      • ⑶ 从寄存器传送到主存单元。在有些计算机里,该指令用助记符STORE表示。
      • ⑷ 寄存器之间的传送。
slide67
例:8086指令
  • MOV AL,BL ;AL←BL
  • MOV AL,Disp(BX)(SI) ;AL←((BX)(SI)+Disp)
  • 例:IBM370机的成组取指令:
  • R1、R3:寄存器字段,指定16个通用寄存器中的某一个
  • B2:基址寄存器
  • D2:形式地址。
slide68
源操作数的起始地址:E2=(B2)+D2。
  • 指令功能:从主存E2单元开始,顺序地取出多个数据,分别存放在从R1字段指定的寄存器到R3字段指定的寄存器的编号连续的多个寄存器中。
  • 例如,R1字段指定寄存器R6,R3字段指定寄存器R11。则指令完成的功能是:从E2单元开始顺序取出6个数据,分别存入R6到R11共6个寄存器中。
slide69
2.算术运算指令
  • 算术运算指令主要用于进行各种算术运算。
  • 算术运算:包括定点、浮点的加、减、乘、除运算以及求反、求补、加1、减1、比较等指令。
4 3 1
4.3.1 指令类型
  • 3.逻辑运算类指令
    • 对数据进行逻辑操作。这类指令包括按位与、或、非,逻辑移位等。
  • 4.程序控制类指令
    • 转移指令、子程序调用指令、子程序返回指令、空操作指令等。
slide71
在程序执行过程中,通常采用转移指令来改变程序的执行顺序。转移指令又分无条件转移和条件转移两种:
    • ⑴ 无条件转移又称必转,它在执行时将改变程序的常规执行顺序,不受任何条件的约束,直接把程序转向该指令指出的新的位置执行,其助记符一般为JMP。
    • ⑵ 条件转移必须受到条件的约束,若条件满足时才执行转移,否则程序仍顺序执行。条件转移指令主要用于程序的分支,当程序执行到某处时,要在两个分支中选择一支,这就需要根据某些测试条件作出判断。
  • 无论是条件转移还是无条件转移都需要给出转移地址。若采用相对寻址方式,转移地址为当前指令地址(即PC的值)和指令中给出的位移量之和,即(PC)+位移量→PC;若采用绝对寻址方式,转移地址由指令的地址码字段直接给出,即A→PC。
slide72
子程序调用指令,简称转子指令,其助记符一般为CALL。转子指令安排在主程序中需要调用子程序的地方,转子指令是一地址指令。
  • 转子指令和转移指令都可以改变程序的执行顺序,但事实上两者存在着很大的差别:
    • ⑴ 转移指令使程序转移到新的地址后继续执行指令,不存在返回的问题,所以没有返回地址;而转子指令要考虑返回问题,所以必须以某种方式保存返回地址,以便返回时能找到原来的位置。
    • ⑵ 转移指令用于实现同一程序内的转移;而转子指令转去执行一段子程序,实现的是不同程序之间的转移。
slide73
陷井指令
  • 陷井:一种意外事故中断。
  • 设置陷井的目的是为了通知CPU所出现的故障,并根据故障情况,转入相应的故障处理程序。
  • 在一般计算机中,陷井指令作为隐指令不提供给用户使用,只有在出现故障时,才由CPU自动产生并执行。但也有的计算机中设置了用户可用的陷井指令,利用它来实现系统调用和程序请求。
  • 例如:Intel 8086 CPU的软件中断指令就是直接提供给用户使用的陷井指令,用它可完成系统调用过程。
slide74
5.输入/输出指令
  • 输入/输出指令是用于主机与外部设备之间进行各种信息交换的指令。
  • 主机与外部设备之间交换的信息包括:
  • ① 输入/输出数据
  • ② 主机向外部设备发出各种控制命令
  • ③ 外部设备的各种工作状态
  • 输入/输出指令的三种设置方式:
  • ① 外部设备采用单独编码的寻址方式并设置专用的I/O指令。
  • 由I/O指令的地址码部分给出被选设备的设备码(或端口地址),操作码指定所要求的I/O操作。
slide75
5.输入/输出指令
  • ② 外设与主存统一编址,用通用的数据传送指令实现I/O操作。
  • 例如PDP—11机采用外设与主存统一编址。不用设置专用I/O指令,可以象访问主存单元一样用MOV指令去访问外设的寄存器。
  • 这种编址方法不用设置专用I/O指令,但占用主存空间。
  • ③ 通过I/O处理机执行I/O操作。
  • 在这种方式中,CPU只需执行几条简单的I/O指令,如启动I/O,停止I/O,测试I/O设备等,对I/O系统的管理,I/O操作控制都由I/O处理机完成。提高了主机的效率。
4 3 11
4.3.1 指令类型
  • 6.堆栈操作指令
    • 实现对CPU内部的硬件堆栈的操作。
  • 7.字符串处理指令
    • 字符串的传输、字符串转换、字符串比较、字符串查找、字符串匹配、字符串抽取和替换等。
  • 8.系统指令
    • 改变计算机系统的工作状态。
  • 前四种指令是必备的,后面的是可选的。
4 3 2 cisc risc
4.3.2 CISC和RISC
  • 复杂指令系统计算机CISC(Complex Instruction Set Computer)
  • 精简指令系统计算机RISC(Reduced Instruction Set Computer)
  • 80 — 20 规律
  • 典型程序中 80% 的语句仅仅使用处理机中 20% 的指令。
  • 执行频度高的简单指令,因复杂指令的存在,执行速度无法提高。
  • 能否用 20% 的简单指令组合不常用的80% 的指令功能。
slide78
RISC 的主要特征
  • 选用使用频度较高的一些 简单指令,复杂指令的功能由简单指令来组合。
  • 指令 长度固定、指令格式种类少、寻址方式少。
  • 只有 LOAD / STORE指令访存。
  • CPU 中有多个通用 寄存器。
  • 采用 流水技术 一个时钟周期内完成一条指令。
  • 采用 组合逻辑实现控制器。
  • 采用 优化的 编译程序。
slide79
CISC 的主要特征
  • 系统指令 复杂庞大,各种指令使用频度相差大。
  • 指令 长度不固定、指令格式种类多、寻址方式多。
  • 访存 指令 不受限制。
  • CPU 中设有 专用寄存器。
  • 大多数指令需要 多个时钟周期执行完毕。
  • 采用 微程序控制器。
  • 难以用 优化编译生成高效的目的代码。
cisc risc
.CISC和RISC的主要特性进行对比。

比 较 内 容 CISC RISC

  • ⑴指令系统 复杂、庞大 简单、精简
  • ⑵指令数目 一般大于200 一般小于100
  • ⑶指令格式 一般大于4 一般小于4
  • ⑷寻址方式 一般大于4 一般小于4
  • ⑸指令字长 不固定 等长
  • ⑹可访存指令 不加限制 只有LOAD/STORE指令
  • ⑺各种指令使用频率 相差很大 相差不大
  • ⑻各种指令执行时间 相差很大 绝大多数在一个周期内完成
  • ⑼优化编译实现 很难 较容易
  • ⑽程序源代码长度 较短 较长
  • ⑾控制器实现方式 绝大多数为微程序控制 绝大多数为硬布线控制
  • ⑿软件系统开发时间 较短 较长
slide81
小结
  • 指令格式
  • 指令编码
  • 操作数的存储
  • 寻址方式
  • 指令系统
ad