首页 > 其他分享 >常见的数据寻址方式

常见的数据寻址方式

时间:2024-06-12 11:32:44浏览次数:19  
标签:操作数 方式 常见 地址 寻址 寄存器 堆栈 信使


寄存器间接寻址:
想象一下,你有一个信使(寄存器),他知道你想要的东西(操作数)放在哪里。你告诉信使去拿,但他得先看看地址本(寄存器里的地址信息)才知道东西具体在哪。这种方式挺快的,但信使可能要跑几趟,因为他得先查地址本,再去拿东西。
相对寻址:
这就像是你告诉信使,从当前位置(程序计数器)往东走一段距离(加上形式地址),就能找到东西。这样的好处是,即使你搬家了(程序移动了),只要告诉信使新的起点,他还是能找到东西。不过,这样信使得先算一下到底要往东走多远。
基址寻址:
假设你有一个大本营(基址寄存器),信使知道从大本营出发,再加上一些额外的指引(形式地址),就能找到东西。这种方式可以让你在不同地方都能找到相同的东西,但信使得先去大本营,然后再出发,可能会有点复杂。
变址寻址:
这就像是信使有一个伙伴(变址寄存器),他们俩一起决定东西的位置。信使根据伙伴的指引(变址寄存器的内容)和自己的地址本(形式地址),一起找到东西。这样可以让信使找到更远的东西,但计算起来可能会有点麻烦。
堆栈寻址:
想象一下,你有一个特殊的抽屉(堆栈),东西是按照最后放的先拿出来的规则存放的。你告诉信使,只要看最上面的抽屉(堆栈指针给出的地址),就能找到最近放的东西。这种方式很简单,因为信使只需要看最上面的抽屉,不需要计算。
这些方式就像是不同的寻宝游戏,每种游戏都有自己的规则和技巧,程序员就像是玩游戏的人,要根据情况选择最合适的方法来找到宝藏(操作数)。
 

知识点讲解


寄存器间接寻址:
这种方式中,寄存器中存储的是操作数的地址信息。
优点:与一般的间接寻址相比,速度较快。
缺点:指令执行过程中需要访问主存,可能需要多次访问(取决于间接寻址的次数)。
相对寻址:
通过将程序计数器(PC)的内容与指令中的形式地址相加来形成操作数的有效地址。
优点:操作数的地址不是固定的,便于程序的浮动,即可以在内存中移动而不影响程序的执行。
缺点:需要计算操作数的地址,执行步骤相对复杂。
主要用于转移指令,只需要访问一次存储器。
基址寻址:
通过将CPU中的基址寄存器(Base Register, BR)的内容与指令中的形式地址相加来形成操作数的有效地址。
优点:可以扩大寻址能力,便于编写浮动程序,有利于多道程序的设计。
缺点:寻址过程较为复杂,需要增加内部部件,偏移量的位数较短。
主要面向操作系统,解决程序逻辑空间与存储器物理空间的无关性,只需要访问一次存储器。
变址寻址:
有效地址EA是形式地址A和变址寄存器IX的内容之和。
优点:可以扩大寻址范围。
缺点:寻址过程较为复杂,变址寄存器的位数影响操作数的寻址范围。
主要用于数组处理和循环程序的编写,只需要访问一次存储器。
堆栈寻址:
使用存储器或寄存器组中的一块特定区域,按照先进后出(Last In, First Out, LIFO)的原则进行管理。
堆栈指针(Stack Pointer, SP)给出读写单元的地址。
堆栈分类:
硬堆栈:由寄存器构成,成本高,容量小。
软堆栈:在主存中划分区域。
大部分使用堆栈的指令表现为无操作数,因为操作数地址隐含使用了SP。
这些寻址方式各有优缺点,适用于不同的场景和需求。在编写程序时,程序员需要根据程序的特定要求选择合适的寻址方式。
 

标签:操作数,方式,常见,地址,寻址,寄存器,堆栈,信使
From: https://blog.csdn.net/la1466128339/article/details/139584932

相关文章

  • Web应用课 第二讲 CSS定义方式、选择器、颜色
    定义方式行内样式表:只作用在单个元素<!--CSS定义方式1:行内样式表--><imgsrc="/static/images/mountain.jpg"alt="山1"width="300"><imgsrc="/static/images/mountain.jpg"alt="山2"style="width:30%;&quo......
  • 私有化部署bitwarden密码管理器(二)——npm方式部署
    带域名解析有证书的国外Vps部署bitwarden密码管理器前期准备工作完成之后,接下来介绍带域名解析有证书的国外Vps部署bitwarden密码管理器,这种部署方式比较简单,所以比较推荐。NginxProxyManager介绍项目文档地址:https://nginxproxymanager.com/github地址:https://github.com......
  • 私有化部署bitwarden密码管理器(三)——nginx方式部署
    仅有IP无证书的环境部署bitwarden密码管理器虽然使用npm方式部署比较简单,但是很多小伙伴可能没有一台带域名国外vps,接下来介绍仅有IP的Vps,如国内的服务器无域名证书或者是本地无外网的环境如:虚拟机、NAS、树莓派等环境部署bitwarden密码管理器。部署NginxNginx和NginxProxy......
  • 在Windows操作系统上,有一些流量控制工具可以帮助用户监视、管理和控制网络流量。以下
    在Windows操作系统上,有一些流量控制工具可以帮助用户监视、管理和控制网络流量。以下是一些常见的Windows网络流量控制工具:NetBalancer:这是一款功能强大的网络流量控制工具,可以帮助用户监视和调整应用程序的网络活动。用户可以设置上传和下载速度限制,并优化网络性能。NetLim......
  • spring-1-IOC、创建bean的方式、创建bean的过程
    1.背景IOC(InversionofControl,控制反转)控制反转是一种设计原则,它将对象的创建和管理责任从应用代码中移交给容器。在Spring中,IOC容器负责管理应用中的所有对象,包括它们的生命周期和相互之间的依赖关系。IOC的主要目的是为了减少代码之间的耦合,使代码更加模块化和可测试。这......
  • C#实现多线程的几种方式(附完整源码)
    C#实现多线程的几种方式1.使用Thread类:2.使用ThreadPool类:3.使用Task类:以下是C#中实现多线程的几种常见方式的示例代码:1.使用Thread类:usingSystem;usingSystem.Threading;​classProgram{staticvoidMain(){Threadth......
  • wimlib API 提供了一系列用于处理 Windows 映像文件(.wim 文件)的函数和数据结构,使开发
    wimlibAPI提供了一系列用于处理Windows映像文件(.wim文件)的函数和数据结构,使开发人员能够在其应用程序中集成对WIM文件的创建、修改和提取功能。以下是一些常见的wimlibAPI:WIM文件的创建和初始化:wimlib_create_new_wim():创建一个新的WIM文件。wimlib_open_wim():......
  • 整理好了!2024年最常见 20 道分布式、微服务面试题(十)
    上一篇地址:整理好了!2024年最常见20道分布式、微服务面试题(九)-CSDN博客十九、如何设计一个高可用的分布式系统?设计一个高可用的分布式系统是一个复杂的过程,需要考虑多个方面以确保系统的鲁棒性、可扩展性和容错性。以下是一些关键的设计原则和实践:1. 冗余设计:数据冗余:通......
  • 整理好了!2024年最常见 20 道分布式、微服务面试题(九)
    上一篇地址:整理好了!2024年最常见20道分布式、微服务面试题(八)-CSDN博客十七、什么是断路器模式,它如何解决服务依赖问题?断路器模式(CircuitBreakerPattern)是一种软件设计模式,用于处理分布式系统中的服务依赖问题。当一个服务由于某些原因变得不稳定或不可用时,断路器模式可以......
  • 架构设计-跨域问题的根源及解决方式
    前面文章《架构设计-web项目中跨域问题涉及到的后端和前端配置》中说明了处理跨域问题的一种方式,本文详细说明下产生跨域问题的原因及处理方式。一、产生跨域问题的原因:浏览器的同源策略:这是跨域问题的根本原因。同源策略是浏览器对JavaScript施加的安全限制,目的是出于浏览......