指令系统二


前言

本篇主要介绍了指令系统的寻址方式,其中数据的方式可以囊括为四大类:立即数寻址,直接/间接寻址,需要ALU的寻址(基址寻址、变址寻址、相对寻址)和堆栈寻址。其中基址寻址和变址寻址较为相似,但是其应用场景有所不同,变址寻址也是考研的热点问题。希望大家可以在理解的基础上记忆,下面我们开始学习寻址方式吧!


一、寻址方式

我们需要通过指令中给出的地址码字段寻找真是操作数地址,即根据指令中的形式地址A寻址找到有效地址EA。下面我们即将开始寻址之旅!

在这里插入图片描述

二、指令寻址

在这里插入图片描述


注意:当取指令后PC程序计数器的地址会有相应的变化,这里PC+1中的1要看寻址的单位是什么,如果按字节寻址则此处的1代表一个字节,按字寻址则此处的1代表一个字。跳跃寻址由转移指令给出PC要加的数。

三、数据寻址

在这里插入图片描述

1.立即(数)寻址

操作数本身在指令字内。A即为操作数,A是补码,可正可负。

在这里插入图片描述

2.直接寻址

在这里插入图片描述


✓ 寻找操作数比较简单,不需要专门的计算操作数的地址。
✓ 在指令执行阶段,只对主存访问一次。
✓ 缺点是A的位数限制了操作数的寻址范围

3.存储器间接寻址

在这里插入图片描述


✓ 有效地址由形式地址间接给出。
✓ 扩大了操作数的寻址范围。
✓ 可以方便地完成子程序返回。
✓ 缺点是指令的执行阶段需要访存2次(一次间址)或多次(多次间址)。
多次间接寻址时,当标志位变为0时才算找到有效地址。

在这里插入图片描述

4.寄存器寻址

在这里插入图片描述


✓ 地址码字段直接指出寄存器编号,操作数在该寄存器内。
✓ 无须访存,减少了执行时间。
✓ 指令字较短(寄存器数量有限),节省存储空间。
✓ 在计算机中广泛应用。

5.寄存器间接寻址

在这里插入图片描述


✓ 寄存器中存放的是主存单元的地址号。
✓ 比间接寻址少一次访存。

6.基址寻址

在这里插入图片描述


在这里插入图片描述


✓ 需要设有基地址寄存器BR。
✓ 有效地址等于形式地址加上基址寄存器中的内容(称为基地址)。
✓ 分为隐式和显式两种
• 隐式:设置专门的基址寄存器,用户使用时,不需要明显指出该寄存器;
• 显式:用户明确指出通用寄存器中的哪一个作为基址寄存器。

7.变址寻址

在这里插入图片描述


✓ 与基址寻址极为相似。
✓ 有效地址为形式地址与变址寄存器IX内容之和。
✓ 如果变址寄存器位数足够,则可以扩大寻址范围。
✓ 在遇到需要频繁修改地址时,无须修改指令,只要修改变址值就可以。
• 例如:要把一组连续存放在主存单元中的数据(首地址是A)依次传送到另一存储区(首地址为B)中去,则只需在指令中指明两个存储区的首地址A和B(形式地址),用同一变址寄存器提供修改量K,即可实现(A+K)→B+K。
• 变址寄存器的内容在每次传送之后自动地修改。

基址寻址和变址寻址的比较
➢ 在形成有效地址时所用的算法是相同的,而且在一些计算机中,这两种寻址方式都是由同样的硬件来实现的。
➢ 两种寻址方式应用的场合不同,变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据;而基址寻址面向系统,主要用于逻辑地址和物理地址的变换,用以解决程序在主存中的再定位和扩大寻址空间等问题。在某些大型机中,基址寄存器只能由特权指令来管理,用户指无权操作和修改。

8.相对寻址

✓ 有效地址为程序计数器(PC)内容(即当前指令的地址)与形式地址相加。
✓ 被应用于转移指令
EA = (PC) + A

在这里插入图片描述


在这里插入图片描述


解析:指令寻址的时候程序计数器(PC)需要计数,该题为跳跃寻址,按字节寻址,且指令为二字节指令,故需要PC+2,得出PC=2002H,则位移量为2008H-2002H=06H。

9.堆栈寻址

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

10.小结

在这里插入图片描述


在这里插入图片描述

二、指令类型(了解)

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

三、RISC和CISC

大量测试表明,最常使用的是一些比较简单的指令,这类指令仅占指令总数的20%,但在各种程序中出现的频度却占80%,其余大多数指令是功能复杂的指令,这类指令占指令总数的80%,但其使用频度很低,仅占20%。因此,人们把这种情况称为“20%-80%律”。

主要特征对比:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

四、例题

例1:

在这里插入图片描述


解析:需要偏移寻址的方式有:基址寻址、变址寻址和相对寻址。
例2:

在这里插入图片描述


解析:寄存器的存储量小,对应的可寻址范围小,若想缩短指令中某个地址段的位数,那就需要选用寄存器寻址的方法。

例3:

在这里插入图片描述


解析:本题选C,解析如下:首先()的含义代表其相关地址查询到的内容。本题为先变址后间址的方式寻址,变址得出的地址A=(I)+D,此时采用间址的方式,故操作数的有效地址EA=(A)=((I)+D)

例4:

在这里插入图片描述


解析:变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据。

例5:

在这里插入图片描述


解析:要明确double型数组是64位,8个字节的,sizeof(double)即为8,该函数就是监测当前类型占用几个字节的,由题目分析知取元素时,每跳8个字节,变址寄存器(IX)自增1,就看跳了几次8个字节,便可判断IX的内容为多少。2100H-2000H=100H,16进制转为10进制得出100H= 1 6 2 16^{2} 162,用该值除以8即可得解为32。

例6:

在这里插入图片描述


解析:首先本题要明确大端方式是存储时将数据的高位有效字节放在地址的低位,低位有效字节放在地址的高位(如题目举例)因此我们要找的最低有效字节存储在地址的高位上,这意味着我们找到首地址后仍需在此基础上加3H才是目标地址。题目中采用基址寻址的方式,需要用形式地址和基地址寄存器加和求解操作数的地址(首地址),因为形式地址是补码,故我们将其形式转变为FFFF FF12H(在补码前补1,相当于在原码前补0,对地址本身没有影响),F000 0000H+FFFF FF12=EFFF FF12H,当前地址是操作数高位有效字节的地址(首地址)那么加3H后得到的最低位有效字节地址为EFFF FF15H。
例7:

在这里插入图片描述


解析:对题目进行逐句分析,指令为16位定长格式,且操作码位数和寻址方式位数固定(此处提及寻址方式位数代表寻址方式也需要占用指令位置),又该指令系统支持4种寻址方式,故寻址方式占2位;该系统有48条指令, 2 5 2^{5} 25<48< 2 6 2^{6} 26,故操作码位数至少需要6位,因此地址为16-6-2=8位,可寻地址范围不能为负数,故本题范围为0~255。(偏移量可以有正有负,但地址范围没有负数)


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340