指令

2/13/2019 计算机,base

# 指令

# 1. 指令格式

# 1.1 指令的基本格式

# 1.1.1 基本概念

指令又称机器指令,指示计算机执行某种操作的命令, 指令是机器语言的语句,是一组有意义的二进制代码 计算机运行的最小功能单位

# 1.1.2 指令的结构

操作码:指令要执行什么操作,功能

地址码:给出被操作信息或数据的地址 指令字长:一条指令包含的二进制代码的位数 与机器字长无关,可能等于、大于、小于机器字长

# 1.1.3 地址码的个数

零地址:不需要操作数

一地址:单操作数/双操作数指令

单:OP(A1) -> A1

双:(ACC)OP(A1) -> ACC

二地址:(A1)OP(A2) -> A1

三地址:(A1)OP(A2) -> A3

访存4此:取指1,取操作数2,存结果1

四地址:(A1)OP(A2) -> A3

A4是下一条要执行指令的地址

# 2.指令的寻址方式

指令寻址:寻找下一条将要执行的指令地址

数据寻址:寻找操作数的地址

# 2.1 指令寻址

顺序寻址:通过PC自动加1(1个指令字长)实现 (PC) + 1 -> PC(下一条指令地址)

跳跃寻址:通过转移类指令实现 本条指令给出下条指令的计算方式 本条指令修改PC值,由PC给出下条指令地址

# 2.2 数据寻址

形式地址A:地址码不是操作数真实地址

有效地址EA:形式地址结合寻址特征,计算出真实地址

# 2.3 数据寻址方式

**隐含寻址:**单地址指令,第二个操作数默认为ACC

立即寻址:

形式地址A即操作数本身,因此又称立即数,补码形式

特征位 # 表示立即寻址特征

优点:指令执行阶段不访存,执行时间短

缺点:立即数A的位数限制了范围

直接寻址:

形式地址不是真实地址,而是有效地址所在存储单元地址

操作数地址的地址,即EA=(A)

可以一次间址,也可以多次:1开头-地址;0开头-EA

优点: 可扩大寻址范围(有效地址EA位数大于A位数) 便于编制程序

缺点: 要访存多次,访问速度慢

寄存器寻址:

在指令字中直接给出操作数的寄存器编号,EA=Ri

优点: 指令执行阶段不访存,之访问寄存器,速度快 支持向量/矩阵运算

缺点: 要寄存器价格昂贵,个数有限

寄存器间接寻址:

寄存器Ri给出操作数主存单元地址,EA=(Ri)

优点:比一般间接寻址速度快

缺点:但指令执行阶段需要访存(操作数在主存中)

基址寻址:

将基址寄存器BR内容加上指令中的形式地址A,得到有效地址

即EA=(BR)+A,基址寄存器可采用专用寄存器,可通用寄存器

基地址不变-基址寄存器内容;偏移量可变-形式地址

优点:

​ 可扩大寻址范围

​ 用户不必考虑自己程序存于主存的哪个区域

​ 有利于多道程序,可用于浮动程序

缺点:偏移量(形式地址A)位数较短

变址寻址:

有效地址EA等于形式地址A与变址寄存器IX之和 即EA=(IX)+A (IX为专用/通用寄存器) 基地址不变-形式地址;偏移量可变-变址寄存器

优点: 可扩大寻址范围(变址寄存器位数足以表示整个存储空间) 便于处理数组(A为数组首地址,不断改变IX内容,可得数组任一地址)

缺点:基地址(形式地址A)位数较短

相对寻址:

把PC内容加上形式地址A,得到操作数有效地址,即EA=(PC)+A A相对于当前地址的偏移量,可正可负,补码

优点:操作数地址不是固定的,随PC变化

缺点: 操作数地址与指令地址相差一个固定值, 便于程序浮动,应用于转移指令

堆栈寻址:

存储器或专用寄存器组中一块特定的存储区(LIFO,后进先出) 读写地址由特定寄存器给出,该寄存器叫做堆栈指针(SP) 适用于堆栈结构计算机,多用无操作数指令, 因为操作数地址都隐含使用了SP 读写前后伴有自动完成对SP增量或减量操作

数据寻址方式:

Last Updated: 12/4/2022, 6:35:30 PM