计算机组成原理4.2指令寻址方式(代码片段)

桃浪十七丶 桃浪十七丶     2023-03-25     122

关键词:

4.2.1指令寻址和数据寻址

4.2.1.1指令寻址:

顺序寻址: 取出指令后PC指向下一条需执行指令的地址

1)顺序寻址:

定长指令字结构寻址:
假设指令字长 = 存储字长 = 16bit = 2Byte,且主存按字编址。则每次取出指令后PC + 1;若主存按字节编址,意味着每条指令都会占两个地址,则每次取出指令后PC + 2。

变长指令字结构寻址:指令字长 = 存储字长 = 16bit,主存按字节编址。假设相同颜色的是同一条指令。

假设从0开始,CPU无法判断指令长度,因此CPU会每次先读入一个字,并区分按字节编址还是按字编址,使得程序计数器PC + “一个指令长度”,本次叙述的是按字节编址,因此PC + 4,若按字编址,PC + 2。操作码被包含在第一个字,CPU根据操作码判断读取指令是几地址指令,由此确定指令占用多少字节,并继续读取后续。

2)跳跃寻址:

下一条指令的地址码不由程序计数器指出,而是由本条指令给出下条指令地址码的计算方式。
定长指令字结构寻址,指令字长 = 存储字长 = 16bit,主存按字编址。意味着每条指令占用一个字,两个字节;变长指令字结构寻址,与顺序寻址中变长指令字结构的情况可类比,不一一赘述,主存按字节编址的情况与顺序须知可以类比得出,也不赘述。

如上图,仍然假设CPU从0开始读入指令,从0~2都是顺序寻址,此时,执行完指令2时,PC指向的是指令3,接下来,CPU读入指令3,PC + 1,PC指向4,CPU执行指令3,指令3是JMP,无条件跳转指令,跳转到7,此时PC重新指向,指向7。

4.2.1.2 数据寻址:

确定本条指令的地址码指向的真实地址,是指如何在指令中表示一操作数的地址,与跳跃寻址并不相同。由于数据寻址的方式较多,为了便于区别,会在指令字的形式地址前面设置几个bit作为寻址方式位,这几位是寻址特征。每个形式地址前面都会有一个寻址方式位。

4.2.2 数据寻址的方式

一地址指令:

二地址指令:

介绍十种数据寻址方式,由于10 < 16 = 24,因此十种情况用4个bit表示足以。假设指令字长 = 机器字长 = 存储字长,假设操作数是3。

4.2.2.1 直接寻址


指令字中的形式地址A就是操作数3的真实地址EA,CPU根据形式地址去主存中相应地址找到数据3并将其放入ACC中进行计算。取指令,执行指令一共访问主存两次直接寻址过程简单,但操作数的地址范围有限,且操作数地址发生变化时指令需要再修改。

4.2.2.2 间接寻址


指令的形式地址码A指向主存中某个有效地址EA,EA中存储着操作数的真实地址,可以用EA = (A)来表示,其中(A)表示地址A所指向的主存单元里的数据取指令访问存储一次,执行指令访问存储两次一共三次。间接寻址扩大了寻址范围,便于编写汇编程序,但是由于需要多次访存,因此执行指令速度会慢。 间接寻址可以多层“套娃”,间接寻址可以与C语言中的一级指针、二级指针、多级指针类比理解。

4.2.2.3 寄存器寻址


指令中的形式地址码Ri指向某个编号为Ri的寄存器寄存器中存放操作数,取指令访存一次,执行指令不需要访存寄存器寻址执行指令不需要访存,因此执行速度快,支持向量或者矩阵运算,但由于价格昂贵,寄存器个数有限。

4.2.2.4 寄存器间接寻址


指令中Ri指向某个编号为Ri的寄存器,寄存器中存放操作数在主存中的真实地址EA,EA = (RI),取指令访存一次,执行指令访存一次共两次。寄存器间接寻址比一般间接寻址更快。

4.2.2.5 隐含寻址


如两个操作数的运算,一个操作数的地址存放在指令的形式地址码A中,另一个操作数B在ACC中,操作数B被指令隐含在ACC中。缩短了指令长度,但需要增加存储操作数或者隐含操作数地址的硬件。

4.2.2.6 立即寻址

指令的形式地址码就是操作数本身,一般用补码表示,#表示立即寻址特征取指令访存一次,执行指令不访存,指令执行时间短,但形式地址码的位数限制了操作数的表示范围

4.2.2.7 基址寻址指令中形式地址码A加上基址寄存器中的内容就是操作数的有效地之EA,EA = (BR) + A,如上图,CPU中的基址寄存器可以,可以采用专用的寄存器,也可以采用通用寄存器,但是若采用通用寄存器,需要在指令中用若干bit表示为Ri,来指明使用了编号Ri的通用寄存器作为基址寄存器。
关于基址寻址过程:


还是采用讲义里的笔记截图,假设这一段程序的指令,在主存中的地址不是从0开始,而是从100或者其他地址开始。**程序运行前,CPU将BR的值修改为当前要执行程序的起始地址,存放到操作系统的程序控制块PCB中。PC指向程序指令起始地址100,第一条指令是取出操作数a,a存放在主存地址码为105 = 100 + 5的位置。**基址寻址适用于多道程序设计,可扩大寻址范围,可用于编写经常浮动的程序。

4.2.2.8 变址寻址

指令中形式地址码A加上基址寄存器中的内容就是操作数的有效地之EA,EA = (IX) + A,如上图,CPU中的基址寄存器可以,可以采用专用的寄存器,也可以采用通用寄存器,但是若采用通用寄存器,需要在指令中用若干bit表示为Ri,来指明使用了编号Ri的通用寄存器作为基址寄存器。

关于变址寻址过程:

假设要执行一段程序

for(int i = 0, i < 10; i ++)

	sum = sum + a[i];


PC指向第二条指令,PC + 1,取操作数到IX中,此时IX为0,下一条指令的形式地址指向7,则ACC中的操作数0,与 7 + (IX) 得到的地址中的数据相加再放到ACC中,完成一次数组元素加法操作,执行指令IX + 1,则是for循环中的i++,比较IX中的数据与10,则是执行判断i < 10。执行指令5,满足指令中的条件,跳转到指令2,重复前述步骤。后续指令执行较为简单,不再赘述。变址寻址适用于循环程序

4.2.2.9 相对寻址

指令中的形式地址码A加上PC中的内容形成的有效地址码EA,EA = (PC) + A,A是相对于PC的偏移量,可正可负,用补码表示。

仍然是讲义中的例子,假设把for循环移动到其他位置,此时就需要用相对寻址,假设for循环程序的起始地址是M,则执行指令到M + 3时,PC + 1 = M + 4,此时(PC) + A,得到M,完成一次循环。相对寻址使得for循环有关程序可以在整个程序内任意浮动,而不用修改指令中的形式地址。

4.2.2.10 堆栈寻址

操作数放在堆栈中,使用堆栈指针(Stack Pointer,SP)作为操作数有效地址,按照FIFO先进先出的原则管理堆栈存储器。可分为硬堆栈和软堆栈,硬堆栈是寄存器堆栈,在CPU中用指定寄存器来存放堆栈,不需要访存就能完成寻址从主存中划分出一段存储空间来作为堆栈的是软堆栈,软堆栈需要一次访存
假设用4个寄存器实现堆栈,CPU从堆栈区按顺序,取出栈顶元素放到ACC中,SP + 1,指向次栈顶元素,取出次栈顶元素放到X中。计算完毕,把计算结果压入栈,SP - 1,完成一次加法操作,减法操作亦然。如下图。
有些情况下栈顶的位置可能在地址数值较小的位置,也可能在地址数值较大的位置,需要详细区分。
计算上述加法过程中,硬堆栈不访存,软堆栈每次压入栈或者弹出栈的操作,都需要访存。
关于堆栈寄存器,在后续的CPU基本结构中也会涉及到。

计算机组成原理期末救急--下

计算机组成原理期末救急--下指令指令格式地址码操作码扩展操作码扩展操作码举例指令操作码操作类型数据存放指令寻址操作数类型数据寻址立即寻址直接寻址间接寻址寄存器寻址寄存器间接寻址隐含寻址总结偏移寻址基址寻... 查看详情

组成原理-指令指令系统(代码片段)

文章目录1指令格式1.1定长操作码1.2变长操作码1.3相关例题2寻址方式2.1指令寻址2.2数据寻址补充:堆栈寻址的执行细节补充:指令中的操作数地址2.3相关例题3汇编指令3.0Intel格式和AT&T格式3.1数据传送指令3.2算术和逻辑... 查看详情

计算机组成:解疑补漏之mov指令与操作数寻址方式(代码片段)

MOV指令以及操作数的寻址方式偏移地址在指令中,操作数在内存中MOV指令默认的操作数存储在DS中(数据段寄存器);此时采用段加偏移。偏移地址在寄存器中,操作数在内存中能够存储偏移地址的寄存器:BX、BP、SI、DI(此时... 查看详情

向题看齐408之计算机组成原理概念记忆总结(代码片段)

408之计算机组成原理概念记忆总结1、计算机系统概述2、数据的表示和运算2.1、进位计数制2.3、定点数的表示2.3.1、表示范围2.4、定点数的计算2.4.1、算数移位2.4.2、逻辑移位2.4.3、循环移位2.4.4、加减运算2.4.5、溢出判断2.4.6、符... 查看详情

计算机组成原理王道考研2021第四章:指令系统--指令的寻址方式(指令寻址和数据寻址)cisc和risc的基本概念

1.指令的寻址方式寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。指令中的地址码字段并不代表操作数的真实地址&#... 查看详情

考前自学系列·计算机组成原理·常见的数据寻址方式(地址码,操作数位置)

立即寻址:操作数直接在指令代码中给出,指令的执行速度很快间接寻址:操作数在存储器中,指令中给出的地址码字段存放操作数地址的地址直接寻址:操作数在存储器中,指令中的地址码字段存放操作... 查看详情

(计算机组成原理)第四章指令系统-第二节3:数据寻址之偏移寻址(基址寻址变址寻址和相对寻址)

...址(1)基本概念(2)相对寻址作用本小节承接上一节:(计算机组成原理)第四章指令系统-第二节2:数据寻址(直接寻址、间接寻址、立即数),主要介绍以下三种数据寻址方式,它们可以归为一类,都是将形式地址视为“偏移... 查看详情

计算机组成原理考点总结1(代码片段)

肥学有话说小伙伴们大家好呀!😃我相信点进来的同学多半都是考研或者找工作面试的同学。机组在考研或者面试中的比例还是很大的。小伙伴们要认真学习呀无论是考研还是面试我都祝你们成功。肥学为了帮助大家我... 查看详情

(计算机组成原理)第四章指令系统-第二节2:数据寻址(直接寻址间接寻址立即数)

文章目录一:指令寻址和数据寻址二:数据寻址(1)直接寻址(2)间接寻址(3)寄存器寻址(4)寄存器间接寻址(5)隐含寻址(6)立即寻址一:指令寻址和数据寻址上一节我们讲到了指令寻址:下一条欲执行指令的地址会由... 查看详情

(计算机组成原理)第四章指令系统-第二节1:指令寻址

文章目录一:顺序寻址二:跳跃寻址经过前面的学习我们知道,程序的运行实则是指令的运行,指令可以顺序执行也可以跳跃执行,那么这个实则是指令的寻址问题指令的寻址其实我们在前面的学习中就已经接触过了。如下,我... 查看详情

指令系统(代码片段)

王道考研计算机组成原理第四章指令系统1、指令格式1.0、指令的定义1.1、指令根据地址码数目分类1.1.1、零地址指令1.1.2、一地址指令1.1.3、二地址指令1.1.4、三地址指令1.1.5、四地址指令1.1.6、地址码的位数1.1.7、总结1.2、指令根... 查看详情

指令系统

第四章指令系统【复习提示】指令系统是表征一台计算机性能的重要因素。读者应注意扩展操作码技术,各种寻址方式的特点及有效地址的计算,相对寻址有关的计算,CISC与RISC的特点与区别。本章知识点出选择题的概率较大,... 查看详情

:微型计算机组成结构(代码片段)

第一章:微型计算机组成结构引言微型计算机组成原理I/O端口寻址和访问控制方式I/O端口和寻址接口访问控制主存储器,BIOS和CMOS存储器主存储器基本输入/输出程序BIOSCMOS存储器控制器和控制卡中断控制器DMA控制器定时/... 查看详情

计算机组成原理百道必考大总结(下)

第三章【扩展指令码技术、寻址方式】      某机器字长16位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一... 查看详情

计算机原理5.4指令格式设计

1、指令格式设计的主要内容操作码字段+寻址方式+地址码字段  根据指令数量的要求及是否支持操作码扩展,确定操作码字段的位数根据对操作数的要求确定地址码字段的个数根据寻址方式的要求,为每个地址码字段确定... 查看详情

计算机组成的原理都有哪几部分?(代码片段)

...该程序处理的数据用同样的方式储存,以此为基础的计算机称为冯诺依曼机。特点:①计算机由运算器,控制器,存储器,输入和输出五部分组成②指令和数据以同等的地位存放于存储器内,并可按地址寻访③指令和数据均用... 查看详情

计算机组成原理取指令与指令译码实验(代码片段)

最终目标:设计一个单周期MIPSCPU在指令周期(即时钟周期)clk上跳沿,执行取指令操作,在clk下跳沿更新PC值。复位信号rst:=1时,PC清零,即指定MIPSCPU从0号主存开始执行程序。生成只读的指令... 查看详情

深度学习计算机指令系统,彻底搞懂指令十大寻址方式

系列文章目录1.《带你深挖计算机底层逻辑,打通你计算机基础知识的任督二脉》2.《深度学习计算机底层原理,深度剖析存储器》3.《基于内存全面理解高速缓冲存储器》4.《深度学习计算机指令系统,彻底搞懂指令... 查看详情