微机原理与接口技术 - 指令系统_操作数和寻址方式

 

目录

 

指令系统基本概念

指令格式

指令中的操作数

(1)立即数操作数

(2)寄存器操作数

(3)存储器操作数

指令周期、机器周期、时钟周期

数据总线和地址总线

总线宽度:

地址总线eg:

数据总线eg:

寻址能力

寻址方式

立即寻址

寄存器寻址

直接寻址

寄存器间接寻址

基址、变址寻址

小结:

寻址方式练习


指令系统基本概念

指令格式

操作数在很多时候表示的是运算数据存放的地址,所以也可以称为地址码。但是有一种情况是这个操作数就表示数据本身,也就是运算对象自己,而不是运算对象的存放处。因此,操作数就表示指令执行的对象。

指令中的操作数

(1)立即数操作数

立即数本身是参加操作的数据,可以是8位或16位,它没有运算地址的含义。又因为目标操作数一定表示操作结果的去向,即目标操作数一定要有地址的含义,所以立即数只能作为源操作数

eg:

MOV AX,1234H:MOV的功能是实现数据传输,即将源操作数送到目标地址里面。这条指令的意思就是,把常数1234H送给目标寄存器AX。

MOV BL,22H:同上。

立即数可以是无符号或有符号数,给出的数据一定要符合字长的要求。

(2)寄存器操作数

参加运算的数存放在指令给出的寄存器中,可以是16位或8位。

eg:

  • MOV AX, BX:将BX中的内容送到AX中。
  • MOV DL, CH:将CH寄存器中的数据送到DL寄存器中。

(3)存储器操作数

参加运算的数存放在存储器的某一个或两个单元中。表现形式:[ ]

[ ] 里存放操作数在内存中的偏移地址。

指令的操作数出现 [ ] ,表示要寻址的数在内存中。

eg:

  • MOV AL, [ 1200H ]:目标操作数AL是一个8位寄存器,意味着它的源操作数/存储器操作数是一个字节单元。把内存中偏移地址为1200H的单元的内容拿出来送给累加器AL。
  • MOV AX, [ 1200H ]:因为目标操作数变成了AX,它是一个16位的寄存器,即两个字节单元。所以该条指令为,将1200H单元的内容拿出来送给了AL,将1201H单元的内容送给了AH,合起来就是AX等于1122H。

指令周期、机器周期、时钟周期

  • 指令周期:CPU从内存取出一条指令并执行的时间。
  • 机器周期:又叫CPU周期,CPU从内存取出一条指令的最短时间。
  • 时钟周期:又叫节拍脉冲、震荡周期。

指令周期包含多个机器周期,机器周期包含多个时钟周期

数据总线和地址总线

总线宽度:

总线带宽:单位时间内总线上可传送的数据量,总线带宽=位宽×工作频率。

总线位宽:能同时传送的数据位数。

地址总线的宽度:也可以理解为CPU寄存器位数,表明CPU的寻址能力;用2的n次方来计算;

数据总线的宽度:决定了一次可以传送多少个bit。

数据总线的位宽和地址总线是直接挂钩的,假如说数据总线的宽度是32位,每一次读取数据都会动用32根数据总线来读取,即一次可以读取4个字节,同时地址总线一次寻址范围也必须满足4字节,即每次寻址都需要2根地址总线。

C语言的内存对齐机制。待了解。

地址总线eg:

假设某个CPU有10根地址总线。一根线的状态只有两种:高电平1和低电平0。10根线就是2^10,数据大小的范围是0~1023内存单元。一个地址表示一个内存单元,一个内存单元对应一个字节。则它的寻址范围为1KB(1KB=1024B,B表示字节)。若CPU的地址总线的宽度为32,就是2^32,对应范围为4G。

数据总线eg:

某个CPU的数据总线为8根,那么它一次可传送一个8bit的二进制数(1个Byte),即该CPU一次性可传送的数据大小为1B;若数据总线为16根,则可以传送2B。

寻址能力

是CPU最多可以在内存中寻找到的地址数量,更多的CPU无法访问。内存的大小可以小于寻址能力,但不能大于它。地址总线的宽度决定了CPU寻址的上限(即寻址能力)。例如:2根地址线有四种组合,00,01,10,11。于是CPU就只能访问这四个地址。

寻址方式

立即寻址

立即寻址方式所提供的操作数紧跟在操作码后面,与操作码一起放在指令代码段中,不需要到其他地址单元中去取。立即数可以是8位,也可以是16位。这种寻址方式主要用于给寄存器或存储单元赋初值的场合。

寄存器寻址

寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。

由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采用寄存器寻址方式的指令执行速度较快。

直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址属于存储器寻址用于说明操作数或操作数地址所在存储单元的地址

直接寻址

直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址。

寄存器间接寻址

寄存器间接寻址的操作数在存储器中,操作数有效地址在寄存器中。

  • 由寄存器间接给出操作数的偏移地址;
  • 存放偏移地址的寄存器称为间址寄存器(BX、BP、SI、DI);
  • 操作数的段地址(数据处于哪个段)取决于选择哪个间址寄存器:BX、SI、DI--默认在数据段,BP--默认在堆栈段。

基址、变址寻址

eg:

执行下列指令:

MOV SI, 1100H

MOV BX, SI

MOV AX, [SI+BX]

解释:BX和SI相加等于2200H,因为基址寄存器选择的是BX,所以这个源操作数默认是在数据段,所以执行结果是将2200H和2201H两个单元的内容送给累加器AX。

小结:

寻址方式表示指令运算对象的来源和运算结果的去向。

注意点:

  • 立即寻址仅针对源操作数
  • 寄存器寻址表示指令运算的数据在寄存器中(常为通用寄存器)
  • 存储器寻址表示指令运算的对象在内存中

              数据在内存中的偏移地址在[]中,段地址可以默认或重设

  • 存储器寻址和寄存器寻址均可用于源或目标操作数

深入了解寻址方式,才能理解指令的执行结果。

寻址方式练习

上述题目最后一句话的解释:

如果源操作数是存储器操作数的话,请给出这个源操作数的物理地址。因为寄存器不存在物理地址与逻辑地址这一说,寄存器的地址就是代号,就是固定的。这些物理地址、逻辑地址、偏移地址等等针对的全是存储器操作数。

解答:

第三个:两个寄存器加一个常量,所以是基址变址相对寻址。因为这里基址寄存器选择的是BX,所以默认在数据段。所以数据段的段地址是6000,也就知道数据段的段首地址是60000,加起来就得到这个指令的物理地址是608F0。

第四个:在汇编语言中,单引号表示字符。所以这里的大写字母B的ASK码是42H,所以这个指令的源操作数也是立即寻址方式。

第五个:寄存器间接寻址,只不过它通过了段重设,重设数据在里,附加段的段基地址在题目中给出是2000H。所以这条指令中源操作数的物理地址就是20800H。

第六个:基址寄存器选择的是BP,默认是在堆栈段,所以它的物理地址就是堆栈段寄存器左移四位加上BP的值,就可以得到是16200H。(???这里不懂)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值