Unit4
指令格式
寻址方式
8086
寄存器
- 数据寄存器 AX–>DX
16位,可分为8+8(HL)
- 指针寄存器 SP,BP
SP堆栈指针寄存器,BP基指针寄存器
- 变址寄存器 SI,DI
SI源变址寄存器,DI目的变址寄存器
- 控制寄存器 IP,PSW
- 指令指针寄存器 IP
CS*16+IP指向所要取指令的地址
- 程序状态字 PSW
16位,保存CPU的工作状态
- 指令指针寄存器 IP
- 段寄存器 CS,DS,SS,ES
CS代码段寄存器,DS数据段,SS堆栈段,ES附加段
寻址方式
总结
x | y |
---|---|
MOV AX, DS:[2000H] |
DS*16(左移4位)+2000H |
MOV AX, [BX] |
DS*16+寄存器(BX,SI,DI) |
MOV AX, [BP] |
SS*16+BP(BP) |
MOV AX, DISP[SI] |
同上+DISP |
MOV AX, [BX][SI] |
相应段寄存器*16+SI+BX |
MOV AX, DISP[BX][SI] |
同上+DISP |
立即寻址
MOV AX,8000H
(8位(HL)或16位(X)立即数)
直接寻址
MOV AX,DS:[2000H]
为 (DS*16(左移4位)+2000H) 的值
给出段内偏移地址
寄存器寻址
MOV DS,AX
寄存器间接寻址
- 以BX,SI,DI
MOV AX,[BX]
为 (DS*16+寄存器) 的值(存储于X中时,地址只指向一个字节(给AL),还需取下一个地址的字节给AH)
- 以 BP
MOV AX,[BP]
为 (SS*16+BP) 的值操作方法同上
- 段超越 (给出的段寄存器不是默认的)
MOV AX, ES:[SI]
本应为DS,本题给定ES
寄存器相对寻址
MOV AX, DISP[SI]
为 相 应 段 寄 存 器 ( 见 上 文 ) ∗ 16 + S I + D I S P 相应段寄存器^{(见上文)}*16 + SI + DISP 相应段寄存器