指令系统

        CPU所能完成的操作是由其执行的指令决定的,这些指令称为机器指令。CPU所能执行的的有机器指令的集合称为该CPU的指令系统。指令系统设计的好坏、功能的强弱,对整个计算机会产生很大的影响,指令系统是计算机中硬件与软件之间的接口。

1.指令格式

指令是指挥计算机完成各种操作的基本命令。一般来说,一条指令包括两个基本组成部分:操作码和地址码。操作码说明指令的功能及操作性质。地址码用来指出指令的操作对象,它指出操作数或操作数据的地址及指令执行结果的地址。操作码用二进制编码来表示,该字段越长,所能表示的指令就越多。

2.寻址方式

寻址方式就是如何对指令中的地址字段进行解释,以获得操作数的方法或获得程序转移地址的方法。下面结合8086CPU说明几咱与操作数有关的寻址方式。

 (1)立即寻址。操作数就包含在指令中。在形成指令的机器代码形式时,立即数就跟在指令操作码的后面,取出指令时即可得到操作数。

(2)直接寻址。操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。

(3)寄存器寻址。操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。

(4)寄存器间接寻址。操作数存入在内存单元中,操作数所在存储单元的地址在某个寄存器中。

(5)间接寻址。这种寻址方式下,指令中给出操作数地址的地址。

(6)相对寻址。指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。

(7)变址寻址。操作数地址等于变址寄存器的内容加偏移量。

相对寻址与变址寻址的区别是:用相对寻址方式形成操作数地址是以本指令的地址作为基准地址,再加上偏移量。这里本指令的地址随程序的存储位置而定,用变址寻址方式形成操作数据的地址是以变址寄存器的内容作为基准地址,再加上偏移量。

3.指令的种类

尽管为不同CPU所设计的指令系统各不相同,但基本上所有的计算机都包含以下几类型的指令。

1)数据传送指令。这类指令将数据从一个地方传送到另一个地方。主要包括如下指令。

 (1)数据传送指令。这类指令中一般有两个操作数地址:源操作数地址和目的操作数地址。(2)数据交换指令。(3)堆栈操作指令。

2)输入/输出(I/O)类指令。这类指令用于实现主机与外设间的信息传送,包括数据的输入/输出、主机向外设发出控制命令以及输入外设的状态。

3)算术运算类指令。这类指令支持 CPU实现加、减、乘、除等算术运算。主要包括加法、减法、乘法、除法、求补、加1、减1和比较等指令。

4)逻辑运算指令。这类指令支持CPU实现各种逻辑运算。一般的CPU都会设置逻辑运算指令,主要包括与、或、异或、取反等指令。

5)移位操作指令。根据移位的方向,当操作数的各位顺序向左移动一位称为左移,同样,当操作数的各位顺序向右移动一位称为右移。移位指令一般可分为算术移位、逻辑移位和循环移位三种类型。

(1)算术移位。算术移位指令对带符号操作数据进行移位。

(2)逻辑移位。逻辑移位全指令对无符号操作数进行移位。

(3)循环移位。循环移位指令分为不带进位的循环移位和带进位的循环左移两种,左移时将最高位移到最低位,右移时将最低位移到最高位。

6)程序控制类指令。程序控制类指令用于改变指令执行的顺序和控制流的方向。主要包括以下几种:跳转指令、子程序调用和返回指令、陷阱指令。

7)串操作类指令。现代计算机经常需要处理大量的字符串信息。因此,一般都会设置字符串操作指令。常见的串操作指令包括串传送指令、串比较指令、串搜索指令、串替换指令、串转换指令和串抽取指令等。

8)处理机控制类指令。这类指令用于对CPU实施控制。

9)数据转换类指令。有的指令系统中还会设置数据转抽象指令。例如:将十进制数转换为二进制数、二进制数转换为十进制数、定点数转换为浮点数、浮点数转换为定点数等指令。



——摘自《程序员教程》


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值