七種尋址方式(32位地址的尋址方式)
在32位微機(jī)系統(tǒng)中,除了支持前面的七種尋址方式外,又提供了一種更靈活、方便,但也更復(fù)雜的內(nèi)存尋址方式,從而使內(nèi)存地址的尋址范圍得到了進(jìn)一步擴(kuò)大。
在用16位寄存器來(lái)訪問(wèn)存儲(chǔ)單元時(shí),只能使用基地址寄存器(BX和BP)和變址寄存器(SI和DI)來(lái)作為地址偏移量的一部分,但在用32位寄存器尋址時(shí),不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一個(gè)組成部分。
當(dāng)用32位地址偏移量進(jìn)行尋址時(shí),內(nèi)存地址的偏移量可分為三部分:一個(gè)32位基址寄存器,一個(gè)可乘1、2、4或8的32位變址寄存器,一個(gè)8位/32位的偏移常量,并且這三部分還可進(jìn)行任意組合,省去其中之一或之二。
32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;
32位變址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。
下面列舉幾個(gè)32位地址尋址指令:
MOV AX, [123456H]
MOV EAX, [EBX]
MOV EBX, [ECX*2]
MOV EBX, [EAX+100H]
MOV EDX, [EAX*4+200H]
MOV EBX, [EAX+EDX*2]
MOV EBX, [EAX+EDX*2+300H]
MOV AX, [ESP]
用32位地址偏移量進(jìn)行尋址的有效地址計(jì)算公式歸納如公式所示。
由于32位尋址方式能使用所有的通用寄存器,所以,和該有效地址相組合的段寄存器也就有新的規(guī)定。具體規(guī)定如下:
1、地址中寄存器的書(shū)寫順序決定該寄存器是基址寄存器,還是變址寄存器;
如:[EBX+EBP]中的EBX是基址寄存器,EBP是變址寄存器,而[EBP+EBX]中的EBP是基址寄存器,EBX是變址寄存器;
2、默認(rèn)段寄存器的選用取決于基址寄存器;
3、基址寄存器是EBP或ESP時(shí),默認(rèn)的段寄存器是SS,否則,默認(rèn)的段寄存器是DS;
4、在指令中,如果使用段前綴的方式,那么,顯式段寄存器優(yōu)先。
下面列舉幾個(gè)32位地址尋址指令及其內(nèi)存操作數(shù)的段寄存器。