一、机器指令
每一条 机器语言 的指令叫 机器指令
全部机器指令的 集合 叫机器的 指令系统
指令由 操作码 和 地址码 组成,指令字长 与操作码长度、操作数地址长度、操作数地址个数有关。
操作码:指明该指令要完成的操作、对什么类型的数据进行操作(有的指令系统还在此处说明了操作数的寻址方式),其长度可以固定,也可变化,操作码位数随地址数减少而增加。
地址码:指出指令操作数地址、结果地址、下一条指令地址。
注:
操作吗并非一定如上图所示,集中在一个区域,可以分散在指令不同字段中。
使用频率高的指令用短操作码,使用频率低的用长操作码,可缩短编译时间
(1)四地址指令
格式:
在执行过程中,访存 4 次,指令直接寻址范围太小
由于程序计数器 PC 有计数功能,可自动形成下一条指令地址,故可得三地址指令。
(2)三地址指令
格式:
在执行过程中,访存 4 次。
若将中间计算结果放入 CPU 寄存器中(而不放入主存),则可省去结果地址,得到二地址指令。
(3)二地址指令
格式:
在执行过程中,访存 3 次。
若将一位操作数直接放于运算器 ACC 中,则得到一地址指令。
(4)一地址指令
格式:
在执行过程中,访存 2 次。
(5)零地址指令
无地址码,如 进栈出栈指令。
二、操作数类型和操作类型
1.操作数类型
地址:无符号整数
数字:定点数、浮点数、十进制数
字符:ASCII
逻辑数据
2.数据存放方式
任意位置开始:浪费存储空间,访存时间短
每次从一个字起始位置开始
按“边界对准”存储:从地址整数倍位置开始访问。如下图:
3.操作类型
数据传送
算数逻辑运算
移位:分算术移位、逻辑移位、循环移位
转移
输入输出(对于 I/O 单独编址的计算机,才有输入输出指令)
其他:如等待指令、停机指令等
转移:
分无条件转移、条件转移、调用与返回、陷阱与陷阱指令
调用与返回指令通常配合使用
陷阱指令通常不提供给用户,作为隐指令,在有意外故障时由 CPU 自动产生并执行。
三、寻址方式
寻址方式指确定本条指令的数据地址,以及下一条指令的地址的方法。
分为:
指令寻址
数据寻址
1.指令寻址
顺序寻址:PC 自动加 1 ,形成下一条指令地址(注意,此处 “1”的含义,若指令字长 32 字节,存储单元 8 字节,则此时 PC+4)
跳跃寻址:由转移指令指出
2.数据寻址
(1)立即寻址
特点:形式地址 A 不是地址,而是操作数本身,又称为立即数。
执行阶段不必访存。
(2)直接寻址
特点:形式地址 A 就是有效地址
执行阶段只访存 1 次,但是必须通过修改 A 的值才可修改操作数地址。
(3)隐含寻址
特点:指令字中补明显给出操作数地址,地址隐含于操作码或某个寄存器
5)寄存器(直接)寻址
A 为寄存器编号,操作数在 A 所指寄存器中。
执行时无需访存,执行时间短。
(6)寄存器间接寻址
A 为寄存器编号, A 所指寄存器中存有效地址。
执行阶段仍需访存,便于编写循环程序。
(7)基址寻址
有效地址 EA = 变址寄存器 IX 中地址 + A
与基址寻址不同:
寄存器的内容由操作系统、管理程序确定,A 可变。
变址寄存器内容由用户确基址定,A 不可变。,主要用于处理数组问题。
(9)相对寻址
其有效地址为程序计数器 PC 中的地址,与指令字中的形式地址 A 相加而得。
(10)堆栈寻址
堆栈寻址指令字中没有形式代码字段,属于零地址指令。