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