目录
一、机器指令
1.1指令的一般格式
1.操作码:
2.地址码
1.2指令字长
二、操作数类型和操作类型
2.1操作数类型
2.2操作类型
三、寻址方式(重要)
3.1指令寻址
1.顺序寻址
2.跳跃寻址
3.2数据寻址
1.立即寻址
2.直接寻址
3.隐含寻址
4.间接寻址
5.寄存器寻址
6.寄存器间接寻址
7.基址寻址
8.变址寻址
9.相对寻址
四、指令举例
一、机器指令
- 机器语言是由一条条语句构成的,每一条语句又能准确表达某种语义。
- 人们习惯把每一条机器语言的语句称为机器指令,而又将全部机器指令的集合称为机器的指令系统。
- 指令的一般格式
1.1指令的一般格式
指令由操作码与地址码两部分组成
1.操作码:
操作码用来指明该指令所要完成的操作,如加法、减法、转送、转移、移位等。
操作码的长度可以是固定的也可以是变化的
-固定长度的操作码:所有指令长度均相同。特点是控制简单,速度
快,适用于指令条数不多的场合。
-可变长度的操作码:频繁使用的指令用位数较少的操作码,不常使
用的指令可利用操作码扩展技术进行扩展。
指令助记符:
2.地址码
地址码用来指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。
(1)四地址指令
(A1)OP(A2)——>A3,A4是下一条指令的地址
其中,OP为操作码;A1为第一操作数地址;A2为第二操作数地址;A3为结果地址;A4为下一条指令的地址。
完成一条四地址指令,共需访问4次存储器(取指令一次、去操作数两次、存放结果一次)
(2)三地址指令
(A1)OP(A2)——>A3
完成一条三地址指令也需访问4次存储器
(3)二地址指令
A1是目的操作数,保存运算结果。
(A1)OP(A2)——>A1或者(A1)OP(A2)——>A2均需访问4次存储器
(A1)OP(A2)——>ACC,它完成一条指令只需3次访存。
A1字段即代表源操作数的地址,又代表存放本次运算结果的地址。
(4)一地址指令
适用情况:
①单操作数指令,OP(A1)——>A1。(完成一条指令需访存3次)
②(ACC)OP(A1)--->ACC。(完成一条二地址指令只需两次访存)
ACC即存放参与运算的操作数,又存放运算的中间结果。
(5)零地址指令
零地址指令在指令字中无地址码,例如:空操作(NOP).停机(HLT)等
汇总
1.2指令字长
指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数。
二、操作数类型和操作类型
2.1操作数类型
- 地址:可认为是一个无符号的整数
- 数字:定点数、浮点数和十进制数
- 字符:普遍使用ASCII码
- 逻辑数据:例如n个0和1的组合不是被看作算术数字,而是被看做逻辑数
2.2操作类型
(1)数据传送:包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送
(2)算数逻辑操作:实现算术运算(加、减、乘、除)与逻辑运算(与、或、非)
(3)移位:可分为算术移位、逻辑移位和循环移位三种。
(4)转移:
①. 无条件转移:不受任何条件约束(JMP跳转指令)
② 有条件转移:根据当前指令的执行结果来决定是否需要转移(零标志位、溢出标志位、负标志位等等)
③ 调用与返回:将具有特定功能的程序段重复使用(CALL与RETURN)
④ 陷阱与陷阱指令:是一种意外事故的中断
三、寻址方式(重要)
寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。
3.1指令寻址
1.顺序寻址
顺序寻址是使程序计数器PC+1自动形成下一条指令的地址;
2.跳跃寻址
跳跃寻址则通过转移类指令实现,由本条指令给出下一条指令的地址的计算方式,得到地址偏移量/相对地址或绝对地址。
3.2数据寻址
数据寻址:寻找操作数的地址。由寻址特征指出寻址方式,结合形式地址A,得出操作数有效地址。
1.立即寻址
地址字段A指出的不是操作数的地址,而是操作数本身,又称立即数
共访存1次(取指令访存1次,执行指令访存0次)
优点:指令在执行阶段不访问主存,指令执行时间最短。
缺点:A的位数限制了立即数的范围
2.直接寻址
指令字中的形式地址A是操作数的真实地址EA,即EA=A
共访存2次(取指令访存1次,执行指令访存1次)
优点:简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址。
缺点:A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改
3.隐含寻址
访存0次
优点:有利于缩短指令字长,简化地址结构。
缺点:需增加存储操作数或隐含地址的硬件
4.间接寻址
指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。
共访存3次(取指令访存1次,执行指令访存2次)
优点:可扩大寻址范围(有效地址 EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可方便地完成子程序返回)。
缺点:指令在执行阶段要多次访存,速度过慢,一般问到扩大寻址范围时,通常指的是这种方式
5.寄存器寻址
寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即 EA=Ri,其操作数在由Ri所指的寄存器内。
优点:指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小(可有效缩短指令中某个地址段的位数),使得指令字短且因不用访存,所以执行速度快。
缺点:寄存器价格昂贵,计算机中的寄存器个数有限。
6.寄存器间接寻址
寄存器间接寻址是指在寄存器 Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)。
特点:与一般间接寻址相比速度更快
7.基址寻址
基址寻址是指将CPU中基址寄存器的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(BR)+A。其中基址寄存器既可采用专用寄存器,又可采用通用寄存器。
优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数),有利于多道程序设计,并可用于编制浮动程序,但偏移量(形式地址A)的位数较短
8.变址寻址
变址寻址是指有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和,即 EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
优点:可扩大寻址范围;有利于数组处理,特别适合编制循环程序。
9.相对寻址
把程序计数器的内容加上指令格式中的形式地址A而形成操作数的有效地址,EA=(PC)+A。
优点:操作数的地址不是固定的,它随PC值的变化而变化,且与指令地址之间总是相差一个固定值,因此便于程序浮动。相对寻址广泛应用于转移指令。对于多道程序设计来说最重要