定位内存单元的多种寻址方式

当数据存放在内存中时,可以使用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法被称为寻址方式。

指令读取与执行
0001

定位内存单元的寻址方式有5种:
多种寻址方式

一. 直接寻址

寻址方式:[idata] 
含义: EA = idata 
寻址过程: 例:mov ax,ds:[000E] 
例:mov ax,[5]; (ax)=((ds)*16+5) 

CS 和 IP 中的地址通过地址加法器进行移位相加得到代码的物理地址,通过地址总线进入内存,取出相应地址的机器码 000EA1,通过数据总线传到指令缓冲寄存器,读取指令判断是直接寻址,则通过段地址 ds和偏移地址 [000E] 得到数据的物理地址,在内存中取出。

二. 寄存器间接寻址

寻址方式: [bx] 
含义: EA = (bx) 
寻址过程: 例: mov ax,[bx] 
例:mov ax,[bx]; (ax)=((ds)*16+(bx))

CS和IP中的地址通过地址加法器进行移位相加得到代码的物理地址,通过地址总线进入内存,取出相应地址的机器码078B,通过数据总线传到指令缓冲寄存器,读取指令判断是寄存器间接寻址,则通过段地址 ds 和寄存器 BX 提供的偏移地址得到数据的物理地址,在内存中取出。

三. 寄存器相对寻址

寻址方式:[bx+idata] 
含义: EA = (bx)+idata 
寻址过程: 例: mov ax,[bx+1] 
例:mov ax,[bx+5] ;(ax)=((ds)*16+(bx)+5) 

CS和IP中的地址通过地址加法器进行移位相加得到代码的物理地址,通过地址总线进入内存,取出相应地址的机器码 01478B ,通过数据总线传到指令缓冲寄存器,读取指令判断是寄存器相对寻址,则通过段地址 ds 和寄存器 BX 提供的内容加上一得到偏移地址从而得到数据的物理地址,在内存中取出。

四. 基址变址寻址

寻址方式: [bx+si] ; [bx+di] 
含义: EA = (bx)+(si) ; EA = (bx)+(di)
(可以表示为[bx][si],相当于一个二维数组 )
寻址过程: 例: mov ax,[bx+si] 
例:mov ax,[bx+si]; (ax)=((ds)*16+(bx)+(si)) 

CS和IP中的地址通过地址加法器进行移位相加得到代码的物理地址,通过地址总线进入内存,取出相应地址的机器码 008B ,通过数据总线传到指令缓冲寄存器,读取指令判断是基址变址寻址,则通过段地址ds和寄存器BX提供的内容加上源寄存器 SI提供的内容得到偏移地址从而得到数据的物理地址,在内存中取出。

五. 相对基址变址寻址

寻址方式: [bx+si+idata] ; [bx+di+idata] 
含义: EA = (bx)+(si)+idata ; EA =(bx)+(di)+idata 
寻址过程: 例: mov ax,[bx+si+1] 
例:mov ax,[bx+si+5]; (ax)=((ds)*16+(bx)+(si)+5) 

CS和IP中的地址通过地址加法器进行移位相加得到代码的物理地址,通过地址总线进入内存,取出相应地址的机器码 01408B ,通过数据总线传到指令缓冲寄存器,读取指令判断是相对基址变址寻址,则通过段地址ds和寄存器BX提供的内容加上源寄存器SI提供的内容再加上一得到偏移地址从而得到数据的物理地址,在内存中取出。

六.寻址方式多样性的意义

在效率和方便性上找一个平衡。立即数寻址和寄存器寻址在效率上是最快的,但寄存器仅有几个非常宝贵不可能将操作数都存入其中等待使用,立即数的使用场合也非常有限,这样就需要将数据保存在内存中,然后使用直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址、相对基址加变址寻址这些寻址方式将内存中的数据移入寄存器中。

猜你喜欢

转载自blog.csdn.net/qq_36148847/article/details/79741161