天天看點

微機原理——尋址方式總結

一、操作數的尋址方式

立即尋址方式

格式: 操作碼 數字表達式(将資料送入寄存器中)

源操作數可以是8位也可以是16位。

MOV AH, F5H (位元組操作) F5H稱為立即數(8位操作數)

MOV AL, 8AH (位元組操作) 8AH稱為立即數

直接尋址方式

指令格式: 操作碼 寄存器(16位) , 位址表達式(将位址的内容送入寄存器中)

MOV AX,ES:[2000H] 将ES:2000H單元内容送入AX。

MOV AX,LABLE 或 MOV AX,[LABEL]将标号為LABLE(存放操作數單元的符号位址) ,即DS:LABLE中的内容送入AX。LABLE要在段定義中指明。

此時,字操作和字元操作的等效:

MOV AX,(2000H);隻需要寫低位元組位址

MOV AL,(2000H); MOV AH,(2001H)

寄存器尋址方式

格式:操作碼 寄存器,寄存器(将寄存器中的内容送入另一個寄存器)

可操作性的寄存器:

1)8 位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL

2)16 位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP

3)4個段寄存器seg: CS、DS、SS、ES

注意點

1、目的和源寄存器的 位數必須相同,不同 位數寄存器之間不能傳送資料處理 如: MOV BX,AH

如果要将資料送入段寄存器(CS、DS、ES、SS),必須先将這個數送入一個非段寄存器,然後在送到段寄存器

寄存器間接尋址方式

格式:操作碼 寄存器,(寄存器) (BX決定的存儲單元的内容送到AX寄存器 )

MOV AX, [BX] ;AX←DS:[BX]

注意點

對于BX、SI、DI,預設的段位址在DS段寄存器

對于BP,預設的段位址在SS段寄存器

實體位址計算方法:

實體位址 = (DS)×16 + (BX)或(SI)或(DI)

實體位址 = (SS)× 16 + (BP)

寄存器相對尋址方式

格式:操作碼 寄存器,相對值DISP+基址或變址寄存器

MOV AX, [SI+06H] ;AX←DS:[SI+06H]

MOV AX, 06H[SI] ;AX←DS:[SI+06H]

位址計算

微機原理——尋址方式總結

DISP可以是16位,也可以是8位,DISP是一個數值的代号!

基址變址尋址方式

格式: 操作碼 寄存器,(基址寄存器)+(變址寄存器)

MOV AX, [BX+SI] ;AX←DS:[BX+SI]

MOV AX, [BX][SI] ;AX←DS:[BX+SI]

有效位址由基址寄存器(BX或BP)的内容加上變址寄存器(SI或DI)的内容構成:

有效位址=BX/BP+SI/DI

段位址對應BX基址寄存器預設是DS,對應BP基址寄存器預設是SS;可用段超越字首改變

相對基址變址尋址方式

格式:操作碼 寄存器,DISP+(基址寄存器)+(變址寄存器)

有效位址=BX/BP+SI/DI+8/16位偏移量

MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]

MOV AX, 6[BX+DI] ; MOV AX, 6[BX][DI]

段超越

當操作數在記憶體單元時,系統根據隐含約定,自動将寄存器DS或SS的值作為段位址。然而,當操作數段位址不在隐含的段寄存器時,可以使用段超越字首取代其隐含約定。

微機原理——尋址方式總結

BP預設SS,BX預設DS,通過段超越可以進行修改。

注意:不是所有的段都可做段超越字首

例題講解

指出下列指令錯誤:

1)MOV AH,BX; //一個8位,一個16位,不比對

2)MOV [SI],[BI]; //src和dst都是間接尋址,然而操作數隻能有一個是這樣的形式

3)MOV AX,[SI][DI]; //[BX/BP] [SI/D] 顯然不符合

4)MOV AX[BX][BP]; //和3同樣問題

5) MOV [BX],ES:AX; //正确的形式應該是 MOV [BX],ES:[AX] ;但是就算這樣也是錯的,錯誤原因和2一樣

6)MOV CS,AX; //CS不能通過指派改變,隻能通過跳轉指令

7)MOV DS,2000H; //正确應該是MOV AX,2000H; MOV DS,AX;

二、轉移位址的尋址方式

段内相對尋址

JMP DISP (disp:8位或16位的位址偏移量)

此時,轉移位址應該是代碼段寄存器CS内容加上指令指針IP内容,再加上相對位址位移量DISP。

微機原理——尋址方式總結

段内間接尋址

JMP CX; CX的内容為轉移位址的段内偏移量

JMP WORD PTR CX

WORD PTR是尋址一個字的标記,指令中必須加上

CX的内容為新的IP值(這個與相對尋址差別開),程式轉移到新的入口處 ,CX值不能超出該段的區域

微機原理——尋址方式總結

段間直接尋址

JMP FAR PTR ADD1;

ADD1為轉移位址的标号

FAR表示轉移距離大于±32K,或是不同段之間轉移。

指令操作碼後的第二個字将賦予代碼段寄存器CS,第一個字将賦予指令指針寄存器IP。最後CS内容和IP内容相加則得轉移位址。

微機原理——尋址方式總結

段間間接尋址

JMP DWORD PTR[BP][DI]

段間間接尋址隻适用于存貯器尋址方式

确定轉移位址需要32位資訊 相當于兩個字,是以用DWORD,段間間接尋址隻适用于存貯器尋址方式

轉移位址尋址方式的小結