软件设计师笔记---寻址方式

一、寻址方式介绍

  计算机中程序是由按一定顺序排列的一系列指令,通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,告诉计算机要干什么;操作数指参加运算的数据及其所在的单元地址。整条指令以二进制编码的形式存放在存储器中。指令要进行操作,都有相应的数据参加,可是数据在哪里?是什么?都是通过不同的方式来找到的。这就是为什么需要寻址。

  在计算机中,CPU都会定义出自己特定的指令系统,不过都遵循着统一的标准格式。指令的基本格式是由操作码和地址码两个部分组成的。操作码指出该指令要完成什么操作,地址码则是提供原始的数据。指令系统中定义操作码的方式可以分为规整型(定长编码)和非规整型(变长编码)两种。

  

 

  寻找指令中所需要的操作数或操作数地址的方式称为寻址方式。80486指令系统的寻址方式包括三种类型:操作数寻址、转移地址寻址及I/O端口寻址。其中操作数寻址有七种。

二、具体寻址方式

  (1)隐含寻址方式

  在指令中不明显地给出而是隐含着操作数的地址。例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。

  (2)立即寻址

  指令的地址字段指出的不是操作数的地址,而是操作数本身。

  立即数,操作数包含在指令中。在取指令的同时,操作在操作码后面数随着取出,这种操作数被称为立即数。一般立即数以常数形式出现的。常数可以是二进制数、十进制数、十六进制数、字符串。

  特点:指令执行时间很短,不需要访问内存取数。题目中所说的"操作数包含在指令中的寻址方式"就是立即寻址。

  例如,单地址的移位指令格式为这里D不是地址,而是一个操作数。F为标志位,当F=1时,操作数进行右移;当F=0时,操作数进行左移。

  (3)直接寻址

  特点:在指令格式的地址字段中直接指出操作数在内存的地址D。

  采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,即E=D.因此通常把形式地址D又称为直接地址。此时,由寻址模式给予指示。如果用S表示操作数,那么直接寻址的逻辑表达式为 S=(E)=(D)

  (4)间接寻址

  间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。

  例如,如果把直接寻址和间接寻址结合起来,指令有如下形式:寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。

  (5)寄存器寻址何寄存器间接寻址

  当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。这也就是题目中所说的"操作数在寄存器中的寻址方式".

  寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。这也就是题目中所说的"操作数的地址在寄存器中的寻址方式".

  (6)相对寻址

  相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。"相对"寻址,就是相对于当前的指令地址而言的。

  (7)基址寻址

  基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。它的优点是可以扩大寻址能力。与形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。

  (8)变址寻址

   变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。

转载于:https://www.cnblogs.com/null-/p/9717681.html

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页