概述
指令是要计算机执行某种操作的命令。从计算机的组成层次结构来说分为:
- 微指令(微程序级别的命令,属于硬件)
- 机器指令(在上下两者之间,通常简称为指令)
- 宏指令(由若干条机器指令组成的软件指令,属于软件)
计算机的程序由一系列机器指令组成。
一台计算机中所有机器指令的集合称为这台计算机的指令系统。
不同机器有不同的指令系统,一个比较完善的指令系统应当包含数据传送类指令、算术运算类指令、逻辑运算类指令、程序控制类指令、I/O类指令、字符串类指令、系统控制类指令。
RISC(精简指令系统计算机)指令系统是主流,也是==CISC(复杂指令系统计算机)==指令系统的改进。
RISC的特点:
- 指令条数少
- 指令长度固定(非固定长度指令格式是典型的CISC结构特征)
- 只有取数和存数指令访问存储器
系列计算机
是指基本指令系统相同、基本体系结构相同的一系列计算机。如Pentium系列(是复杂指令系统)。
为了保证兼容,新机种的指令系统一定包含旧机种的全部指令。”向上兼容“
低级语言
计算机语言分为:高级语言和低级语言
低级语言分:
- 机器语言(二进制语言):计算机唯一能直接识别和执行的语言
- 汇编语言(符号语言)
指令格式
是指令字用二进制代码表示的结构形式,通常由:操作码字段(表征指令的操作特性与功能)和地址码字段(指示操作数的地址)组成。
目前多采用二地址、单地址、零地址混合方式的指令格式。
指令字长度分为:单字长、半字长、双字长三种形式。
操作码
对指令系统的每一条指令都要规定一个操作码。
组成操作码字段的位数一般取决于计算机指令系统的规模。例如,一个指令系统只有8条指令,则有3位操作码就够了。一般一个包含n位的操作码最多能表示2n条指令。
地址码
零地址指令
指令字中只有操作码,没有地址码。
例如:停机指令、空操作、消除等
一地址指令
另一个操作数是隐含的。
比如:
AC<—(AC)op (A)
(A指明的是操作数的地址)
二地址指令
A1<—(A1)op (A2)
- 访问内存的指令 SS型
- 访问寄存器的 RR型
- RS型
三地址指令
A3<—(A1)op (A2)
三地址指令中三个通常指定为运算器中通用寄存器的地址,是为了加快指令执行速度。
指令字长度
指一个指令字中包含二进制代码的位数。
有单字长、半字长、双字长。
机器字长是计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。其通常与主存单元的位数一致。
早期计算机使用多字长指令是为了提供足够的地址位来解决访问内存任何单元的寻址问题。但多字长指令必须两次或者三次访问内存以取出一整条指令,降低了CPU的运算速度,同时占用更多存储空间。
随着技术不断发展,指令字长度逐渐变成多于32位的固定长度。
指令和数据寻址方式
一、指令寻址方式
形成指令地址的方式。
顺序寻址
用程序计数器 Program Counting来计数指令的顺序号,该顺序号就是指令在内存中的地址。
跳跃寻址
(遇到条件转移或者无条件转义指令)
当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。
跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出的。跳跃之后,PC的内容随之改变。
二、数据寻址方式
形成操作数地址的方式。
操作数可放在专用寄存器、通用寄存器、内存和指令中。类型通常分为四类:
- 地址数据
- 数值数据
- 字符数据(也叫文本数据或者字符串)
目前广泛使用ASCII码,每个字符表示成7位代码,共有128个克表示字符,加上最高位最奇偶校验。 - 逻辑数据