定位內存單元的多種尋址方式

當數據存放在內存中時,可以使用多種方式來給定這個內存單元的偏移地址,這種定位內存單元的方法被稱爲尋址方式。

指令讀取與執行
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提供的內容再加上一得到偏移地址從而得到數據的物理地址,在內存中取出。

六.尋址方式多樣性的意義

在效率和方便性上找一個平衡。立即數尋址和寄存器尋址在效率上是最快的,但寄存器僅有幾個非常寶貴不可能將操作數都存入其中等待使用,立即數的使用場合也非常有限,這樣就需要將數據保存在內存中,然後使用直接尋址、寄存器間接尋址、寄存器相對尋址、基址加變址尋址、相對基址加變址尋址這些尋址方式將內存中的數據移入寄存器中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章