80x86定址方式概括總結

鴨脖發表於2013-01-10

書上總共講了十種定址方式,這十種定址方式,從第一種到第十種,其有效地址的計算複雜度逐漸增加。首先我們要弄清楚幾個概念,即什麼是有效地址,什麼是段地址,什麼又是基址,什麼又是變址。有效地址是偏移地址,它和段地址共同構成儲存器中的實體地址。那麼要求得這個有效地址,就有很多方法,不同的方法對應不同的定址方式。段地址是分配給段的實體地址,是某一段地址的開始地址,儲存在DS等段暫存器中,而基址和變址都是相對於不同的定址方式而產生的,一般都對應與特定的定址方式。一般基址暫存器為BX,而變址暫存器為SI。下面還要解釋幾個名詞,即間接和相對的含義。間接指的是某一個地址並不是直接拿到的,而是儲存在另外一個應經給出地址的儲存單元或者暫存器中,必須先拿出它的地址,才能拿出它的內容,也就是說要拿到內容必須進行至少兩次的取。而相對的含義,就是指在地址上要進行一定的運算,必須根據給出的相對始地址求得實際地址,從而根據實際地址求得具體的運算元。理解了這兩個概念有助於識記定址方式。


下面我只說明各個定址方式的有效地址的計算方法:


1:立即定址——運算元在指令中

2:暫存器直接定址——有效地址在暫存器中

3:暫存器間接定址——有效地址在暫存器給出的儲存單元中

4:直接定址——有效地址在指令中

5:暫存器相對定址——基址或者變址暫存器+偏移量

6:基址變址定址——基址+變址

7:相對基址變址定址——基址+變址+偏移量

8:比例變址和基址比例變址和相對基址比例變址這最後三個定址方式,都是在變址上乘以一個比例因子做換算,最後得出實際地址


另外書上還講了段內定址和段間定址,段內定址是相對於IP暫存器的,而段間定址還需要改變CS等段暫存器的值,所以在進行堆疊操作的時候要把相應的段暫存器壓入堆疊中。以上便是對80x86定址方式的簡介。

相關文章