七種定址方式

2021-07-02 17:43:13 字數 2286 閱讀 7745

共7種定址方式:

1. 立即定址方式

立即數包含在指令中,作為指令的一部分。

如 mov ax ,1234h

2. 暫存器定址方式

運算元在cpu內部的暫存器中,指令指定暫存器號

16位運算元,暫存器可以是:ax,bx,cx,dx,si,di,sp和bp

8位運算元,暫存器可以是:al,ah,bl,bh,cl,ch,dl,dh

如 mov ax,bx

3.直接定址方式

運算元在暫存器中,指令直接包含運算元的有效位址(偏移位址)。

運算元一般存放在資料段(ds)。

可採用段超越字首,運算元也可含在其他段中。

如 mov ax,[8054h]

若(ds)=2000h,則實體地址=20000h(低四位為0)+8054h=28054h

則(ax)=實體地址28054h上的字

主要用於變數。

4.暫存器間接定址方式

運算元在儲存器中,運算元有效位址在si,di,bx,bp之一,則一般情況下,

如果有效位址在si,di,bx中,則段值預設為ds

如果有效位址在bp中,則預設的段值為ss

如 mov ax, [si]

5.暫存器相對定址方式

運算元在儲存器中,運算元的有效位址是乙個基址暫存器(bx,bp)或變址暫存器(si,di)內容加上指令中給定的位移量。

預設段值同上。

如 mov ax,[di+1223h], 預設段值為ds

6.基址加變址定址方式

運算元有有效位址由基址暫存器(bx,bp)之一的內容與變址暫存器(di,si)之一的內容相加。

預設段值同上。

如 mov ax,[bx][di] 等價於 mov ax,[bx+di]

則預設段值為ds

也可採用段跨越字首如:

mov ds:[bp+si],al

mov ax,es:[bx+si]  

這種定址方式適用於陣列或**地處理

7.相對基址加變址定址方式

運算元有效位址 ea =(bx或bp)+(si或di)+偏移理

如 mov ax,[bx+di+1234h] 等價於:

mov ax,1234h[bx][di]

mov ax,1234h[bx+di]

mov ax,1234h[di][bx]

一道例題

(ds)=2000h,(bx)=0100h,(si)=0002h,(20100h)=12h,(20101h)=34h,(20102h)=56h,(20103h)=78h,(21200h)=2ah,(21201h)=4ch,(21202h)=b7h,(21203h)=65h

指出各條指令完成後ax暫存器中的內容

(1)mov ax,1200h

立即定址方式 (ax)=1200h

(2)mov ax,bx

兩者都是暫存器,暫存器定址,把bx的內容送入ax,(ax)=0100h

(3)mov ax,[1200h]

直接定址,先求實體地址,預設段值為ds,則實體地址為 20000h+1200h = 21200h

則(ax)=4c2ah(不是2a!) ax是乙個字(16位!),採用高高低低的原則,得到字的內容

(4)mov ax,[bx]

暫存器間接定址,實體地址 = 20000h+0100h = 20100h

則(ax)=3412h

(5)mov ax,1100h[bx]

暫存器相對定址,實體地址 = 20000h + 0100h + 1100h = 21200h

則(ax)=4c2ah

(6)mov ax,[bx][si]

基址加變址定址,有效位址=0100h + 0002h = 0102h

實體地址 = 20000h+0102h = 20102h

(ax)=7856h

(7)mov ax,1100h[bx][si]

相對基址加變址定址,實體地址=20000h+0100h+0002h+1100h = 21202h

則(ax)=65b7h

總結

除立即定址和暫存器定址外,無論是哪種定址方式,關鍵在於如何求出實體地址,基址或者段值+變址或者偏移量

對於立即定址和暫存器定址,相當於直接給出了運算元。

七種定址方式 直接定址方式

指令所要的運算元存放在記憶體中,在指令中直接給出該運算元的有效位址,這種定址方式為直接定址方式。在通常情況下,運算元存放在資料段中,所以,其實體地址將由資料段暫存器ds和指令中給出的有效位址直接形成,但如果使用段超越字首,那麼,運算元可存放在其它段。例 假設有指令 mov bx,1234h 在執行時...

七種定址方式 基址加變址定址方式

運算元在儲存器中,其有效位址是乙個基址暫存器 bx bp 和乙個變址暫存器 si di 的內容之和。其有效位址的計算公式如公式所示。在不使用段超越字首的情況下,規定 如果有效位址中含有bp,則預設的段暫存器為ss 否則,預設的段暫存器為ds。例 假設指令 mov bx,bx si 在執行時,ds 1...

七種定址方式 暫存器間接定址方式

運算元在儲存器中,運算元的有效位址用si di bx和bp等四個暫存器之一來指定,稱這種定址方式為暫存器間接定址方式。該定址方式實體地址的計算方法如下 暫存器間接定址方式讀取儲存單元的原理如圖所示。在不使用段超越字首的情況下,有下列規定 若有效位址用si di和bx等之一來指定,則其預設的段暫存器為...