【408精华知识】指令的寻址方式

news2024/11/14 2:32:44

在这里插入图片描述

文章目录

  • 一、指令寻址
    • (一)顺序寻址
    • (二)跳跃寻址
  • 二、数据寻址
    • (一)隐含寻址
    • (二)立即(数)寻址
    • (三)直接寻址
    • (四)间接寻址
    • (五)寄存器寻址
    • (六)寄存器间接寻址
    • (七)相对寻址
    • (八)基址寻址
    • (九)变址寻址
    • (十)堆栈寻址

寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。

一、指令寻址

(一)顺序寻址

通过程序计数器PC加1(1条指令的长度),自动形成下一条指令的地址。

PC 自增的大小与编址方式、指令字长有关。现代计算机通常是按字节编址的,若指令字长为16位,则 PC自增为(PC)+2;若指令字长为32位,则PC自增为(PC)+4。

(二)跳跃寻址

通过转移类指令实现。跳跃是指由本条指令给出下条指令地址的计算方式。而是否跳跃可能受到状态寄存器的控制,跳跃的方式分为绝对转移(地址码直接指出转移目标地址)和相对转移(地址码指出转移目的地址相对于当前PC 值的偏移量),由于CPU总是根据PC的内容去主存取指令的,因此转移指令执行的结果是修改PC 值,下一条指令仍然通过PC 给出。

二、数据寻址

数据寻址是指如何在指令中表示一个操作数的地址,或怎样计算出操作数的地址。数据寻址的方式较多,为区别各种方式,通常在指令字中设置一个寻址特征字段,用来指明属于哪种寻址方式(其位数决定了寻址方式的种类),由此可得指令的格式如下所示:

操作码寻址特征形式地址A

一地址指令
在这里插入图片描述

二地址指令
在这里插入图片描述

指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址,即A。形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址,即EA,(A)表示地址为A的数值,A既可以是寄存器编号,又可以是内存地址。

常见的寻址方式分为以下几种

寻址方式有效地址访存次数备注
隐含寻址程序指定0——
立即寻址A即是操作数0——
直接寻址EA=A1——
一次间接寻址EA=(A)2——
寄存器寻址EA=Ri0——
寄存器间接一次寻址EA=(Ri)1——
相对寻址EA=(PC)+ A1属于偏移寻址,用于指令转移
基址寻址EA=(BR)+ A1属于偏移寻址,用于多道程序
变址寻址EA=(IX)+ A1属于偏移寻址,用于循环程序

(一)隐含寻址

这种类型的指令,不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。例如单地址指令格式,就不给出第二操作数的地址,而是规定累加器ACC作为第二操作数的地址,指令中只是明显指出第一操作数。隐含寻址的优点是有利于缩短指令字长,缺点是需要增加存储操作数的硬件和存储隐含地址的硬件。
在这里插入图片描述

(二)立即(数)寻址

这种类型的指令的地址码字段指出的不是操作数的地址,而是操作数本身,又叫立即数。数据采用补码的形式存放。立即寻址的优点是指令在执行阶段不访问主存,指令执行的时间最短,缺点是A的位数限制了立即数的范围。(在定长指令码格式下,所有指令的长度都是一样的,这时候取每条指令的时间都一样,执行指令时立即数寻址最快,但是如果在变长指令码下,受到形式地址位数的限制,如果操作数比较大,那立即寻址方式在取指令的时间上要用时更多一点)

在这里插入图片描述

(三)直接寻址

这种类型的指令的地址码字段的形式地址就是操作数的真实地址,取数操作直接取地址里面的内容,它的有点是简单,只需要访问一次主存,不需要专门计算操作数的地址,缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改,相对于立即寻址,直接寻址缩短了指令的长度。
在这里插入图片描述

(四)间接寻址

这种类型的指令是相对于直接寻址而来的,在直接寻址中,形式地址就是真实地址,在间接寻址中,形式地址是操作数地址的地址,即EA=(A),间接寻址可以是一次间接,也可以是多次间接。它的优点是可以扩大寻址范围,因为EA的位数大于A的位数,便于编制程序,可以方便地实现子程序的返回,缺点是在执行使需要多次访问内存,访问速度慢。这种寻址方式并不常用。一般扩大寻址范围都采用寄存器间接寻址。毕竟访问寄存器更快一点。
在这里插入图片描述
在这里插入图片描述

(五)寄存器寻址

这种类型的指令是直接给出操作数所在的寄存器的编号,EA=Ri,操作数就在Ri内存放。寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,因此执行速度快,因为寄存器数量少,所以寄存器编号所占的位数也少,指令字长也比较短。缺点是寄存价格昂贵,计算机中寄存器的个数也是有限的。
在这里插入图片描述

(六)寄存器间接寻址

这种类型的指令是相对于寄存器寻址的,指令中还是直接给出寄存器的编号,但是寄存器中存放的不是操作数而是操作数所在的地址,EA=(Ri)。它的优点是扩大了寻址范围,比间接寻址速度更快,但是指令执行阶段还是要访问主存的。
在这里插入图片描述

(七)相对寻址

这种类型的指令是将程序计数器PC中的内容与指令中的形式地址A相加,从而得出操作数的有效地址EA=(PC)+A,A是相对于当前指令地址的位移量,用补码表示。相对寻址的优点是,操作数的地址是不固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序的浮动(随着操作系统功能的日渐强大,程序在主存中的位置不是固定不变的)。相对寻址用于控制程序的执行顺序、转移等。
在这里插入图片描述

(八)基址寻址

这种类型的指令是将CPU中基址寄存器BR的内容加上指令格式中的形式地址,形成操作数的真实地址,EA=(BR)+A。其中,基址寄存器既可以采用专用寄存器,也可以采用通用寄存器。
在这里插入图片描述
在这里插入图片描述

基址寄存器是面向操作系统的,它的内容由操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性。程序运行过程中,基址寄存器中的内容是不变的,形式地址是可变的。如果采用通用寄存器作为基址寄存器,可以由用户决定哪个寄存器作为基址寄存器,但是内容还是由操作系统决定。

基址寻址的有点是可以扩大寻址范围(基址寄存器的位数大于A的位数),用户不用考虑自己的程序存放在主存的哪个区域,有利于多道程序设计,可用于编址浮动程序,常用于为程序和数据分配存储空间。

(九)变址寻址

这种类型的指令是将指令中的形式地址与变址寄存器IX内容相加,得到真实地址,EA=(IX)+A,也可以用通用寄存器作为变址寄存器。
在这里插入图片描述

与基址寻址相反,变址寻址是面向用户的,在程序执行的过程中,变址寄存器中的内容是可以由用户改变的,用作偏移量,而形式地址A则不变,作为基地址。

变址寻址的优点是可以扩大寻址范围(变址寄存器的位数大于A的位数),主要用在数组处理过程中,可以设定A为数组首地址,然后不断改变IX中的值即可形成数组中任意一个数据的地址,适合编制循环程序。IX的位数足以表示整个存储空间。

(十)堆栈寻址

堆栈是存储器中的一块按照后进先出原则管理的存储区,改存储区中被读/写单元的地址是由一个特定的寄存器给出的,该寄存器称为堆栈指针SP。堆栈可分为硬堆栈和软堆栈,硬堆栈是指寄存器堆栈,由于制作成本高,不适合做大容量,一般采用软堆栈,即从主存中划分出一段区域来作为堆栈。
在这里插入图片描述

在采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令的形式,因为操作数地址都隐含了SP。通常在读或写堆栈中的一个单元的前后都伴有自动完成对SP内容的增减。

写在后面

这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!

参考资料
[1]王道408教材(2025版)
[2]王道课程资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1696041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络域名是什么意思

网络域名,顾名思义,就是网络上的名字,类似于现实中的地址或姓名一样,用来标识网络上的一个或一组计算机或服务器的位置,以及它们的相应服务资源。网络域名是互联网上最基础的基础设施之一,是网络通信的“标…

虚机配置USB CDROM设备热迁移crash

虚机配置USB CDROM设备热迁移crash 问题现象定位过程堆栈分析日志分析打开trace异常日志上下文分析SpecificationCBWCSW 命令执行发送读命令读取数据 正常日志异常堆栈 修复方案结论 基础原理设备模型数据结构设备实例化 UHCIFrame ListTDQH SCSI 问题现象 dogfood环境一台虚机…

Echarts图表使用

ECharts是一个用JS实现开源可视化库&#xff0c;它提供了丰富的图表类型和交互能力。使用户可以通过简单的配置生成各种各样的图表。 先安装ECharts图表直接下载echarts.min.js并用<script>标签引入也可以使用源代码版本echarts.js并用<script>标签引入&#xff0…

【vue3+elementuiplus】el-select下拉框会自动触发校验规则

场景&#xff1a;编辑弹框省份字段下拉框必填&#xff0c;触发方式change&#xff0c;有值第一次打开不会触发校验提示&#xff0c;关闭弹框再次打开触发必填校验提示&#xff0c;但是该字段有值 问题的原因是&#xff1a;在关闭弹层事件中&#xff0c;我做了resetfileds&…

【kubernetes】陈述式资源管理的kubectl命令合集

目录 前言 一、K8s 资源管理操作方式 1、声明式资源管理方式 2、陈述式资源管理方式 二、陈述式资源管理方式 1、kubectl 命令基本语法 2、查看基本信息 2.1 查看版本信息 2.2 查看资源对象简写 2.3 配置kubectl命令自动补全 2.4 查看node节点日志 2.5 查看集群信息…

C++ | Leetcode C++题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; class Solution { public:bool hasPathSum(TreeNode *root, int sum) {if (root nullptr) {return false;}if (root->left nullptr && root->right nullptr) {return sum root->val;}return hasPathSum(root->left…

立体库堆垛机的精密构造与功能(收藏版)

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在现代物流仓储体系中&#xff0c;堆垛机以其高效、精准的操作能力&#xff0c;成为了自动化存储与检索系统的关键所在。 其复杂的构造和多样化的…

基于开源二兄弟MediaPipe+Rerun实现人体姿势跟踪可视化

概述 本文中&#xff0c;我们将探索一个利用开源框架MediaPipe的功能以二维和三维方式跟踪人体姿势的使用情形。使这一探索更有趣味的是由开源可视化工具Rerun提供的可视化展示&#xff0c;该工具能够提供人类动作姿势的整体视图。 您将一步步跟随作者使用MediaPipe在2D和3D环…

Windows远程连接命令?

Windows操作系统提供了多种远程连接命令&#xff0c;使用户可以通过网络连接到远程计算机&#xff0c;并在远程操作系统上执行操作。远程连接命令可方便实现远程工作、故障排查和系统维护等任务。本文将介绍几种常见的Windows远程连接命令及其基本使用方法。 远程连接命令 Win…

从0开始带你成为Kafka消息中间件高手---第一讲

从0开始带你成为Kafka消息中间件高手—第一讲 网站的用户行为日志&#xff0c;假设电商网站&#xff0c;我现在需要买一个阅读架&#xff0c;看书的架子 京东&#xff0c;我平时比较喜欢用的是京东&#xff0c;送货很快&#xff0c;自营商品&#xff0c;都是放在自己的仓库里…

Netty初识Hello World 事件循环对象(EventLoop) 事件循环组 (EventLoopGroup)

初始Netty-HelloWorld Netty在网络通信中的地位就如同Spring框架在JavaEE开发中的地位。 基于Netty网络通信开发简易的服务端、客户端&#xff0c;以实现客户端向服务端发送hello world&#xff0c;服务端仅接收不返回数据。 服务端代码&#xff1a; Slf4j public class Hell…

HCIP-Datacom-ARST自选题库__MPLS多选【25道题】

1.下列描述中关于MPLS网络中配置静态LSP正确的是 当某一台LSR为Egress LSR时&#xff0c;1仅需配置In Label&#xff0c;范围为16~1023 当某一台LSR为Transit LSR时&#xff0c;需要同时配置In Label和Out label&#xff0c;In Label范围为16~1023&#xff0c;0utLabel范围为…

【C语言】C语言-学生选修课程系统(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

牛客NC302 环形数组的连续子数组最大和【中等 动态规划 Java/Go/PHP/C++】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/e9f3282363844355aa51497c5410beee 思路 动态规划 两种情况&#xff08;首位相连的&#xff09;和首位不相连的 首尾相连的可以算最小的连续子数组得出&#xff0c;sum-就是。Java代码 import java.util.*;pub…

Echarts - 多个页面内有N个 echarts 图表,封装组件 CommonEcharts 快捷实现

目录 子组件父组件使用注意 option 文件效果展示相关数据处理&#xff08;代码备份 - 可不看&#xff09;数据处理后页面展示 子组件 CommonEcharts.vue <template><div><div v-for"id in domId" :id"id" :key"id" class"…

springboot+vue+mybatis校园兼职平台+PPT+论文+讲解+售后

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要…

十、通配符和正则表达式

10.1 通配符 通配符是由shell处理的, 它只会出现在 命令的“参数”里。当shell在“参数”中遇到了通配符 时&#xff0c;shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配&#xff1a;若符合要求的匹配存在&#xff0c;则进 行代换(路径扩展)&#xff1b;否则就将该通配…

基于springboot+vue的致远汽车租赁系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

新兴勒索软件组织不断涌现:他们是谁,如何运作

新兴的勒索软件团伙正采取不同的策略和目标&#xff0c;填补大公司关闭和执法中断所留下的空白。 3 月份 BlackCat (ALPHV) 的关闭和 2 月份执法部门对 LockBit 基础设施的干扰导致勒索软件生态系统出现空白&#xff0c;而这一空白正迅速被经验不足的团体所填补。 今年到目前…

Flask实现文件上传/下载【基础版】

目录 前言 一.文件上传 1.1一些<input>相关上传属性 1.1.1multiple 1.1.2accept 1.2Flask后台接收文件提交 1.3Flask后台接收多个文件 二.保护文件上传 2.1限制文件上传大小 2.2验证文件名 2.3验证文件内容 三.文件下载 3.1使用send_file()方法下载文件 前言…