代码编织梦想

寻址方式

  • 寻找指令或者操作数有效地址的方式,即,确定本条指令的数据地址以及下一条指令的地址的方法
    • 包含指令寻址和数据寻址两类
  • 指令中断地址码字段不代表操作数的真是地址,则称这种地址为形式地址(A)
  • 形式地址结合寻址方式可以计算出操作数在存储器中的真实地址(称为有效地址(EA))
  • (A)表示地址为A的数值
    • A可以是寄存器编号
    • 也可以是内存单元地址
    • 对应的(A)就是寄存器中的数值(或相应内存单元的数值)
    • EA=(A)表示有效地址EA就是A处保存的值
    • (EA)就表示操作数本身

指令寻址

  • 寻找下一条将要执行的指令地址称为指令寻址

    • 顺序寻址

    • 跳跃寻址

      • 如果发生跳跃,跳跃结果是当前指令修改PC值,所以下一条指令依然是通过PC给出
      • 但是PC中的值可能不再是默认+1的结果

数据寻址

  • 寻找本条指令的(操作数)数据地址称为数据寻址

    • 在指令中表示一个操作数的地址

    • 并且如何用这种表示,得到操作数或者如何计算出操作数的地址

      • 将地址码字段进一步划分为寻址特征形式地址

      • O P 操 作 码 寻 址 特 征 形 式 地 址 A \begin{array}{|c|c|c|c|} \hline OP操作码&寻址特征&形式地址A\\ \hline \end{array} OPA

隐含寻址

  • 不明显地给出操作数地址
    • 在指令中隐含操作数地址
  • 特点:
    • 缩短指令长度
    • 需要增加存储操作次数或者隐含地址的硬件

立即数寻址

  • 这种类型的指令的地址字段指出的不是操作数地址,而是操作数本身,又称为立即数
  • 特点:
    • 指令在执行阶段不访问主存,指令执行时间最短
    • 缺点是位数限制了立即数的范围

直接寻址

  • 指令中的形式地址A是操作数的真是地址EA
    • 即EA=A
  • 特点:
    • 简单(在执行阶段仅需要访问一次主存,不需要专门计算操作数的有效地址)
    • A的位数决定了指令操作数的寻址范围,操作数的地址不易修改

间接寻址

  • 相对于直接寻址而言的
  • 设操作数为 x x x
  • E A = ( A ) EA=(A) EA=(A)
  • x = ( E A ) = ( ( A ) ) x=(EA)=((A)) x=(EA)=((A))
  • 如果是2次间接寻址,那么:
    • EA=((A))
    • x = ( E A ) = ( ( ( A ) ) ) x=(EA)=(((A))) x=(EA)=(((A)))
  • 依次类推
  • 特点
    • 间接寻址可以扩大寻址范围
    • 形式地址A的位数往往比有效地址位数更少
    • 但是自行阶段需要多次访存
      • 每多1次间址,就需要多访存一次(根据存储字的最高位确定访问次数)
      • 这是非常坏的,效率很低

寄存器寻址

  • 指令字中直接给出操作数所在寄存器编号
    • E A = R i EA=R_i EA=Ri( R i R_i Ri表示编号为i的寄存器,可以将 R i R_i Ri理解为地址,而且是可以高速访问的地址)
    • x = ( E A ) = ( R i ) x=(EA)=(R_i) x=(EA)=(Ri), R i R_i Ri寄存器中的内容就是操作数 x x x
  • 特点:
    • 指令在执行阶段不需要访存只访问寄存器
      • 因为寄存器数量少,对应的地址码(寄存器编号)长度较小,使得指令字短,不需要访存
      • 支持向量/矩阵运算
    • 但是,寄存器价格高,寄存器的数量有限

寄存器间接寻址

  • 在寄存器 R i R_i Ri给出的表示操作数本身,而是操作数所在主存单元的地址

    • E A = ( R i ) EA=(R_i) EA=(Ri)

    • x = ( E A ) = ( ( R i ) ) x=(EA)=((R_i)) x=(EA)=((Ri))

  • 特点

    • 相比于一般间接寻址的速度快(第一次访问的地址是寄存器,速度快)
    • 指令执行阶段需要访问主存

相对寻址

  • 将PC中的内容加上指令格式中的形式地址A ,形成操作数的有效地址EA
    • E A = ( P C ) + A EA=(PC)+A EA=(PC)+A
    • A是相对于当前指令地址的位移量
  • 从公式上看,容易理解,A的位数决定了操作数的范围

基址寻址

  • 将cpu中的基址寄存器BR的内容加上指令格式中的形式地址A形成的操作数有效地址EA

    • E A = ( B R ) + A EA=(BR)+A EA=(BR)+A
    • BR可以采用专用寄存器或者通用寄存器实现
  • 特点

    • 基址寄存器BR是面向操作系统的
      • 内容有操作系统/管理程序确定
        • 采用通用寄存器作为BR时,虽然用户可以决定哪个GPR作为BR,但是内容依然有操作系统决定
      • 主要是用来解决程序逻辑空间存储器物理空间的无关性
      • 程序执行过程中,BR的内容不变(作为基地址)
      • 形式地址可以变(作为偏移量)
    • 优点:
      • 可扩大寻址范围
        • BR的位数大于形式地址A的位数
      • 用户不必考虑苏自己的程序存于主存的哪个空间区域,有利于多道程序设计
        • 可以编制浮动程序,但偏移量(形式地址A)位数较短

变址寻址

  • E A = ( I X ) + A EA=(IX)+A EA=(IX)+A
    • 变址寄存器IX(index Register)
  • 特点:
    • 变址寄存器面向用户
    • 在程序执行过程中,IX的内容可以作为偏移量,由用户改变
      • 偏移量的位数足以表示整个存储空间
    • 形式地址A不变(和基址寻址特点相反)
    • 也可以扩大寻址范围
    • 便于编制循环程序

堆栈寻址

  • 堆栈是存储器(寄存器组)中一块特定的,按照后进先出(LIFO)的原则管理的存储区
  • 该存储区中读写单元的**地址(指针)**是用一个特定的寄存器给出
    • 该寄存器称为堆栈指针
  • 寄存器堆栈又称为硬堆栈
    • 成本高
  • 从主存中划分一段区域来做堆栈称为软堆栈(比较常用)
  • 在采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令心事
    • 应为操作数地址都隐含使用了SP
    • 通常,在读写堆栈中的一个单元的前后,都便有自动完成对SP内容的增量/减量操作

小结

  •  寻 址 方 式   有 效 地 址   访  存 次 数   隐含寻址   程序指定  0  立即寻址  A  即是操作数  0  直接寻址  E A = A 1  一次间接寻址  E A = ( A ) 2  寄存器寻址  E A = R i 0  寄存器间接一次寻址  E A = ( R i ) 1  相对寻址  E A = ( P C ) + A 1  基址寻址  E A = ( B R ) + A 1  变址寻址  E A = ( I X ) + A 1 \begin{array}{c|c|c} \hline \text { 寻 址 方 式 } & \text { 有 效 地 址 } & \text { 访 } \text { 存 次 数 } \\ \hline \text { 隐含寻址 } & \text { 程序指定 } & 0 \\ \hline \text { 立即寻址 } & \mathrm{A} \text { 即是操作数 } & 0 \\ \hline \text { 直接寻址 } & \mathrm{EA}=\mathrm{A} & 1 \\ \hline \text { 一次间接寻址 } & \mathrm{EA}=(\mathrm{A}) & 2 \\ \hline \text { 寄存器寻址 } & \mathrm{EA}=\mathrm{R}_{i} & 0 \\ \hline \text { 寄存器间接一次寻址 } & \mathrm{EA}=\left(\mathrm{R}_{i}\right) & 1 \\ \hline \text { 相对寻址 } & \mathrm{EA}=(\mathrm{PC})+\mathrm{A} & 1 \\ \hline \text { 基址寻址 } & \mathrm{EA}=(\mathrm{BR})+\mathrm{A} & 1 \\ \hline \text { 变址寻址 } & \mathrm{EA}=(\mathrm{IX})+\mathrm{A} & 1 \\ \hline \end{array}       隐含寻址  立即寻址  直接寻址  一次间接寻址  寄存器寻址  寄存器间接一次寻址  相对寻址  基址寻址  变址寻址       程序指定 A 即是操作数 EA=AEA=(A)EA=RiEA=(Ri)EA=(PC)+AEA=(BR)+AEA=(IX)+A 访     001201111

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xuchaoxin1375/article/details/127973831

ibm-pc汇编-爱代码爱编程

与数据有关的寻址方式 一、立即寻址方式:操作数直接放在指令中 MOV AL,5 执行后,(AL)=05H 二、寄存器寻址方式:操作数放在寄存器中 对于16位的操作数:AX,BX,CX,DX,SI,DI,SP,BP 对于8位的操作数:AL,AH,BL,BH,CL,CH,DL,DH MOV

操作数基本寻址方式-爱代码爱编程

操作数基本寻址方式 1.隐含寻址 2.立即寻址 3.直接寻址 4.间接寻址 5.寄存器寻址方式和寄存器间接寻址方式 6.相对寻址方式 7.基址寻址方式 8.变址寻址方式 9.块寻址方式 10.段寻址方式 1.隐含寻址 在指令中不明显的给出而是隐含着操作数的地址。 2.立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身。这

寻址方式-爱代码爱编程

指令寻址 指令寻址分为顺序寻址和跳跃寻址两种。顺序寻址:通过程序计数器PC加1,自动形成下一跳指令的地址。跳跃寻址:通过转移类指令实现。数据寻址 立即寻址 操作数本身就在指令字内,即形式地址A不是操作数地址,而是操作数本身,又称之为立即数。数据是采用补码的形式进行存放的,‘#’表示立即寻址标记。直接寻址 间接寻址的特点是,指令字当中的形式地址A

【计算机组成原理】寻址方式-爱代码爱编程

一、寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,与硬件结构紧密相关,而且直接影响指令格式和指令功能。分为指令寻址和数据寻址两大类。 二、指令寻址分为顺序寻址和跳跃寻址两种。顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。 数据寻址种类较多,在指令字中必须设一字段来指明属于哪一种寻址方式

十种寻址方式-爱代码爱编程

寻址方式 寻址方式分为指令寻址和数据寻址。 目录 寻址方式 一、指令寻址 二、数据寻址 1.立即寻址 2.直接寻址 3.隐含寻址 4.间接寻址 5.寄存器(直接)寻址 6.寄存器间接寻址 7.基址寻址 8.变址寻址 9、相对寻址 10、堆栈寻址 一、指令寻址 指令寻址分为顺序寻址和跳跃寻址。 顺序寻址是通过程序计数器PC

计算机组成原理17-寻址方式-爱代码爱编程

目录 一、指令寻址 二、数据寻址 1、立即寻址 2、直接寻址 3、隐含寻址 4、间接寻址 间接寻址编程 5、寄存器寻址 6、寄存器间接寻址 7、基址寻址 (1)采用专用寄存器作基址寄存器 (2)采用通用寄存器作基址寄存器 8、变址寻址 9、相对寻址 10、堆栈寻址 寻址方式分为指令寻址和数据寻址两大类。 所谓寻址方式是指:

MIPS寻址方式-爱代码爱编程

目录 一.概述二.寻址方式(1) 立即数寻址(2)寄存器寻址(3) 基址寻址(4)相对寻址(5)伪直接寻址(页面寻址)三.举例(1)相对寻址求与PC相加的偏移量(2)关于MIPS指令格式的描述(3)MIPS特点 一.概述 在MIPS 32指令集中,不单设寻址方式说明字段 R型指令:由op和funct字段共同隐含说明当前的寻址

51单片机间接寻址C语言,51单片机的寻址方式-爱代码爱编程

原标题:51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。 指令的MOV P1,#0FFH这条指令,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,数据传递必须要有一个“源”也就是你要送什么

C51汇编语言寻址方式,单片机学习:51单片机寻址方式详解-爱代码爱编程

原标题:单片机学习:51单片机寻址方式详解 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8031单片机取得了长足的发展,成为了应用最广泛的8位单片机之一。51单片机是基础入门的一个单片机,并且还是应用最广泛的一种。今天我们主要讲讲51单片

C51汇编语言寻址方式,80C51单片机指令系统的7种寻址方式-爱代码爱编程

寻址方式就是寻找操作数或指令地址的方式。寻址方式包含两方面的内容:一是操作数的寻址,二是指令地址的寻址(如转移指令、调用指令)。寻址方式是计算机性能的具体体现,也是编写汇编语言程序的基础,必须非常熟悉并灵活运用。 对于两操作数指令,源操作数有寻址方式,目的操作数也有寻址方式。若不特别声明,后面提到的寻址方式均指源操作数的寻址方式。 80C51单片机

C51汇编语言寻址方式,汇编语言之寻址方式(示例代码)-爱代码爱编程

与数据有关的寻址方式 下面以数据传送指令MOV为例来说明。其汇编格式为:MOV  目标, 源 1.立即寻址方式(immediate addressing) 操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻址方式,把该操作数称为立即数。 MOV  AL, 6                       ;(AL)=6 MOV  AX

指令寻址方式与数据寻址方式-爱代码爱编程

【README】 1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 2. cpu访存寄存器耗费 10ns,访问缓存(高速缓冲寄存器)耗费20ns,访问主存200ns;访问磁盘1ms;一般情况下,CPU内部执行指令最长耗时是在访问内存(外设除外),所以本文列出了寻址方式是否访存的情况; 【1】指令寻址 方

计算机寻址方式-爱代码爱编程

指令寻址: 1.顺序寻址 按照指令读取顺序(pc计数器+1),执行寻址,执行操作 . 2.跳跃寻址 按指令内容(转移类指令)进行跳转新指令执行 数据寻址 ​什么是寻址方式 汇编指令由操作码字段和操作数字段构成。 对于双操作指令,第一个操作数称为目的操作数,表示操作后的结果;第二个操作数称为源操作数,表示来源操作数。 mov ax

指令和数据的寻址方式_pc相对寻址-爱代码爱编程

1、指令寻址 顺序寻址 由于指令在内存中是顺序存放,当执行一段程序时,通常是一条指令接一条指令的顺序执行。为了能够指示下一条欲执行指令的指令地址,CPU内部有 一个程序计数器 PC (指令指针寄存器IP),每执行一条指令其值自动加1,指向下一条欲执行指令的指令地址。这种程序顺序执行的过程我们称为指令的顺序寻址。PC 就是用来做指令追踪 跳跃寻址方式 当程