第四章 02指令的寻址方式

一、指令寻址

1.1 本节大纲

第四章 02指令的寻址方式
  • 基本概念: 指令寻址是指确定下一条指令在主存中存放地址的过程,由程序计数器(PC)实现
  • 两种方式:
    • 顺序寻址:(PC)+”1″→PC
    • 跳跃寻址:通过转移指令改变PC值
  • 指令结构: 一条指令包含操作码(OP)和地址码(可能有多个)

1.2 回忆:计算机的工作过程

第四章 02指令的寻址方式
  • 程序计数器作用: PC始终指向下一条待执行指令的地址
  • 执行流程:
    • 初始PC=0,指向第一条指令
    • 取指令后PC自动加”1″(具体加值取决于系统特性)
    • 执行当前指令
    • 重复上述过程

1.3 指令寻址 – 顺序寻址

第四章 02指令的寻址方式

主存的编址发生概念,地址也发生改变

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

1.4 跳跃寻址 – 由转移指令指出

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 实现方式: 通过转移类指令(如JMP)直接修改PC值
  • 执行过程:
    • 取指令后PC仍按顺序+1
    • 执行转移指令时强制修改PC为目标地址
    • 示例:执行JMP7指令后PC值被强制改为7
  • 特点: 改变程序正常执行流,实现非顺序执行

1.5 本节回顾

第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 核心概念: 通过PC确定下条指令地址
  • 顺序寻址要点:
    • 取指令后PC必然更新
    • “1”代表指令字长单位
  • 跳跃寻址要点: 执行转移指令导致PC值改变
  • 执行阶段: 所有指令都包含”取指令”和”执行指令”两个阶段

二、数据寻址

2.1 数据寻址 VS 数据寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式

指令寻址的定义

  • 核心概念:确定CPU下一条要执行指令的存放地址
  • 实现方式:始终由程序计数器PC给出指令地址
  • 两种类型:
    • 顺序寻址:PC自动+1
    • 跳跃寻址:通过JMP等指令改变PC值

数据寻址的定义

  • 核心概念:确定指令中地址码(A)指明的真实操作数地址
  • 组成部分:指令由操作码(OP)和地址码(A)组成
  • 典型示例:
    • LDA 1000:操作码为LDA,地址码为1000
    • ADD 1001:操作码为ADD,地址码为1001

数据寻址的复杂性

  • 地址解释多样性:地址码可能表示真实地址、偏移量或立即数
  • 程序存储问题:程序不一定从地址0开始存储,需要灵活解释地址
  • 示例说明:
    • 程序从地址100开始存储时,JMP 7应解释为跳转到107(100+7)
    • 程序从地址0开始存储时,JMP 7直接跳转到7

2.2 知识总览 – 10种寻址方式

第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 指令结构发展:
    • 原始结构:操作码(OP) + 地址码(A)
    • 改进结构:操作码(OP) + 寻址特征 + 形式地址(A)
  • 寻址特征作用:用4位二进制标识10种寻址方式
  • 术语说明:
    • 形式地址(A):指令中给出的地址
    • 有效地址(EA):最终的操作数真实地址

2.3 数据寻址 – 直接寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 定义:EA = A,形式地址即真实地址
  • 优点:
    • 执行简单,无需地址转换
    • 执行速度快
  • 缺点:
    • 寻址范围受限(受地址码位数限制)
    • 地址修改不灵活

2.4 数据寻址 – 间接寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 定义:EA = (A),形式地址指向存有真实地址的单元
  • 访存次数:
    • 一次间址:执行期间2次
    • 多次间址:每多一级多1次访存
  • 优点:
    • 扩大寻址范围(可用更长地址)
    • 便于编程(支持多级调用)
  • 缺点:执行效率低(多次访存)

2.5 数据寻址 – 寄存器寻址

第四章 02指令的寻址方式
  • 定义:EA =Ri​,操作数直接在寄存器中
  • 访存次数:执行期间0次
  • 优点:
    • 执行速度最快
    • 指令字长短
    • 支持向量/矩阵运算
  • 缺点:寻址能力有限(寄存器数量少)

2.6 数据寻址 – 寄存器间接寻址

第四章 02指令的寻址方式
  • 定义:EA =(Ri),寄存器内容为操作数地址
  • 访存次数:执行期间1次
  • 特点:比主存间接寻址更快(寄存器访问快)

2.7 数据寻址 – 隐含寻址

第四章 02指令的寻址方式
  • 定义:操作数地址隐含在指令中(如ACC)
  • 访存次数:取决于隐含位置
  • 特点:
    • 缩短指令字长
    • 需要专用硬件支持

2.8 数据寻址 – 立即寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 定义:A即是操作数本身(立即数)
  • 访存次数:执行期间0次
  • 表示方法:常用#前缀标识(如#3)
  • 优点:执行速度最快
  • 缺点:数值范围受限(受地址码位数限制)

2.9 本节回顾

第四章 02指令的寻址方式
  • 关键对比:
    • 直接寻址:EA=A,访存1次
    • 一次间址:EA=(A),访存2次
    • 寄存器寻址:EA=Rii,访存0次
    • 立即寻址:A为操作数,访存0次
  • 学习重点:
    • 各种寻址方式的有效地址计算规则
    • 不同寻址方式的访存次数差异
    • 各种寻址方式的优缺点比较

三、数据寻址 – 偏移寻址

3.1 数据寻址示例

第四章 02指令的寻址方式
  • 直接寻址应用:当程序从地址0开始存放时,指令”LDA 1000″中的地址码1000可直接作为有效地址访问操作数
  • 基址寻址应用:当程序从地址100开始存放时,jump指令的地址码7应解释为从起始地址100偏移7个单位(即107)
  • 相对寻址应用:PC当前指向104时,地址码3应解释为从PC值104偏移3个单位(即107)

3.2 知识总览

第四章 02指令的寻址方式
  • 偏移寻址大类:包含基址寻址、变址寻址和相对寻址三种方式,共同特征是以特定地址为起点加上形式地址的偏移量
  • 有效地址计算:操作数的真实地址称为有效地址(EA),由操作码(OP)、寻址特征和形式地址(A)共同决定

3.3 偏移寻址的概念

第四章 02指令的寻址方式

3.4 基址寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

基址寻址原理

  • 专用基址寄存器实现
    • 计算公式:EA=(BR)+A,其中BR为基址寄存器内容,A为指令中的形式地址
    • 硬件实现:通过ALU将BR内容和形式地址A相加得到有效地址
    • 操作系统关联:基址寄存器相当于操作系统中的重定位寄存器,用于程序装入管理
  • 通用寄存器实现方式
    • 寄存器指定:当使用通用寄存器作为基址寄存器时,指令中需包含寄存器编号字段
    • 位数确定:寄存器编号字段的比特数由通用寄存器总数决定(如8个寄存器需要3位)
    • 访问限制:被指定为基址寄存器的通用寄存器内容不可被用户程序修改

3.5 基址寻址的作用

第四章 02指令的寻址方式
  • 程序浮动支持:允许程序从内存任意地址开始存放,只需修改BR值即可适应不同装入地址
  • 多道程序实现:不同程序的BR值保存在各自PCB中,实现多程序并发运行时的地址转换
  • 寻址范围扩展:通过基地址+偏移量的方式,突破形式地址位宽限制,扩大可访问地址空间
  • 管理权限:基址寄存器内容只能由操作系统修改,保证内存管理的安全性和统一性

3.6 变址寻址

第四章 02指令的寻址方式

基本概念与原理

  • 有效地址计算:EA=(IX)+A,其中IX为变址寄存器(专用或通用寄存器),A为指令中的形式地址
  • 寄存器类型:系统可能专门设置变址寄存器IX(Index Register),也可能使用通用寄存器作为变址寄存器
  • 面向用户特性:与基址寻址的关键区别在于,变址寄存器IX的内容可由程序员修改,属于用户可见寄存器

寻址特点与应用

  • 角色分配:
    • 形式地址A:作为基地址(固定值)
    • 变址寄存器IX:作为偏移量(可变值),与基址寻址的角色分配相反
  • 数组处理优势:将数组首地址设为A,通过修改IX值即可访问数组任意元素,特别适合循环程序
    • 例:对数组a0​到a9求和时,只需保持A指向数组首地址,循环修改IX值从0递增到9

3.7 变址寻址的作用

第四章 02指令的寻址方式
第四章 02指令的寻址方式

编程实例解析

  • 传统实现缺陷:需要10条独立加法指令(地址码分别为12-21),无法适应数组规模变化
  • 变址优化方案:
  • 执行过程:
    • 第一轮:IX=0,访问地址7+0=7(a0​)
    • 第二轮:IX=1,访问地址7+1=8(a1​)
    • 终止条件:当IX=10时,10-IX≤0终止循环
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

3.8 变址寻址的优缺点

第四章 02指令的寻址方式

关键区别总结

  • 与基址寻址对比:
    • 修改权限:基址寄存器内容由OS管理,变址寄存器内容由用户程序修改
    • 角色定位:基址寻址中形式地址为偏移量,基址寄存器提供基地址;变址寻址中角色互换
  • 硬件实现提示:比较操作实际执行10−IX运算,结果>0时触发条件跳转(PC←2)

3.9 基址和变址复合寻址

第四章 02指令的寻址方式

例题:基址变址复合寻址应用

  • 复合寻址原理: 将基址寻址和变址寻址结合使用,先进行基址寻址(形式地址A+基址寄存器BR内容),再进行变址寻址(加上变址寄存器IX内容),最终得到有效地址EA。
  • 地址计算示例: 当程序起始地址为100,BR=100,A=7,IX=2时,EA=(100+7)+2=109,正好访问数组元素a2
  • 寻址方式类比: 每种寻址方式可视为将形式地址A映射为有效地址EA的函数,复合寻址相当于数学中的复合函数。
  • 实际应用场景: 当程序在内存中的存放位置改变时(如从地址0改为地址100),单独使用变址寻址会失效,必须结合基址寻址才能正确定位数据。

3.10 相对寻址

第四章 02指令的寻址方式
第四章 02指令的寻址方式

注:王道书上错的

3.11 相对寻址的作用

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

相对寻址优点

第四章 02指令的寻址方式

3.12 本节回顾

第四章 02指令的寻址方式
  • 隐含寻址:操作数由程序指定,执行期间不需要访存
  • 立即寻址:指令中的地址字段A直接就是操作数,执行期间不需要访存
  • 寄存器寻址:有效地址EA等于寄存器R的内容,执行期间不需要访存
  • 寄存器间接寻址:有效地址EA等于寄存器R中存储的地址,执行期间需要访存1次
  • 相对寻址:有效地址EA等于PC值加上偏移量A,执行期间需要访存1次
  • 直接寻址:有效地址EA等于指令中的地址字段A,执行期间需要访存1次
  • 间接寻址:有效地址EA等于地址A中存储的内容,执行期间需要访存2次
  • 偏移寻址分类:相对寻址、基址寻址和变址寻址都属于偏移寻址,都是通过基地址加上偏移量来计算有效地址
  • 相对寻址特点:常用于转移指令,偏移量是相对于下一条指令的地址(PC已自动更新),而非当前指令
  • 基址寻址应用:多用于多道程序并发运行,由操作系统管理基址寄存器
  • 变址寻址优势:便于实现循环程序和对数组的访问
  • 访存次数:这三种偏移寻址方式在指令执行期间都只需要访存1次

四、堆栈寻址

4.1 堆栈寻址概念

第四章 02指令的寻址方式
第四章 02指令的寻址方式
  • 定义:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址的寻址方式
  • 核心特征:采用”后进先出(LIFO)”原则管理存储区,通过专用寄存器SP(堆栈指针)指示当前栈顶位置
  • 操作特点:指令中不需要显式给出操作数地址,地址信息隐含在SP寄存器中

4.2 寄存器实现堆栈 – 硬堆栈

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

4.3 寄存器实现堆栈 – 软堆栈

第四章 02指令的寻址方式
  • 软堆栈实现:从主存中划分特定区域作为堆栈空间
  • 与硬堆栈对比:
    • 速度:硬堆栈(寄存器实现)速度更快
    • 成本:软堆栈(主存实现)成本更低
    • 访存:软堆栈每次操作需1次访存,硬堆栈无需访存
  • 实际应用:
    • 系统通常采用软堆栈实现
    • 用于存储函数调用信息、局部变量等程序运行数据
    • 是实现函数调用的基础机制
  • 有效地址确定:
    • 出栈时:当前SP值即为有效地址
    • 入栈时:需先调整SP(±1),新SP值才是有效地址

4.4 本节回顾

第四章 02指令的寻址方式
  • 堆栈寻址关键参数:
    • 有效地址:由SP指针隐含指示
    • 访存次数:硬堆栈0次,软堆栈1次
  • 操作特点:
    • 入栈/出栈时EA确定方式不同
    • 硬件自动完成SP指针的增减操作
  • 系统重要性:
    • 是实现函数调用的关键机制
    • 程序运行时管理调用栈的基础
  • 学习要点:
    • 需掌握不同栈顶方向(地址增大/减小)时SP的变化规律
    • 理解硬/软堆栈的实现差异及访存特性
    • 结合数据结构中栈的操作理解寻址过程

五、硬件如何实现数的“比较”?

第四章 02指令的寻址方式
第四章 02指令的寻址方式
第四章 02指令的寻址方式

1)高级语言中的比较操作与硬件实现

  • 高级语言表现:如if a>b这样的条件判断语句
  • 硬件本质:CPU执行compare指令,实质是通过a−b运算实现比较

2)硬件比较的过程:减法操作

  • 运算结果:a−b可能得到零、正数、负数或产生溢出
  • 结果记录:运算结果信息被存入程序状态字寄存器(PSW)

3)PSW中的标志位

  • CF(进位标志):记录运算是否产生进位/借位(1表示有,0表示无)
  • ZF(零标志):记录运算结果是否为零(1表示是,0表示否)
  • SF(符号标志):记录运算结果是否为负(1表示是,0表示否)
  • OF(溢出标志):记录运算是否产生溢出(1表示是,0表示否)

4)条件跳转指令的执行原理

  • 判断机制:CPU根据PSW标志位决定是否转移程序执行流
  • 示例分析:当a>b时,a−b结果会使ZF=0且SF=0,硬件电路据此修改PC值

5)汇编语言中的条件跳转指令

  • je指令:jump when equal,当比较结果相等时跳转
  • jg指令:jump when greater,当前数大于后数时跳转
  • 其他指令:参考王道书总结的其他条件跳转指令

6)无条件跳转指令

  • jump指令:不进行条件判断,直接修改PC值实现跳转

实例解析:与IX寄存器内容比较

  • 比较过程:用立即数10减去IX寄存器内容,结果存入PSW
  • 跳转判断:根据结果是否>0决定是否跳转到指定位置

PSW的其他称呼:标志寄存器

术语说明:程序状态字寄存器(PSW)在某些机器中也称为标志寄存器

本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客

(1)
何大锤的头像何大锤管理团队

相关推荐

  • 第四章 指令系统的发展及其性能要求习题集(研芝士)

    一、错题汇总 题目 备注 二、重点知识 三、指令系统的发展及其性能要求 3.1 指令系统的概念 要判断错误选项,需明确指令系统的核心概念: 3.2 不同寻址方式的目的 要判断指令系统采用不同寻址方式的目的,需分析各选项核心逻辑: 综上,正确答案为 B。 3.3 指令集体系结构(ISA)

    2025年7月20日
    1400
  • 第四章 01指令的基本格式

    一、计算机的结构 1.1 现代计算机的结构 1.2 计算机的工作过程 操作码:做了什么 地址码:对谁动手 由的指令不需要地址码 二、指令的基本格式 2.1 本节总览 2.2 指令的定义 2.3 指令格式 2.4 零地址指令 2.5 一地址指令 2.6 二地址指令 2.7 三地址指令 2.8 四地址指令 2.9 指令-按地址码数目分类 2.10 指令 &#82…

    2025年7月19日
    1300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

2211932694

在线咨询: QQ交谈

邮件:hdcblog1999@163.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
网站建设中ing......