指令
# 指令
# 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增量或减量操作
数据寻址方式: