彙編 定址方式總結

來源:互聯網
上載者:User

1. 立即定址

立即定址方式用來表示常數,它主要用於給寄存器賦初值,注意:只能用於源運算元欄位,不能用於目的運算元欄位。

例1            MOV    AL,5

 

2.直接定址

在IBM PC機中將運算元的位移地址稱為有效地址EA。在直接定址方式中有效地址EA就在指令中,它存放在程式碼片段中指令作業碼之後,但運算元一般存放在資料區段中,所以必須先求出運算元的物理地址,然後再訪問儲存空間才能取得運算元.
 
如運算元在資料區段中,則物理地址=16d×(DS)十EA。1BMPC機中允許資料存放在資料區段以外的其他段中,此時應在指令中指定段跨越首碼,在計算物理地址時應使用指定的段寄存器。
例4              mov  AX ,       [2000H]
(DS)=3000H,地址32000H中的值為 3050H則,執行結果為;(Ax)=3050H

因為實際mov AX中的內容為 16d * (Ds) +2000H = 32000H
 
    在組合語言指令中,可以用符號地址代替數值地址,如:
MOV                  AX,VALUE   
此時VAIUE為存放運算元單元的符號地址。如寫成
MOV                  AX,[VALUE]   
也是可以的.兩者是等效的。如果VALUE在附加段中,則應該指定段跨越首碼如下;
                 MOV    AX,  ES:VALUE
或               MOV    AX,  ES:[VALUE]
    直接定址方式適用於處理單個變數,例如需要處理某個存放在儲存空間裡的變數,可用直接定址方式,將該變數先取到一個寄存器中,然後在做處理。
    IBM PC機規定:除在雙運算元中,除立即數外,必須有一個運算元使用寄存器方式。這也是一個常量常常送到寄存器去的原因。

 

3.寄存器間接址
運算元的有效地址在基底位址暫存器BX、BP或變垃寄存器SI、DI中,而運算元則在儲存空間中,如所示。
 
  a.如果指令中指定的寄存器是BX、SI、DI,則運算元在資料區段(DS)中,所以用DS寄存器的內容作為段地址,即運算元的物理地址為:
物理地址=16d×(DS)十(BX)
或    物理地址;16 d×(DS)十(SI)
或    物理地址=16d×(DS)十(DI)
  b.如指令中指定SP寄存器,則運算元在堆棧段(SS)中,段地址在SS中,所以運算元的物理地址為:
物理地址=16d×(SS)十(SP)

 MOV    AX ,[BX]
如果        (DS)=2000H , (BX)=1000H 則
物理地址=16d×(DS)十(BX) = 20000H+1000H = 21000H
21000H地址裡的內容為 50A0H則 執行結果為:(AX)=50A0H
  c.指令中也可指定段跨越首碼來取得其他段中的資料。如;
    MOV    AX,ES:[BX]
這種定址方式可以用於表格處理,執行完一條指令後,只需要修改寄存器內容就可取出表格中的下一項。

 

4.寄存器相對定址方式

  運算元的有效地址是一個基址或變址寄存器的內容和指令中指定的8位或16位位移量之和。即

                    |  (BX)             

  EA =   | (BP)       + 8位或者16位的位移量

                    |  (SI)

                    |  (DI) 

 

同寄存器定址一樣 BX BP DI 若沒有段跨越首碼 物理地址為=16d×(DS) +位移量 + *

SP                                                                                 物理地址為=16d×(SS)十(SP) + 位移量 + *

 

舉個例子:

 MOV    AX,COUNT[SI]  (也可表示為MOv    AX,[COUKT十SI]
其中,COUNT 為16位位移量的符號地址。
如果(DS)=3000H,(SI)=2000H    COUNT=3000H
則物理地址 = 30000十2000十3000 =35000H

 

5.基址變址定址方式

運算元的有效地址是一個基底位址暫存器和一個變址寄存器的內容之和。兩個寄存器均由指令指定。如果基底位址暫存器為BX,段寄存器使用DS;如基底位址暫存器為BP時,段寄存器則用SS。因此,物理地址為:

 = 16D * DS + (BX) + SI(或者DI)
 = 16D * SS + (BP) + SI(或者DI)

 

6.相對基址變址定址方式
 運算元的有效地址是一個基底位址暫存器和一個變址寄存器的內容和8位或16位位移量之
和。同樣,當基底位址暫存器為BX時,使用DS段寄存器;而當基底位址暫存器為BP時,則使用SS為段寄存器。因此物理地址為:

= 16d * DS + BX + SI + 位移量(8位或16位)

= 16d * ss + BP + SI + 位移量(8位或16位)

刨        MOV    AX,MASK[BX][SI]
(也可以寫成 M0V    AX,MASK[DX十SI]
或          MoV    AX.[MASK十BX十SI]   )
    如    (DS)=3000H,(BX)=2000H、(SI)=l000H,MASK=0250H,
    則    物理地址=16d×(DS)十(BX)十(SI)十MASK
                  =30000十2000十1000十0250
                  =33250H

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.