8086尋址方式


CPU寄存器

8086 CPU 中寄存器總共為 14 個,且均為 16 位 。

即 AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 個。

而這 14 個寄存器按照一定方式又分為了通用寄存器,控制寄存器和段寄存器。

通用寄存器:

AX,BX,CX,DX 稱作為數據寄存器:

  • AX (Accumulator):累加寄存器,也稱之為累加器;

  • BX (Base):基地址寄存器;

  • CX (Count):計數器寄存器;

  • DX (Data):數據寄存器;

可以分為兩個獨立的 8 位的 AH(BH, CH, DH) 和 AL(BL, CL, DL) 寄存器

SP 和 BP 又稱作為指針寄存器:

  • SP (Stack Pointer):堆棧指針寄存器;

  • BP (Base Pointer):基指針寄存器;

SI 和 DI 又稱作為變址寄存器:

  • SI (Source Index):源變址寄存器;

  • DI (Destination Index):目的變址寄存器;

控制寄存器:

  • IP (Instruction Pointer):指令指針寄存器;

  • FLAG:標志寄存器;

段寄存器:

  • CS (Code Segment):代碼段寄存器;

  • DS (Data Segment):數據段寄存器;

  • SS (Stack Segment):堆棧段寄存器;

  • ES (Extra Segment):附加段寄存器;

操作數尋址

立即尋址

示例:

MOV AX, 1234H ; 給AX寄存器賦值為1234H

直接尋址

示例;

MOV BX, DS:[2000H]

操作數存放在存儲器中, 偏移量直接寫在操作數中,.

地址為數據段寄存器DS的值* 16 (<<4)然后加上直接給出的偏移量2000H.

寄存器尋址

示例:

MOV DX, AX ;將AX中的值賦給DX 

直接使用寄存器中的值作為操作數, 速度較快.

寄存器間接尋址

操作數存放在存儲器中, 16位偏移地址存放在SI, DI, BP, BX四個寄存器之一中.

若使用BX, SI, DI之一作為寄存器, 操作數默認放在DS所決定的數據段中.

即地址為:DS *16 + BX

示例:

MOV AX, [SI] ; 將DS*16 + SI中的值放入AX中

若使用BP做間接尋址, 操作數默認放在SS決定的堆棧段中.

示例:

MOV AX, [BP]  ;將SS*16 + BP中的值放入AX中

可以直接指定使用的段寄存器:

MOV  AX, SS:[SI]  ;將SS*16 + SI中的值放入AX中

寄存器相對尋址

操作數存放在存儲器中, 使用段寄存器內容* 16 加SI, DI, BP, BX四個寄存器之一的內容再加直接給出的位移量.

若使用BX, SI, DI之一作為寄存器, 操作數默認放在DS所決定的數據段中; 若使用BP做間接尋址, 操作數默認放在SS決定的堆棧段中.

與寄存器間接尋址相比只是增加了直接給出的偏移量:

示例:

MOV AX, [SI-2] ; 將 DS*16 + SI - 2中的值放入AX中
MOV AX, [BP+4]  ;將 SS*16 + BP + 4中的值放入AX中
MOV  AX, SS:[SI-8]  ;將 SS*16 + SI - 8中的值放入AX中

基址變址尋址

將段地址寄存器的值*16加上基址寄存器(BX,BP)之一的地址加上變址寄存器(SI, DI)之一的值作為地址.

若使用BX作基址 操作數默認放在DS所決定的數據段中; 若使用BP做基址, 操作數默認放在SS決定的堆棧段中.

示例:

MOV AX, [BX][SI] ; 將 DS*16 +BX + SI中的值放入AX中
MOV AX, [BP][DI]  ;將 SS*16 + BP + DI 中的值放入AX中
MOV  AX SS:[Bx][SI]  ;將 SS*16 + BX + SI 中的值放入AX中

基址變址相對尋址

在基址變址尋址基礎上再加一個直接給出的偏移量:

示例:

MOV AX, 1234H[BX][DI] ;將DS * 16 + BX + DI + 1234H中的值放入AX中.

還有幾種表示方法與上式等價:

MOV AX, [BX+DI+1234H]

MOV AX, 1234H[BX+DI]

MOV AX, 1234H[BX][DI]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM