暫存器相對定址方式,運算元在儲存器中,其有效地址是一個基址暫存器(BX、BP)或變址暫存器(SI、DI)的內容和指令中的8位/16位偏移量之和。其有效地址的計算公式如下圖所示。
在不使用段超越字首的情況下,有下列規定:
若有效地址用SI、DI和BX等之一來指定,則其預設的段暫存器為DS;
若有效地址用BP來指定,則其預設的段暫存器為SS。 指令中給出的8位/16位偏移量用補碼錶示。在計算有效地址時,如果偏移量是8位,則進行符號擴充套件成16位。當所得的有效地址超過0FFFFH,則取其64K的模。
例:假設指令:MOV BX, [SI+100H],在執行它時,(DS)=1000H,(SI)=2345H,記憶體單元12445H的內容為2715H,問該指令執行後,BX的值是什麼?
解:根據暫存器相對定址方式的規則,在執行本例指令時,源運算元的有效地址EA為:
EA=(SI)+100H=2345H+100H=2445H 該運算元的物理地址應由DS和EA的值形成,即:
PA=(DS)*16+EA=1000H*16+2445H=12445H。所以,該指令的執行結果是:把從物理地址為12445H開始的一個字的值傳送給BX。
暫存器相對定址方式,運算元在儲存器中,其有效地址是一個基址暫存器(BX、BP)或變址暫存器(SI、DI)的內容和指令中的8位/16位偏移量之和。其有效地址的計算公式如下圖所示。
在不使用段超越字首的情況下,有下列規定:
若有效地址用SI、DI和BX等之一來指定,則其預設的段暫存器為DS;
若有效地址用BP來指定,則其預設的段暫存器為SS。 指令中給出的8位/16位偏移量用補碼錶示。在計算有效地址時,如果偏移量是8位,則進行符號擴充套件成16位。當所得的有效地址超過0FFFFH,則取其64K的模。
例:假設指令:MOV BX, [SI+100H],在執行它時,(DS)=1000H,(SI)=2345H,記憶體單元12445H的內容為2715H,問該指令執行後,BX的值是什麼?
解:根據暫存器相對定址方式的規則,在執行本例指令時,源運算元的有效地址EA為:
EA=(SI)+100H=2345H+100H=2445H 該運算元的物理地址應由DS和EA的值形成,即:
PA=(DS)*16+EA=1000H*16+2445H=12445H。所以,該指令的執行結果是:把從物理地址為12445H開始的一個字的值傳送給BX。