计算机组成原理(5)

指令格式
  指令基本格式 操作码(一个):地址码(一个或几个)

  指令字长
    定长指令格式 便于控制 存在空间的浪费
    变长指令格式 合理利用存储空间
  操作码格式
    1.定长操作码:各指令的位置,位数固定相同
    2.扩展操作码:各指令的位置,位数不固定,根据需要变化 关键在设置扩展标志

  操作码采用方式码编码
    操作码分为几部分,每部分表示一种操作

  地址结构
    指令中提供的地址数(存储单元的地址码,寄存器编号)
    1.指令提供地址的方式
      显地址方式:指令中明显指明地址(直接或间接给出)
      隐地址方式:地址隐含约定,不出现在指令中
      使用隐地址可以介绍指令中的地址数,简化地址结构
    2.地址结构的简化
      四地址结构指令
        格式:操作码 地址码1 地址码2 地址码3
          D,D1操作数地址
          D3 结果地址
          D4 下条指令地址
        简化:
          用指令计数器pc指示指令地址
          结果地址放在地址码1或地址码二中

  寻址方式
    是指寻找操作数地址或操作数的方式
    常见寻址方式
      1.立即寻址:指令直接给出操作数
        定长格式: 操作码 立即数S 数在指令中,其长度固定,有限
        变长格式: 基本指令 立即数 数在基本指令之后,其长度可变
        用来提供常数,设置初值
      2.直接寻址:指令直接给出操作数地址(存储单元号,寄存器号)
        存储器直接寻址(直接寻址)
          定长格式 操作码 有效地址D D的位数有限,限制访存范围
          变长格式 基本指令 有效地址(高8位)(低8位) 可覆盖整个存储空间
        寄存器直接寻址
          格式 操作数 寄存器号R R所占位数少;访问R比访问M快
          用于访问固定的存储单元或寄存器

      3.间接寻址:指令给出操作数的间接地址(存储单元号,寄存器号)

        操作数都在存储器中
        存储器间址
          格式 操作码 间接地址D
        寄存器间址
          格式 操纵吗 寄存器号R
        R所占位数少;R可提供全字长地址码;修改R内容比修改M内容快
        指针不变(由指令指定),指针内容可变,使同一指令可指向不同存储单元,
          以实现程序的循环,共享,并提供转移地址
        堆栈寻址
          格式 操作码 堆栈指针SP

      4.变址,基址寻址及其变化
        变址寻址:指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址
          格式 操作码 变址寄存器号RX D形式地址 RX修改量 D基准地址
          D的位数有限,若不能提供全字长地址码,会使防存空间受到限制
        基址寻址:指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址
          格式 操作码 Rb(基址寄存器号) D(位移量) Rb基准地址 D相对于基址的位移
        变址与基址的区别:
          变址:指令提供基准量(不变),R提供修改量(可变);适于处理一维数组
          基址:指令提供位移量(不变),R提供基准量(可变);用于扩大有限字长指令的防存空间
        基址加变值:指令给出两个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址
          格式:操作码 Rx(变址寄存器号) Rb(基址寄存器号) D(位移量)
        相对寻址:指令给出位移量,pc内容与位移量之和为有效地址
          格式 操作码 PC(隐含指定) +-D(位移量)
          有效地址相对pc上下浮动,给编程带来方便
        页面寻址:指令给出的位移量,pc的高位部分与位移量拼接,形成有效地址
          格式: 操作码 PC D(位移量)
          用于页式管理存储系统,寻址速度快,适于组织程序模块有效利用存储空间

    对寻址方式的说明
      1.操作码隐含说明不同寻址方式
      2.指令中设置专门字段说明寻址方式

指令类型
  1.传送指令
    源地址->目的地址
    设置时需考虑:
      1.规定传送范围
      2.指明传送单位
      3.设置寻址方式(在寻址方式的设置上几乎不受限制,能比较集中反映指令各种寻址方式的实现)
  2.输入/输出指令
    主机->外设
    设置时需考虑:
    1.I/O指令的功能扩展(如何用通用I/O指令实现对各种具体设备的控制
      I/O指令中留有扩展余地(指令中某些字段编码事先不定义,需要时再约定含义)
      I/O接口中设置控制/状态寄存器{主机用输出指令或传送指令讲具体设备的控制命令按约定的代码格式送 往接口中的控制寄存器,向外设发出命令.外设的状态信息也            以某种格式放在接口的状态寄存器中,主机用输入指令或传送指令从状态寄存器中取出有关信息进行查询,分析)如何设置控制/状态寄存器是接口设计的关键

    2.主机对外设的寻址方式
      寻找I/O接口中的寄存器的方式
      单独编制(编址到寄存器:为每个寄存器(I/O端口)分配独立的端口地址)
        I/O指令中给出端口地址
        I/O地址空间不占主存空间,可与主存空间重叠.需设置标志区分访问对象
      统一编制(编制到寄存器:为每个寄存器(I/O端口)分配总线地址)
        访问外设时,指令中给出总线地址
        I/O端口占据部分主存空间
        常将存储空间的低端分配给主存单元,高端分配给I/O端口,以示区分

    3.I/O指令设置方式
      设置专用I/O指令(显示I/O指令)
        针对单独编制,用I/O指令访问I/O端口,指令中说明输入/输出操作,并给出端口地址
      用传送指令实现I/O操作(隐式I/O指令)
        针对统一编制,用传送指令访问I/O端口,不设专用I/O指令
      通过I/O处理机进行I/O操作
        两级I/O指令
          cpu执行简单I/O指令(启动,停止,查询,清楚)
          I/O处理机执行I/O操作指令(输入,输出....)

  3.算术逻辑运算指令
    算术运算指令
      设置时需考虑操作数类型,符号,进制等;
      运算结束后设置相应状态标志,
    逻辑运算指令
      实现对代码位的设置,测试,清除,修改等;

  4.程序控制指令
    控制程序流程
    转移指令
      无条件转移:操作码 转移地址
      条件转移: 操作码 转移地址 转移条件
      循环:转移条件为循环计数值
    转子指令与返回指令
      转子:操作码 子程序入口
      返回:操作码 返回地址
      同一条返回指令应提供多个不同的返回地址
      返回地址的存取:用堆栈存放返回地址
    软中断指令
      早期主要用于程序的调试
      现在常常用于系统功能调用,以int n的形式出现在程序中

posted @ 2013-03-16 21:50  chapterlin  阅读(255)  评论(0)    收藏  举报