相對(duì)基址加變址尋址方式

字號(hào):

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)的值、一個(gè)變址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。
    在不使用段超越前綴的情況下,規(guī)定:如果有效地址中含有BP,則其缺省的段寄存器為SS;否則,其缺省的段寄存器為DS。
    指令中給出的8位/16位偏移量用補(bǔ)碼表示。在計(jì)算有效地址時(shí),如果偏移量是8位,則進(jìn)行符號(hào)擴(kuò)展成16位。當(dāng)所得的有效地址超過0FFFFH,則取其64K的模。
    例3.5 假設(shè)指令:MOV AX, [BX+SI+200H],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,(SI)=0010H,內(nèi)存單元12310H的內(nèi)容為1234H。問該指令執(zhí)行后,AX的值是什么?
    解:根據(jù)相對(duì)基址加變址尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:
    EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H
    該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:
    PA=(DS)*16+EA=1000H*16+2310H=12310H
    所以,該指令的執(zhí)行效果是:把從物理地址為12310H開始的一個(gè)字的值傳送給AX。
    從相對(duì)基址加變址這種尋址方式來看,由于它的可變因素較多,看起來就顯得復(fù)雜些,但正因?yàn)槠淇勺円蛩囟?,它的靈活性也就很高。比如:
    用D1[i]來訪問一維數(shù)組D1的第i個(gè)元素,它的尋址有一個(gè)自由度,用D2[i][j]來訪問二維數(shù)組D2的第i行、第j列的元素,其尋址有二個(gè)自由度。多一個(gè)可變的量,其尋址方式的靈活度也就相應(yīng)提高了。
    相對(duì)基址加變址尋址方式有多種等價(jià)的書寫方式,下面的書寫格式都是正確的,并且其尋址含義也是一致的。
    MOV AX, [BX+SI+1000H]   MOV AX, 1000H[BX+SI]
    MOV AX, 1000H[BX][SI]    MOV AX, 1000H[SI][BX]
    但書寫格式BX [1000+SI]和SI[1000H+BX]等是錯(cuò)誤的,即所用寄存器不能在“[“,”]”之外,該限制對(duì)寄存器相對(duì)尋址方式的書寫也同樣起作用。
    相對(duì)基址加變址尋址方式是以上7種尋址方式中最復(fù)雜的一種尋址方式,它可變形為其它類型的存儲(chǔ)器尋址方式。表3.1列舉出該尋址方式與其它尋址方式之間的變形關(guān)系。
    源操作數(shù)指令的變形源操作數(shù)的尋址方式
    只有偏移量MOV AX, [100H]直接尋址方式
    只有一個(gè)寄存器MOV AX, [BX] 或 MOV AX, [SI]寄存器間接尋址方式
    有一個(gè)寄存器和偏移量MOV AX, [BX+100H] 或 MOV AX, [SI+100H]寄存器相對(duì)尋址方式
    有二個(gè)寄存器MOV AX, [BX+SI]基址加變址尋址方式
    有二個(gè)寄存器和偏移量MOV AX, [BX+SI+100H]相對(duì)基址加變址尋址方式