计组补救式学习笔记

3.2指令系统

1.指令格式

  • 指令:指示计算机执行某类操作的命令,CPU工作的主要依据。
  • 指令集:计算机能执行的全部指令的集合,也称为指令系统(CISC、RISC)
  • 指令系统的特点:
    • √决定了计算机的硬件功能
    • √计算机中软硬件的分界面

上层软件(操作系统)

指令系统(机器语言)

硬件层(微程序控制器)

1.指令字长

即包括操作码、操作数、在内的整个指令(整条指令)的长度(单位:位)。

指令长度对计算机的影响:

  • 指令长度与功能

    长度越长,表达的意义越多,功能越强;

    长度越短,表达的意义越少,功能越弱;

  • 指令长度与复杂性、

    长度越长,表达的意义越多,硬件越复杂;

    长度越短,表达的意义越少,硬件越简单;

  • 指令长度与速度

    • 从单条指令的角度:

      长度越长,可能读出该指令所花的时间越长

    • 从系统的角度:

      指令长度仅是影响速度的因素之一。

      系统速度与硬件复杂性、软件的长度、编译程序等若干因素有关。

  • 定长指令和变长指令

    • 定长指令格式->便于控制
    • 变长指令格式->合理利用存储空间,如超长指令集
2.操作码格式
定长操作码

所有指令操作码OP的位置、位数固定相同

优点:便于操作码译码;译码与取操作数并行

应用:定长操作码一般用于指令字较长的指令

例

变长操作码

操作码θ的位置、位数不固定,按需求变化。从而可以更有效的利用存储空间。

变长操作码的两种方式:扩展操作码、复合操作码。

扩展操作码

​ 在指令字指令较短的情况下,利用某些指令地址位数较少产生的空闲位来扩展操作码。

​ 关键在设置扩展标志

例

5038417

扩展指令码的识别过程:

image-20201021105241098

比较:

上例中,共表示出61条指令(包含3、2、1、0个地址的指令,每个地址占4位)

  • 同样需要有3、2、1、0个地址指令,若采用定长操作码,则只能表示出16条指令0000-1111

  • 如果定长操作码超出4位长度,则不能表示出全部4种不同地址的指令。

    结论:变长指令格式可以合理的利用存储空间

操作码采用方式码编码(相对于扩展操作码)

操作码分为几部分,每部分表示一种操作。

image-20201021105919037

3.地址结构

地址结构的主要内容:指令给出地址的方式和指令中 地址数量的设置

指令中提供的地址码:

  • 存储单元地址
  • 寄存器编号
指令提供地址的方式
  1. 显地址方式:指令中明显指明地址(直接或间接给出)

    MOV AX,(1000H) 直接给出地址

    MOV AL,(BX) 间接给出地址

  2. 隐地址方式:地址隐含约定,不出现在指令中

    优点:可减少指令中的地址数,简化地址结构

    image-20201021110602058

地址结构的简化
  • 四地址结构指令

    image-20201021111549961

  • 三地址结构指令

    image-20201021112313034

  • 二地址结构指令

    image-20201021112339663

  • 一地址指令

    image-20201021112857360

  • 零地址结构指令

image-20201021113241261

2.寻址方式

CPU能直接访问的操作数只能在主存或CPU内的寄存器

  • 立即寻址 操作数在指令中
  • 直接寻址 指令给出操作数的直接地址
  • 间接寻址 指令给出操作数的间接地址
  • 变址类寻址 经过变换获得操作数的有效地址
1.立即数

指令中直接给出操作数。

  • 定长格式:操作码OP||立即数 –>操作数在指令中,长度固定且有限

  • 变长格式:基本指令

    ​ 立即数 –>操作数在基本指令之后,长度可变

    #主要用于提供常熟、设置初值等。

    速度快,但灵活性差。

2.直接寻址

指令直接给出操作数地址:

  • 存储单元号(数在M中)
  • 寄存器号(数在R中)

(1)存储器直接寻址(直接寻址,助记符A)

  • 定长格式:操作码OP || 地址A *访存范围受A的位数限制

  • 变长格式:基本指令

    ​ AL

    ​ AH *A的位数可覆盖整个存储空间

    image-20201022193539531

(2)寄存器直接寻址(寄存器寻址,助记符R)

​ 格式:操作码OP||寄存器号Ri R所占位数少;访问R比访问M快

image-20201022193717611

两种直接寻址方式的比较:

存储器直接寻址 寄存器直接寻址
是否访存
速度
地址位数

3.间接寻址

指令给出操作数的间接地址。

  • 存储单元号
  • 寄存器号

(1)存储器间址(助记符@)

格式:操作码OP||间接地址A

image-20201022194458190

image-20201022194954086

R所占位数少;

R可提供全字长地址码;

修改R内容比修改M内容快。

指针不变(由指令指定),指针内容可变,使同一指针可指向不同存储单元,以实现程序的循环、共享,并提供转移地址。

image-20201022195800967

image-20201022200206091

image-20201022200219395

image-20201022200911703

4.变址类寻址

(1)变址寻址 助记符X®

指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为操作数有效地址(一维数组的读写)

image-20201022201118522

image-20201022201533027

image-20201022201545686

image-20201022201640670

image-20201022201657404

image-20201022211918751

image-20201025154453695

image-20201025154516752

I/O指令的功能扩展:

如何用通用I/O指令实现对各种具体设备的控制?

  • I/O指令中留有扩展余地

    指令中某些字段编码事先不定义,需要时再约定其含义。

    用于外设种类、数量不多的场合

  • I/O接口中设置控制/状态寄存器

主机用输出指令或传送指令将具体设备的控制命令按约定的代码格式送往接口中的控制寄存器,向外设发出命令。

外设的状态信息也以某种格式放在接口的状态寄存器中,主机用输入指令或传送指令从状态寄存器中取出有关信息进行查询、分析

image-20201025160943329

主机对外设的寻址方式

寻找I/O接口中的寄存器的方式。 **I/O端口

如何为I/O端口分配地址?

  • 单独编址

    编址到寄存器:为每个寄存器(I/O端口)分配独立的端口地址;

    ​ I/O指令中给出端口地址

    I/O地址空间不占主存空间,可与主存空间重叠。

    ​ 需设置标志区分访问对象,如

    • M/IO = 1 访问存储器
    • M/IO = 0 访问I/O端口
  • 统一编址

    编址到寄存器:为每个寄存器(I/O端口)分配总线地址;

    ​ 访问外设时,指令中给出总线地址。

    I/O端口占据部分主存空间。

    常将存储空间的低端分配给主存单元,高端分配给I/O端口,以示区分。

I/O指令设置方式
  • 设置专用I/O指令 ——显式I/O指令

    针对单独编址,用I/O指令访问I/O端口。

    指令中说明输入/输出操作,并给出端口地址。

    image-20201025161923677
  • 传送指令实现I/O操作 ——隐式I/O指令

    针对统一编址,用传送指令访问I/O端口。

    不设专用I/O指令。

    image-20201025162221553

算术逻辑运算指令
  1. 算术运算指令

    设置时需考虑操作数类型、符号、进制等;

    运算结束后设置相应状态标志。

  2. 逻辑运算指令

    实现对代码位的设置测试清除修改等。

    ​ 或 与 异或

程序控制指令
  1. 转移指令

    • 无条件转移:操作码 转移地址
    • 条件转移: 操作码 转移地址 转移条件
    • 循环: 转移条件为循环计数值
  2. 转子指令与返回指令

    转子: 操作码 子程序入口

    返回: 操作码

    同一条返回指令应该提供多个不同的返回地址。

    返回地址的存取: 用堆栈存放返回地址。

  3. 软中断指令

    早期主要用于程序调试。

    现在常用于系统功能调用。

    以INT n;的形式出现在程序中

    ​ n表示不同的功能调用

    image-20201025163058040

  4. 控制指令

    CLC 清除进位标志

    NOP 空操作指令

    HLT 暂停指令

    ······

    image-20201025163410613

    image-20201025163917698

    image-20201025165041484

    image-20201025165053080

    image-20201025165117423

    小结

    1.I/O指令的功能扩展(目的、方法),

    外设编址方式和指令设置方式。

    2.基本概念:扩展操作码(扩展方法)、地址结构(简化方法)、隐地址、显地址;

    3.基本寻址方式(立即、直接、间址、变址)的含义与应用场合。

new:

串行加法器:

  1. **

  2. 影响运算速度的主要因素

    进位信号的传递

  3. 进位逻辑

    特点:进位信号逐位形成

    image-20201026162106568