指令系统

指令系统

  • 一个完善的指令系统应满足:
1:完备性
2:有效性
3:规整性
4:兼容性

指令格式

一条指令的结构:

操作码字段op地址码字段A

操作码op

1:操作码op表示指令应进行什么性质的操作,比如:加减乘除,取数,存数等

2:不同指令用操作码的不同编码来表示,每一种编码代表一种指令;

3:一个包含n位的操作码可以表示2^n条指令,
如一个系统只有8条指令,那么只需要3位操作码;

4:对于一个机器的指令系统,在指令字中操作码和地址码长度通常是固定的。
在单片机中,由于指令字较短,为了充分利用指令字长度,指令字的操作码和地址码都是不固定的

地址码A

一条指令有几个操作数地址,就称该指令为几地址指令

  • 一般的操作数有被操作数(用A表示),操作数以及操作结果
  • 地址格式分类
    • 三地址指令

      OP码A1A2A3

      三地址指令A1,A2,A3通常指定为运算器中通用寄存器的地址

    • 二地址指令

      OP码A1A2

      其中地址A1兼作存放操作结果的地址

    • 一地址指令

      OP码A1

      指定一个操作数,另一个操作数地址是隐含的

    • 零地址指令

      OP码(空 )

地址码字段A指的是操作数地址,而不是操作数本身

二地址指令格式

从操作数的物理位置来说,可分为三类:

1:存储器存储器(SS)型
    访问内存的指令格式
    
2:寄存器寄存器(RR)型
    访问寄存器的指令格式
    
3:寄存器-存储器(RS)型
    既要访问内存单元,又要访问寄存器
举例

例题:某16位机的指令如下所示,是分析指令格式的特点

15 ~99~77~43~0
OP-源寄存器目标寄存器
解:
1:单字长二地址指令
2:操作码OP可以指定2^7 = 128条指令
3:源寄存器和目的寄存器都是通用寄存器,所以是RR型指令,两个操作数均在寄存器中
4:这种指令结构常用于算术逻辑运算指令

指令字长度

一个指令字包含二进制代码的位数,称为指令字长度

什么是机器字长?

计算机能直接处理的二进制数据位数,决定了计算机的运算精度,通常与主存单元的位数一致

  • 单字长指令:指令字长度等于机器字长度的指令
  • 双字长指令:指令字长度等于连哥哥机器字长度的指令

操作数类型

机器指令对数据进行操作,数据可分为

  • 地址数据
  • 数值数据
  • 字符数据
  • 逻辑数据

指令和数据寻址方式

存储器:既可用来存放数据,又可以存放指令

指令寻址方式

  • 两种:
    • 顺序寻址方式
    • 跳跃寻址方式
顺序寻址方式

从存储器取出一条指令执行后,接着取第二条执行…,在这个过程中,必须使用程序计数器PC来计数指令的顺序号

程序计数器PC的:保存的是下一条指令的地址

跳跃寻址方式

跳跃是指下条指令地址不是程序计数器给出,而是本条指令给出

操作数基本寻址方式

操作数来源:

1:由指令中的地址码部分直接给出操作数,简单便捷,但是操作数固定不变

2:将擦欧总书存放在CPU内的通用寄存器中,可以快速获取操作数,但是存储的操作数数量有限

3:将操作数存放在内存的数据区中
   对于内存寻址,既可以在指令中直接给出操作数的实际访存地址(有效地址),也可以在指令的地址字段给出形式地址,在指令执行时,将形式地址依据某种形式变换为有效地址再取操作数
   
   形成操作数的有效地址的方法,称为操作数的寻址方式

偏移量:形式地址A,是指令字结构给定的地址量

基本寻址方式
方式算法
隐含寻址操作数在专用寄存器中
立即寻址操作数=A
直接寻址EA=A
间接寻址EA=(A)
寄存器寻址EA=r
寄存器间接寻址EA=®
偏移寻址EA=A+®
段寻址EA=A+®
堆栈寻址EA=栈顶
  1. 隐含地址:给的是指令中隐藏着操作数的地址
  2. 立即寻址:操作数在指令中,给的是操作数本身,指令中包含的操作数立即可用,节省了访问内存的时间
  3. 直接寻址:操作数主存地址在指令中,直接给出操作数的地址不需要经过某种变换
  4. 间接寻址:形式字段A给出的是操作数地址二点指示器,而不操作数的真正地址
  5. 寄存器寻址:操作数放在CPU的通用寄存器中
  6. 寄存器间接寻址:指令格式中的 寄存器内容是操作数地址,该地址指明的操作数在内存中
  7. 偏移寻址
    相对寻址:隐含引用的专用寄存器是程序计数器PC,即EA=A+(PC)
    基址寻址
    变址寻址:每次操作后,变址寄存器内容加1,即EA=A+®,R->(R+1);
  8. 堆栈寄存器:数据进栈使用PUSH指令,将数据压入栈顶地址,堆栈指示器减1;数据退栈时,使用POP指令,数据从栈定地址弹出,堆栈指示器加1

典型指令

一个较完善的指令系统,应当有数据处理,数据存储,数据传送,程序控制四大类指令

1:数据传送指令
   主要用于主存和寄存器之间或者寄存器和寄存器之间的数据传送

2:算术运算指令
   主要用于定点或浮点的算术运算

3:逻辑运算指令
   主要用于无符号数的位操作,代码转换,判断及运算

4:程序控制指令
   一般采用直接寻址和相对寻址方式来确定

5:输入输出指令
   输入输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之间的信息传送;

6:字符串处理指令
   非数值处理指令,一般包括字符串传送,字符串转换,字符串比较等,在文字编辑中对大量字符串进行处理

7:特权指令
   具有特殊权限的指令,只用于操作系统或其他系统全歼,一般不直接提供给用户使用;

8:其他指令
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值