飞道的博客

指令系统

468人阅读  评论(0)

指令格式

一丶操作码

反映机器做什么操作

1. 长度固定类型

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

2. 长度可变

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

下面是一种扩展操作码的技术

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

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

操作类型

1.数据传送

2. 算术逻辑操作

3. 移位操作

4. 转移

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

二丶地址码

地址码结构

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

四地址


取指令访问内存,4 A1,A2都是内存地址,A3结果也要在内存中,A4也要

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

三地址


现代计算机往往用PC寄存器来代替A4,虽然地址码长度变长,增大了寻找范围,但还是四次访存

二地址


将结果保存在A1或者A2中,访存次数依旧是四次

单地址


如果一个操作数在ACC中,且把结果放在寄存器ACC中,那么变成单地址,两次访存

零地址

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

操作数类型

三丶指令字长


所以

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

内存中数据的存储

数据内部存放

如果存放01234567H

数据间存放

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

寻址方式

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

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

图解寻址方式

相对寻址:

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

基址寻址:

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

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

变址寻址

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

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


转载:https://blog.csdn.net/qq_42146775/article/details/106797793
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场