指令寻址方式笔记
文章目录指令寻址方式笔记立即寻址直接寻址寄存器寻址寄存器间接寻址横向对比一句话记忆指令寻址方式笔记指令寻址方式本质上是在回答一个问题CPU 执行一条指令时去哪里找操作数不同的寻址方式决定了操作数藏在哪里也直接影响了执行速度和指令长度。立即寻址操作数直接包含在指令本身中不需要再去内存或寄存器里取。操作数在哪就在指令里紧跟在操作码后面。特点取操作数最快因为不需要额外的访存操作CPU 取指令的同时就拿到了操作数。局限操作数的大小受指令长度限制通常只能表示较小的立即数而且这个数是写死在指令里的不能动态改变。示例MOV R1, #5—— 把立即数 5 直接送入寄存器 R1这里的#5就是立即数。直接寻址指令中给出的是操作数在内存中的地址CPU 根据这个地址去内存中取操作数。操作数在哪在内存中指令里存放的是它的内存地址。特点指令较短只需存一个地址但需要一次额外的内存访问才能拿到操作数速度比立即寻址慢。局限地址字段长度有限能直接寻址的内存范围受限于地址字段的位数。示例MOV R1, [1000]—— 从内存地址 1000 处取出数据放入寄存器 R1。寄存器寻址操作数存放在 CPU 内部的寄存器中指令中给出的是寄存器编号。操作数在哪在寄存器中指令里存放的是寄存器编号。特点速度很快因为寄存器在 CPU 内部访问速度远高于内存指令也很短寄存器编号只需要很少的位数就能表示。局限寄存器数量有限能同时使用的操作数个数受限。示例MOV R1, R2—— 把寄存器 R2 的内容复制到寄存器 R1。寄存器间接寻址寄存器中存放的不是操作数本身而是操作数在内存中的地址。CPU 先从寄存器中取出地址再用这个地址去内存中取操作数。操作数在哪在内存中但地址不是直接写在指令里而是存在寄存器中。特点比直接寻址更灵活因为地址可以在运行时通过修改寄存器的值来改变适合处理数组、指针等场景。但需要一次寄存器读取 一次内存访问。局限多了一步间接操作速度不如直接寻址和寄存器寻址。示例MOV R1, [R2]—— R2 中存放的是一个内存地址CPU 从该地址取出数据放入 R1。横向对比寻址方式操作数位置访存次数速度灵活性立即寻址指令内部0 次最快最低直接寻址内存地址在指令中1 次较慢一般寄存器寻址寄存器0 次快一般寄存器间接寻址内存地址在寄存器中1 次较慢较高一句话记忆立即数就在指令里拿来就用。直接指令告诉你地址去内存按地址找。寄存器数就在寄存器里直接读。寄存器间接寄存器里存的是地址拿着地址去内存找数。核心规律操作数离 CPU 越近速度越快操作数的地址越灵活适用范围越广。速度和灵活性往往是此消彼长的关系。速度排序从快到慢立即寻址 ≥ 寄存器寻址 直接寻址 ≈ 寄存器间接寻址需要我帮你补充其他常见寻址方式吗比如间接寻址、变址寻址、基址寻址和相对寻址