指令系统2 - 寻址方式

指令的寻址方式

符号说明:

PC: 指令寄存器
ACC:累加器
A: 指令的形式地址,在不同寻址方式中含义不同,可以是直接操作数,或者内存地址或者寄存器编号
(A): 形式地址中的值
EA : 指令的真实地址
R: 寄存器
OP:操作码
BR: 基址寄存器
IX:变址寄存器
SP:stack pointer 堆栈指针


指令寻址方式
  1. 顺序寻址
    (PC) 增加一个指令字长,自动形成下一条指令地址

  2. 跳跃寻址
    在本条指令中的操作数中给出了下一条操作指令的地址
    是否跳跃,由状态寄存器和操作数本身控制

跳跃的地址分成两个情况: 绝对地址 或者 相对地址(当对于当前地址)

跳跃的结果是修改PC的值,所以跳跃之后的地址还是由(PC)给出的

数据寻址方式汇总

由于数据寻址方式特别多,在一些指令系统中存在很多寻址方式例如(CISC,像x86)
因此需要额外的寻址特征 位数来表示,例如有8种寻址方式在使用,需要3bit的位数来表示寻址特征

    标准形式如。|OP|寻址特征码|A| 

寻址方式汇总

寻址方式 表达式 访存次数 备注说明
隐含寻址 OP+ 特征码 +A/- (+(ACC)) 0/1 规定ACC为第一/二个操作数地址,减少指令长,但增加隐含地址的硬件
立即寻址 OP + 特征码 +EA 0 操作数就是操作数本身,不妨问主存
直接寻址 OP + 特征码 + A 1 (A)=EA,A决定了地址,不容易修改
间接寻址 OP + 特征码 + A N (A)=A1,(A1)=A2,(An)=EA, 当主存第一位0表示真实EA
寄存器寻址 OP + 特征码 + R 0 EA=R编号比较少,所以地址码短。R数量有限,价格按规
寄存器间接寻址 OP + 特征码 +R 1 EA=(R)
相对寻址 OP + 特征码 + A 1 (PC) + A,其中A可正可负补码表示,便于程序浮动,常用于转移指令
基址寻址 OP + 特征码 + A 1 EA = (BR) + A.扩大寻址范围,不必考虑程序在主存位置,利于程序浮动,多道程序
变址寻址 OP + 特征码 + A 1 EA = (IX) + A, IX面向用户是偏移量,A是形式地址作为基址
堆栈寻址 OP 1 无操作数指令,每次push之后(SP)-1 ,每次pop之前(SP)+1

注意事项:
相对寻址PC的浮动: 例如OP + 相对寻址 + A
例如 JMP A ,操作码 JMP会自动执行 (PC) + 指令码长度 -> PC;
例如JMP占据2B的长度,最后的地址跳转到 (PC)=X
(PC)=X+2, X + 2 + A ;

X86 汇编指令入门

简书
cnblog

上一篇:C语言调用WindowApi实现计算器


下一篇:出四则运算题目