机器指令:每一条机器语言的语句
指令系统:全部机器指令的集合
指令由操作码和地址码两部分组成
作用:指明该指令要完成的操作
位数:反映机器的操作种类,即机器允许的指令条数
长度:可以是固定的,可以是变化的
n 地址指令的操作码的高位不可以复用 n+1 地址指令的操作码
尽量安排指令使用频度高的指令占用短的操作码,对使用频度低的指令可占用较长的操作码,以缩短经常使用的指令的译码时间
作用:指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一个指令的地址【地址:主存的地址、寄存器的地址、I/O 设备的地址】
(A1)OP(A2)—>(A3)
若地址字段均指示主存的地址,完成一条四地址指令,需访存四次,取指令一次,取操作数两次,存放结果一次
(A1)OP(A2)—>(A3)
后续指令的地址隐含在程序计数器 PC 中
若地址字段均指示主存的地址,完成一条四地址指令 四次访存
(A1)OP(A2)—>(A1) A1 字段既代表源操作数的地址,又代表存放本次运算结果的地址 四次访存
(A1)OP(A2)—>(A2) A2 字段既代表源操作数的地址,又代表中间结果的存放地址 四次访存
(A1)OP(A2)—>ACC 中间结果暂存于累加器 ACC 中 三次访存(取指、取操作数、取操作数 )
(ACC)OP(A1)—>ACC ACC 既存放参与运算的操作数,又存放运算的中间结果 两次访存(取指、取操作数)
零地址指令在指令中无地址码
空操作 NOP、停机 HLT ……这类指令只有操作码
子程序返回 RET、中断返回 IRET ……这类指令没有地址码,其操作数的地址隐含在堆栈指针 SP 中
硬件资源(PC、ACC……)承担指令字中需指明的地址码,在不改变指令字长的前提下,扩大指令操作数的直接寻址范围,缩短指令字长,减少访存次数
地址字段可用来表示寄存器。当 CPU 中含有多个通用寄存器时,对每个寄存器赋予一个编号,便可指明源操作数和结果存放在的寄存器,地址字段表示寄存器也有三地址、二地址、一地址之分,其共同点是,在指令的执行阶段都不必访问存储器,直接访问寄存器,提高机器运行速度 一次访存(取指)
决定因素:操作码的长度、操作数地址的长度和操作数地址的个数
不同机器的指令字长不同
定义:指确定本条指令的数据地址以及下一条将要执行的指令地址的方法
与硬件结构紧密相关,直接影响指令格式和指令功能
分类:指令寻址、数据寻址
分类:顺序寻址、跳跃寻址
顺序寻址:通过程序计数器 PC +1,自动形成下一条指令的地址
跳跃寻址:通过转移类指令实现
数据寻址方式种类多,在指令字中必须设一字段指明属于哪一种寻址方式
形式地址 A:指令的地址码字段,通常不表示操作数的真实地址
有效地址 EA:操作数的真实地址,由寻址方式和形式地址共同确定
特点:操作数本身设在指令字内,形式地址 A 不是操作数的地址,而是操作数本身,称为立即数,数据采用补码形式存放
“#”表示立即寻址特征标记
优点:只要取出指令,便可立即获得操作数,指令执行阶段不必再访问存储器
缺点:A 的位数限制了这类指令所表述的立即数的范围
访存:一条指令的执行,不考虑存结果,访存一次(取指令)
特点:指令字中的形式地址 A 是操作数的真实地址 EA,即 EA=A
优点:寻找操作数比较简单,不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次
缺点:A 的位数限制了操作数的寻址范围,必须修改 A 的值,才能修改操作数的地址
访存:一条指令的执行,不考虑存结果,访存两次(取指令,取操作数)
特点:指令字中不明显地给出操作数的地址,其操作数的地址隐含再操作码或某个寄存器中
优点:有利于缩短指令字长
特点:有效地址由形式地址间接提供 EA=(A)
多次间接寻址时,可用存储字的首位标志间接寻址是否结束,当存储字首位为“1”时,标明还需继续访存寻址;当存储字首位为“0”时,标明该存储字即为 EA,存储字的首位不能作为 EA 的组成部分
优点:扩大了操作数的寻址范围【因为 A 的位数通常小于指令字长,存储字长可以与指令字长相等】,便于编制程序
缺点:指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),使指令执行时间延长
特点:地址码字段直接指出寄存器的编号 EA=Ri ,操作数在由 Ri 所指的寄存器内
优点:因为操作数不在主存中,所以寄存器寻址在指令执行阶段无须访存,减少了执行时间;由于地址字段只需指明寄存器编号,故指令字较短,节省了存储空间
访存:指令执行阶段不需要访存
特点:Ri 中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址 EA=(Ri)
访存:比间接寻址少访存一次,指令的执行阶段需要访存
特点:设基址寄存器 BR,其操作数的有效地址 EA 等于指令字中的形式地址与基址寄存器中内容相加,即 EA=A+(BR)
分类:隐式、显式
优点:扩大操作数的寻址范围(基址寄存器的位数可以大于形式地址 A 的位数)
基址寻址在多道程序中极为有用,操作系统或管理程序根据主存的使用状况,赋予基址寄存器内一个初始值(基地址),便可将用户程序的逻辑地址转换为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域
在程序执行过程中,用户不知道自己的程序在主存的哪个空间,用户不可修改基址寄存器的内容,以确保系统安全可靠地运行
特点:有效地址 EA 等于指令字中的形式地址 A 与变址寄存器 IX 的内容相加之和,即 EA=A+(IX)
变址寻址和基址寻址的区别:
变址寻址与其他寻址方式结合:
特点:有效地址是将程序计数器 PC 的内容(即当前指令的地址)与指令字中的形式地址 A 相加而成,即
EA=(PC)+A
相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,由指令字的形式地址 A 给出,A 称为位移量【A可正可负,通常用补码表示】
若位移量为 8 位,则指令的寻址范围为 (PC)+127~(PC)-128
最大特点:转移地址不固定,可随 PC 值的变化而变
相对寻址可与间接寻址配合使用
堆栈寻址要求计算机中设有堆栈
堆栈既可用寄存器组(硬堆栈)实现,也可利用主存的一部分空间作堆栈(软堆栈)
堆栈的运行方式为先进后出和先进先出两种
RISC 精简指令系统计算机
CISC 复杂指令系统计算机
紫色是 CISC 的特点