微机原理--寻址方式--存储器操作数的寻址方式

存储器操作数的寻址方式

TIPS:
♥指令操作的对象在内存中,表现形式为[ ]
♥ 指令给出运算对象在内存某个逻辑段中的偏移地址:[偏移地址]
♥逻辑段的段基地址通过默认重设方式给出
♥存储器操作数的字长本身并不确定,其字长取决于另一个寄存器操作数,或通过其他方式指定字长

1. 直接寻址

指令直接给出操作数的偏移地址
eg:MOV AX,[1200H] ;将数据段1200H位置的内容存放给AL中,1201H的内容存放给AH中

直接寻址方式下,操作数默认在数据段,但允许段重设,即由指令给出所在逻辑段
eg:MOV AX,ES:[1200H] ;将附加段1200 H位置的内容存放给AL中,1201H的内容存放给AH中

个人理解
加上[ ]就表示需要到寄存器以外的地方寻找地址了,此时应首先考虑在存储器的哪个段,然后直接找这个段中所给出的位置。一般来说默认在数据段。

2. 寄存器间接寻址

操作数存放在内存中,数据在内存中的偏移地址为方括号[ ]中通用寄存器的内容。

常用四个通用寄存器(这四个寄存器又叫做间址寄存器,分别是BX、BP、SI、DI),可用于存放数据的偏移地址。(间址寄存器又分为基址寄存器BX、BP和变址寄存器SI、DI)

间接寻址的一般格式
eg:MOV BX,1200H ;这里是立即寻址,即将操作数直接送给BX,此时BX=1200H
MOV AX,[BX] ;这里是[BX]=[1200H],所以就转换成了直接寻址,只是多了BX这个中间代理,此时将代码段中的偏移地址为1200H的单元内容赋值给AL,1201H单元的内容赋值给AH

间接寻址就是由寄存器间接给出操作数的偏移地址

操作数的段地址(操作数处于哪一个段)取决于选择哪一个间址寄存器(可以段重设)

BX、SI、DI默认在数据段;BP默认在堆栈段

个人理解
我们可以通过选择的间址寄存器找到对应段,然后通过段的偏移量找到物理位置。当间接寻址时,我们就可以找到源操作数的物理位置。
物理位置=段基地址*16+偏移地址。

3. 寄存器相对寻址

操作数的偏移地址为寄存器的内容加上一个位移量

eg:MOV AX,2000H ;立即寻址,将2000H赋给AX
MOV DS,AX ;DS从AX这里获得段首地址
MOV BX,1200H ;立即寻址,将1200H赋给BX
MOV AL,[BX]5 ;相对寻址,将位于段基地址为2000H,偏移量为1200H+5的内容赋给AL

相对寻址主要用于一维数组的操作

常将位移量作为表头地址,间址寄存器的值作为表内相对地址(使用间会有常数,会有不便)

个人理解
相对寻址就是在间接寻址的基础上增加了一个位移常量,因此判别是间接寻址还是相对寻址的方法就是:看间址寄存器前后有没有常量,有常量的就是相对寻址

4. 基址变址寻址

操作数的偏移地址为
一个基址寄存器(BX、BP)的内容+一个变址寄存器(SI、DI)的内容

其中BX默认在数据段BP默认在堆栈段

操作数的段地址由选择的基址寄存器决定

同相对寻址一样,主要用于一维数组的操作

eg:MOV SI,1100H ;立即寻址,1100H赋值给SI
MOV BX,SI ;将1100H赋值给BX
MOV AX,[SI+BX] ;源操作数的物理地址=数据段段基地址*16+1100H+1100H

个人理解
基址变址寻址就是先找到基址寄存器所在的段首地址,再加上基址寄存器偏移量和变址寄存器的偏移量。它所存在的特点是[BX][BP]两者必有其一,[SI][DI]两者必有其一

5. 基址变址相对寻址

操作数的偏移地址为
基址寄存器+变址寄存器+位移量

操作数的段地址由选择的基址寄存器决定

基址变址相对寻址方式主要用于二维数组的操作

eg:MOV DI,1100H ;立即寻址,将1100H赋给DI
MOV BP,DI ;将1100H赋给BP
MOV AL,[BP][DI]5 ;BP说明操作数在堆栈段,其物理地址=堆栈段段基地址*16+1100H+1100H+5
个人理解
基址变址相对寻址只是在基址变址的基础上增加了一个常数偏移量,其源操作数的物理地址便可以由此把握。

  • 21
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微型计算机原理及应用基本学习要求 注:以下基本要求按内容排列,而不是按章节排列 一、 微型计算机基础与概念 1、计算机中信息的表示方式?为何要用二进制表示方式? 2、掌握二进制数、八进制数、十进制数、十六进制数的概念(数码符号、进位、展开式); 3、掌握二进制、十进制、十六进制数间的相互转换,要熟练掌握将8位二进制数转换为相应的十进制数,能熟练的将0~255范围内的十进制数转换为二进制数,能将十六进制数转换成二进制形式,能将二进制转换成十六进制表示形式; 4、机器数与真值的概念,熟练掌握真值与机器数之间的相互转换; 5、带符号数的原码、反码和补码表示,熟练掌握原码和补码之间的相互转换(已知一个数的原码求它的补码,已知一个数的补码求出它的原码); 6、已知一个数的补码,会求它的真值,掌握补码的加减法运算,掌握机器负数的求法; 7、能简述微型计算机系统硬件的组成(微处理器、存储器、输入及输入设备、输出接口及输出设备、总线); 8、CPU在内部结构上由哪几部分组成(算术逻辑运算单元ALU、控制器、寄存器),简要说明各部分的作用? 9、地址总线、数据总线、控制总线的作用?它们各自是双向还是单向? 二、 80x86微处理器 1、8086处理器物理地址的生成:段基地址左移4位+段内偏移地址。会计算类似条件下的物理地址:(1)段寄存器CS=1200H,指令指针寄存器IP=2000H,此时,指令的物理地址为多少?(2)一个存放在8086计算机系统内存中的数据,它以DS作为段基址寄存器且设(DS)=1000H,段内偏移地址为2300H,会计算该数据的物理地址(同样是:段基地址左移4位+段内偏移地址),指向这一物理地址的DS值和段内偏移地址值是唯一的吗(不是唯一的)? 2、掌握物理地址的生成方法(8086只有实地址模式,物理地址=段寄存器的内容左移4位+偏移地址);注意向段寄存器传送数据的方法(CS位代码段基地址寄存器,不能做目的地址,立即数不能直接传送给段基地址寄存器),注意代码段寄存器CS不能作为目的寄存器; 3、掌握8086的寄存器及其使用方法,注意AX、BX、CX、DX可以作为8位寄存器使用; 4、8086的标志寄存器有哪些状态标志位?各个标志位在什么情况下置位?注意数据传送指令不影响标志寄存器(除了向标志寄存器传送指令);掌握标志寄存器中各个控制标志位的作用?如何设置这些控制位?注意标志寄存器的传送指令、压栈与弹出指令,修改标志寄存器的方法; 5、能描述计算机中IO端口的编制方式有几种(独立编址和统一编址2种),每种编址方式的特点?8086采用IO独立编址方式,注意X86中IO接口的寻址方式,X86的IO操作指令,IN和OUT指令的端口地址、IN/OUT指令只能是端口与累加寄存器AX(或AL)进行传送; 6、系统的复位后内部寄存器的状态(除CS=0FFFFH外,其他寄存器=0000H),8086系统复位后,第一条执行的指令的地址(0FFFF0H); 7、8086的中断系统,向量中断的概念,中断向量表和结构,中断向量表和中断
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
双端口存储器实验中的独立方式是指,在实验中使用两个独立的存储器模块来实现读写操作的同时进行。 在这个实验中,我们需要使用两个存储器模块,一个用于读操作,一个用于写操作。首先,我们需要确定存储器的数据宽度和地址宽度,根据实验要求选择适当的存储器模块。 接下来,我们需要将写存储器的数据线连接到实验电路中的数据输入端口,并将读存储器的数据线连接到实验电路中的数据输出端口。同时,将写存储器的地址线连接到实验电路中的地址输入端口,并将读存储器的地址线连接到实验电路中的地址输出端口。 在实验开始时,首先需要将写存储器清空,以确保存储器中没有之前的数据。然后,根据实验要求,将要写入的数据写入到写存储器中。 在读写操作中,可以根据需要在不同的时钟周期进行读写操作。使用一个控制信号来选择读存储器或写存储器进行操作。 在读操作中,将实验电路中的读地址输入给读存储器,并将读存储器的输出数据线连接到实验电路的数据输出端口。在写操作中,将实验电路中的写地址输入给写存储器,并将实验电路的数据输入端口连接到写存储器的数据线上。 通过控制信号来选择读写操作,并在适当的时钟周期进行读写操作,实验电路将能够同时进行读写操作,从而实现双端口存储器的独立方式。 在实验结束后,可以通过读取读存储器的内容来验证写操作的正确性,以确保实验结果的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值