指令系统

  • 总线
  • 存储器
    主存
    cache
    虚拟存储器
  • CPU
    指令系统
  • I/O设备

指令系统

  • 指令格式
    • 一丶操作码
      • 1. 长度固定类型
      • 2. 长度可变
      • 操作类型
        • 1.数据传送
        • 2. 算术逻辑操作
        • 3. 移位操作
          • 4. 转移
        • 5. 输入输出(独立编址)
    • 二丶地址码
      • 地址码结构
        • 四地址
        • 三地址
        • 二地址
        • 单地址
        • 零地址
      • 操作数类型
    • 三丶指令字长
      • 内存中数据的存储
        • 数据内部存放
        • 数据间存放
    • 寻址方式

指令格式

指令系统_第1张图片

一丶操作码

反映机器做什么操作

1. 长度固定类型

用于指令字长较长的情况,RISC(比如IBM 370 操作码8位)

2. 长度可变

操作码分散在指令字的不同字段中

下面是一种扩展操作码的技术
指令系统_第2张图片

保留码点(1111,11111111…),短操作码一定不能是长操作码的前缀,计算机在译码是就很难识别指令

一般来说:经常出现的指令用短操作码

操作类型

1.数据传送

指令系统_第3张图片

2. 算术逻辑操作

指令系统_第4张图片

3. 移位操作

在这里插入图片描述

4. 转移

指令系统_第5张图片

5. 输入输出(独立编址)

指令系统_第6张图片

二丶地址码

地址码结构

简化地址码结构的方法尽量采用的是隐地址
隐地址存在于计算机指令的地址结构中,和显地址对应。如果地址是以隐含的方式约定,而指令中并不给出该地址码,则这种隐含约定的地址就称为隐地址
缩短地址码的长度有效的方法采用寄存器寻址

四地址

指令系统_第7张图片
取指令访问内存,4 A1,A2都是内存地址,A3结果也要在内存中,A4也要

访问空间小,这样的指令是基本不可能的

三地址

指令系统_第8张图片
现代计算机往往用PC寄存器来代替A4,虽然地址码长度变长,增大了寻找范围,但还是四次访存

二地址

指令系统_第9张图片
将结果保存在A1或者A2中,访存次数依旧是四次

单地址

指令系统_第10张图片
如果一个操作数在ACC中,且把结果放在寄存器ACC中,那么变成单地址,两次访存

零地址

还有一些特殊的零地址指令,比如ACC清零,ACC取反等等

操作数类型

指令系统_第11张图片

三丶指令字长

指令系统_第12张图片
所以

  • 指令字长固定 指令字长=存储字长
  • 指令字长不固定 按照字节倍数变化

内存中数据的存储

数据内部存放

如果存放01234567H
指令系统_第13张图片

数据间存放

指令系统_第14张图片

有可能花费多个存储周期,读写控制也比较复杂

寻址方式

为什么要设置多种类型??

寻址方式:确定本条指令的操作数地址,下一条要执行指令的指令地址

图解寻址方式

相对寻址:

  1. 相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加后得到操作数的有效地址
  2. 需要注意的是假如某条跳转指令(16位)存放在2000H,字节编址,那么这个指令执行后的值为取完这条指令后的PC值,也就是2000H+2+偏移量

基址寻址:

  1. 在多道程序的环境下,用户不可决定自己使用的主存区,编程的时候按照虚拟地址(以0开始),当程序被放入主存时,操作系统根据主存空间情况给基址寄存器赋值,从而将虚地址转化为实地址,
  2. 因为将CPU中基址寄存器的内容,加上指令格式中的形式地址而形成操作数的有效地址,大大的扩大了寻址空间

面向操作系统,主要为多道程序或数据分配空间,寄存器的值通常由OS管理,程序执行过程中不变,指令字中的可变

变址寻址

  1. 变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中变址寄存器的内容与指令格式中的形式地址而形成操作数的有效地址。
  2. 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增1、自减1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化

面向用户,用户处理数组问题,变址寄存器由用户决定,程序执行过程中可变,而指令字不可变

你可能感兴趣的:(#,计算机组成)