1. 程式人生 > >Intel 80x86 定址方式

Intel 80x86 定址方式

     隨著學習的深入,我們會逐漸接觸到計算機內部的構造方式,以及設計原理,這其中,計算機的定址方式是一個很重要的概念,我們需要好好理解一下。

一.預備知識:

    (1)運算元

    在接觸定址方式之前,我們還要先了解一下運算元的概念,根據運算元存放方式的不同,我們可以將運算元分成3類,

    1.立即運算元:運算元包含在本條指令中;

    2.暫存器運算元:運算元存放在CPU的某個暫存器中;

    3.儲存器(記憶體)運算元:運算元存放在儲存器中;

    (2)邏輯地址

     邏輯地址 = 段地址(儲存單元所在邏輯段地址)左移4位 + 偏移地址(該單元的偏移地址)

     我們可以發現,這是通過左移的方式將16位擴充套件成了20位,當初好像因為為了方便處理相容問題,才採用這種擴充套件方式的。

     段 是記憶體設計模型的結果,在80x86記憶體模型中,各處理器的地址空間不一致(因為要保持相容性),但它們都被分割成以64KB為單位的區域,每個這樣的區域稱為段。

     note:不同的段地址和偏移地址可能組成相同的記憶體地址,如:(段地址(左移4為後):A0000,偏移地址FFFF,最終地址AFFFF;  段地址(左移4位後):AFFF0,偏移          地址000F,最終地址AFFFF)。

二.定址方式的分類:

    運算元型別的相同,也會導致定址方式型別的差異。定址方式可以分為三大類:

    (1)立即定址:運算元是立即運算元;MOV AL,1234H

    (2)暫存器定址:運算元是暫存器運算元;MOV DS,AX

    (3)儲存器運算元的定址又可以分為5種:

             1.直接定址:偏移地址直接存放在儲存器中;MOV BX,DS:[1234H]

             2.暫存器間接定址:將運算元在儲存器中的地址放到暫存器中,先從暫存器中取出運算元的地址,再從儲存器對應的記憶體單元中取出運算元;MOV AL,[BX]

                                                一般的暫存器預設的是DS(資料段),BP暫存器預設的是SS(堆疊段);

             3.基址定址:儲存單元的偏移地址為規定的基址暫存器(BX, BP)的內容與一個常量得喝,MOV DL,DS:[BX+2]

             4.變址定址:MOV DL,[DI+2]

             5.基址+變址定址

說的比較淺,主體的內容大致就這些了,有些地方只是一帶而過,沒有詳細介紹,感興趣的同學可以自己動手,上網去查資料看看。