4-1指令格式

学习目标:

理解概念


学习内容:

概念:
1、 操作码、地址码的概念
2、 根据地址码数目不同分类
3、 根据指令长度分类
4、 根据操作码的长度不同分类
5、 根据操作类型分类


1.操作码、地址码的概念

在这里插入图片描述
PC存放当前欲执行指令的地址,而指令的地址码字段则保存操作数地址。

2.根据地址码数目不同分类

2.1零地址指令(堆栈运算指令)

在这里插入图片描述
①不需要操作数,如空操作、停机、关中断等指令
②堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶。如数据结构中的“后缀表达式”在计算机中的操作,下面以“AB+CD*”举例。

在这里插入图片描述

2.2一地址指令

在这里插入图片描述
①只需要单操作数,如加1、减1、取反、求补等

        指令含义:OP(A1)→A1 ,完成一条指令需要3次访存:取指→读A1→写A1

②需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC,这种方式属于隐含寻址)

        指令含义:(ACC)OP(A1)→ACC,完成一条指令需要2次访存:取指→读A1

注:A1指某个主存地址,(A1)表示A1所指向的地址中的内容

2.3二、三地址指令

在这里插入图片描述
常用于需要两个操作数的算术运算、逻辑运算相关指令

指令含义:(A1)OP(A2)→A1

完成一条指令需要访存4次,取指→读A1→读A2→写A1
在这里插入图片描述
常用于需要两个操作数的算术运算、逻辑运算相关指令

指令含义:(A1)OP(A2)→A3

完成一条指令需要访存4次,取指→读A1→读A2→写A3

2.4四地址指令

在这里插入图片描述
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址

完成一条指令需要访存4次,取指→读A1→读A2→写A3

正常情况下:取指令之后PC+1指向下一条指令

四地址指令:执行指令后,将PC的值修改为A4所指地址

2.5地址码的位数有什么影响

答:n位地址码的直接寻址范围为2ⁿ,若指令总长度固定不变,则地址码数量越多,寻址能力越差

3.根据指令长度分类

3.1指令字长、机器字长、存储字长

指令字长:一条指令的总长度(可能会变)

机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)

存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)

半字长指令、单字长指令、双字长指令――指令长度是机器字长的多少倍

指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令(32bit)需要两次访存

3.2定长指令字结构和变长指令字结构

定长指令字结构:指令系统中所有指今的长度都相等

变长指令字结构:指令系统中各种指令的长度不等

4.根据操作码的长度不同分类

定长操作码:指令系统中所有指令的操作码长度都相同

                   n位→2ⁿ条指令

可变长操作码:指令系统中各指令的操作码长度可变

5.根据操作类型分类

5.1数据传送(数据传送类,进行主存为CPU之间的数据传送)

     LOAD作用:把存储器中的数据放到寄存器中

     STORE作用:把寄存器中的数据放到存储器中

5.2算术逻辑操作(运算类)

     算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算

     逻辑:与、或、非、异或、位操作、位测试、位清除、位求反

5.3移位操作(运算类)

     算术移位、逻辑移位、循环移位(带进位和不带进位)

5.4.转移操作(程序控制类:改变程序执行的顺序,并使程序具有测试、分析、判断和循环执行的能力。)

程序控制类指令主要包括无条件转移、有条件转移、子程序调用和返回指令、循环指令等。

     无条件转移JMP

     条件转移JZ:结果为0;JO:结果溢出;JC:结果有进位

     调用和返回 CALL和RETURN

     陷阱(Trap)与陷阱指令

     循环指令

我们写的程序在执行时会遇到if、else,这时就会触发转移操作

5.5输入输出操作(输入输出类(I/O):进行CPU和I/O设备之间)

     CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

6.补充

  1. 中断隐指令是由硬件实现的,并不是指令系统中存在的指令,更不可能属于程序控制类指令。

  2. 采用不同寻址方式的目的是为了缩短指令字长,扩大寻址空间,提高编程的灵活性,但这也提高了指令译码的复杂度。

  3. 程序控制是靠转移指令而非寻址方式实现的。

  4. 无条件转移指令是指程序转移到新的地址后继续执行,因此必须给出下一条指令的执行地址,并送入程序计数器(PC),而不是将指令的地址码送入地址寄存器。

  5. ★为了缩短指令中某个地址段的位数,有效的方法是采取寄存器寻址。寄存器寻址中,只需指定寄存器的编号,因此能有效地缩短地址码的位数。

  6. ★简化地址结构的基本方法是尽量采用隐地址。隐地址不给出明显的操作数地址,而在指令中隐含操作数的地址,因此可以简化地址结构,如零地址指令。

  7. 程序计数器和指令寄存器的位数各取决于存储器的字数,指令字长。机器按字寻址,程序计数器(PC)给出下一条指令字的访存地址(指令在内存中的地址),因此取决于存储器的字数;指令寄存器(IR)用于接收取得的指令,因此取决于指令字长。

  8. 转移指令、子程序调用与返回指令用于解决变动程序中指令执行次序的需求,而不是数据调用次序的需求

  9. 特权指令,通常仅用于实现系统软件,这类指令一般不提供给用户

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值