8086指令系统中的寻址方式
操作數尋址
??操作數的尋址方式一共有8種
1. 立即尋址
??直接指出操作數的數據, 即操作數是立即數
MOV AX, 1200H
該指令中, 源操作數是1200H, 它是立即數, 這種尋址的方式就是立即尋址
2. 直接尋址 ( 存儲器尋址 )
??指令中的操作數是存儲器操作數
MOV AX, [3100H]
該指令中, 表示將內存里數據段中, 偏移地址是3100H單元和3101H單元的內容復制一份到寄存器AX中。
"[]" 內用16位上述表示存放數據的偏移地址, 數據的段基地址默認為數據段
段重設
段寄存器:[偏移地址]
MOV AX, ES:[1200H]
該指令中, 表示將內存里附加段中, 偏移地址是1200H單元和1201H單元的內容復制一份到寄存器AX中。
注意:
該種尋址方式中, 如果目標操作數是寄存器, 雖然 “[ ]” 中是16位, 但是具體復制的數據的字節數, 取決于目標操作數寄存器的字長, 如果是8位, 則復制一個單元, 如果是16位, 則復制兩個單元。
3. 寄存器尋址
??指令中的兩操作數均為寄存器
MOV AX, BX
該指令中, 表示將寄存器BX中的值復制到寄存器AX中
注意:
??兩個寄存器的字長應該是一樣的
4. 寄存器間接尋址(間址寄存器尋址)
??寄存器的內容是操作數的偏移地址
MOV AX, [SI]
該指令中, 表示將內存中 以寄存器SI中數據的值 為偏移地址的單元數據復制到AX寄存器中
規定, 在"[ ]"中的寄存器必須是間址寄存器, 僅有四個通用寄存器可為間址寄存器, BX BP SI DI
簡單的說, 就是直接尋址的時候, 后面 “[ ]” 里的數被存放到了間址寄存器中, 實際上與直接尋址道理是一樣的
5. 寄存器相對尋址(相對尋址)
??在寄存器間接尋址中, “[ ]” 加了一個位移量
MOV AX, [SI + 5]
MOV AX, [SI]5
該指令中, 表示 將內存中 以SI寄存器中數據的值加5后的值 為偏移地址的單元數據復制到AX寄存器中
6. 基址-變址尋址
??由一個基址寄存器(BX, BP)的內容和一個變址寄存器(SI, DI)的內容相加形成操作數的偏移地址
MOV BX, 1000H
MOV SI, 1000H
MOV AX, [BX][SI]
7. 基址-變址-相對尋址
??由一個基址寄存器(BX, BP)的內容、一個變址寄存器(SI, DI)的內容和一個偏移量相加形成操作數的偏移地址
MOV BX, 1000H
MOV SI, 1000H
MOV AX, [BX][SI]5?==>?MOV AX, [2000H]5 ==>?MOV AX, [2005H]
8. 隱含尋址
有些指令的操作數為一個, 其實另一個是被隱藏了, 系統規定了另一個操作數所在的寄存器, 我們不能進行改變, 記住即可, 這種操作數隱藏的指令碼的尋址方式, 就是隱含尋址
MUL BL
該指令, 是將AL中的內容與BL中的內容相乘, 結果放到AX寄存器中, 該指令中, AL寄存器沒有說出來, 被隱藏了, 所以叫做隱含尋址, 實際上就是系統規定了尋址寄存器, 我們不能更改
總結
以上是生活随笔為你收集整理的8086指令系统中的寻址方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Windows核心编程》读书笔记四 进
- 下一篇: codelite14中文语言包_Wind