- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CS段 CS段
2000 4000 36000
DS段 DS段 高地址
12
BX
12H 34H
基址变址寻址 (Based Indexed Addressing)
指令中指定一个基址和一个变址寄存器, 指令中指定一个基址和一个变址寄存器,其内 容之和为操作数的有效地址EA 容之和为操作数的有效地址EA
基址寄存器:BX或BP;变址寄存器:SI或 基址寄存器:BX或BP;变址寄存器:SI或DI 基址寄存器为BX时,段寄存器为DS 基址寄存器为BX时 段寄存器为DS BX 物理地址=16×DS+BX+SI(DI) 物理地址=16×DS+BX+SI(DI) 基址寄存器为BP时 段寄存器为SS 基址寄存器为BP时,段寄存器为SS BP 物理地址=16×SS+BP+SI(DI) 物理地址=16×SS+BP+SI(DI)
指令中给出的寄存器中的内容是操作数的有效地址EA 指令中给出的寄存器中的内容是操作数的有效地址EA
寄存器加[], 寄存器加[],与寄存器寻址区别 [] 间址寄存器:基址寄存器BX、BP和变址寄存器SI、 间址寄存器:基址寄存器BX、BP和变址寄存器SI、DI BX 和变址寄存器SI BX、SI、DI作间址寄存器时,默认段地址为DS中内容 BX、SI、DI作间址寄存器时,默认段地址为DS中内容 作间址寄存器时 DS BP作间址寄存器时,默认段地址为SS中内容 BP作间址寄存器时,默认段地址为SS中内容 作间址寄存器时 SS 可以指定段超越前缀访问默认段以外数据 例: MOV AX,DS:[BP] MOV AX,ES:[SI]
14
低地址 操作码 CS段 段
相对基址变址寻址 (Relative Based Indexed Addressing)
指令中指定一个基址、一个变址寄存器和一个位 指令中指定一个基址、一个变址寄存器和一个位 移量,其内容之和为操作数的有效地址EA 移量,其内容之和为操作数的有效地址EA
除了需要加位移量,其他与基址变址寻址相同: 除了需要加位移量,其他与基址变址寻址相同: 基址寄存器:BX或BP;变址寄存器:SI或 基址寄存器:BX或BP;变址寄存器:SI或DI 基址寄存器为BX时 段寄存器为DS 基址寄存器为BX时,段寄存器为DS BX 物理地址=16×DS+BX+SI(DI)+位移量 物理地址=16×DS+BX+SI(DI)+位移量 )+ 基址寄存器为BP时,段寄存器为SS 基址寄存器为BP时 段寄存器为SS BP 物理地址=16×SS+BP+SI(DI)+位移量 物理地址=16×SS+BP+SI(DI)+位移量 )+
15
相对基址变址寻址 (Relative Based Indexed Addressing)
例:MOV AX, 200H[BX][SI] ≌ MOV AX, 200H[BX+SI] ≌ MOV AX, [200H+BX+SI] ≌ MOV AX, [BX+200H][SI] 如DS=2000H,BX=1500H,SI=0300H, 则物理地址=16×DS+BX+SI+ 则物理地址=16×DS+BX+SI+200H 20000H+1500H+300H+ =20000H+1500H+300H+200H =21A00H
例:MOV AX,[BX][SI] ≌ MOV AX,[BX+SI]
13
基址变址寻址 (Based Indexed Addressing)
例:MOV AX,[BX][SI]
操作码 DS BX + SI 3000 ×10H 1200 0500 31700 31700 AX 12H 34H 34H 12H DS段 段 高地址
微机原理及应用
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
寻址方式和指令系统
8086寻址方式 8086寻址方式 8086指令系统 8086指令系统
2
8086寻址方式 8086寻址方式
指令
操作码- 操作码-操作的性质 操作数- 操作数-操作的对象 寻址方式- 寻址方式-说明操作数本身或其所在地址的方法
例: MOV DX, AX MOV CL, AH 注意:源操作数与目的操作数长度必须一致,即都为8位或16位 注意:源操作数与目的操作数长度必须一致,即都为8位或16位 16
6
直接寻址(Direct 直接寻址(Direct Addressing)
指令中的直接给出操作数的有效地址EA 指令中的直接给出操作数的有效地址EA Address,即偏移地址 即偏移地址) (Effective Address,即偏移地址)
操作数默认在DS段中,如果操作数在数据段以外, 操作数默认在DS段中,如果操作数在数据段以外,必 DS段中 须在直接地址前加段超越前缀 须在直接地址前加段超越前缀 操作数的物理地址=16×段地址+ 操作数的物理地址=16×段地址+EA 地址加[], [],与立即数寻址区分 地址加[],与立即数寻址区分 允许出现符号地址 例: MOV AX, [2000H] MOV AX, ES:[500H] 例: MOV AX, ADDR1 MOV AX, [ADDR1]
7
直接寻址(Direct 直接寻址(Direct Addressing)
例: MOV AX,[2000H]
操作码 00H DS 3000 ×10H + 2000 30000 32000 32000 AX 12H 34H 20H CS段 段 低地址
34H 12H
DS段 段 高地址
8
寄存器间接寻址 (Register Indirect Addressing)
指令格式
操作码 目的操作数,源操作数;注释 目的操作数,源操作数;
例
MOV AL,1
3
8086寻址方式 8086寻址方式
操作数 操作数地址 操作数 寄存器 立即寻址 MOV AL,20H 直接寻址 MOV AL,[1234H] 寄存器寻址 MOV AL,BH 寄存器间接寻址 MOV AL,[BX] 寄存器相对寻址 MOV AX,200H[BX] 基址变址寻址 MOV AX,[BX][SI] 相对基址变址寻址 MOV AX,200H[BX][SI]
22
通用数据传送指令通用数据传送指令-PUSH
PUSH 源
源操作数为字数据, 源操作数为字数据,但不能是立即数 先进后出 堆栈区段地址由SS SS确定 堆栈区段地址由SS确定 堆栈指针SP指向栈顶,总为偶数, FFFEH到 SP指向栈顶 堆栈指针SP指向栈顶,总为偶数,从FFFEH到0 PUSH BX SP←SPSP←SP-2 [SP]=BX
例: MOV BX, MOV BX, MOV AX,
200H[BP] [BP+200H] ES: ES:1200H[BP]
11
寄存器相对寻址 (Register Relative Addressing)
例:MOV BX,4000H[SI]
低地址 操作码 DS SI + 3000
×10H
00H 00H 40H 30000 36000 34H 12H
例: MOV CX,1234H 低地址 CX 12H 34H 操作码 34H 12H CS段 段 高地址
注意:立即数只能作源操作数,不能作目的操作数; 注意:立即数只能作源操作数,不能作目的操作数; 开头的数字出现在指令中需在前加0 以A~F开头的数字出现在指令中需在前加0
5
寄存器寻址(Register 寄存器寻址(Register Addressing)
操作数包含在指令中指定的8位或16位寄存器中 操作数包含在指令中指定的8位或16位寄存器中 16 寄存器: 寄存器:AX,BX,CX,DX,SI,DI,SP,BP AH,AL,BH,BL,CH,CL,DH,DL 寄存器寻址可以在CPU内部立即执行,故指令执 寄存器寻址可以在CPU内部立即执行, CPU内部立即执行 行速度最快
IP不能作源和目的操作数 IP不能作源和目的操作数 立即数和CS CS寄存器不能作目的操作数 立即数和CS寄存器不能作目的操作数 立即数不能直接传送给段寄存器 两个存储器和两个段寄存器之间不能直接传送数据
21
通用数据传送指令通用数据传送指令-MOV
例 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV [BX],0FEH AL,30H BL,‘S’ AX,1250H BX,OFFSET TABLE [BP],BX CL,5[BX] [SI],DS ES,AX AX,DX 例 MOV 60H,AL MOV [BX],[SI] MOV CS,AX MOV BX,IP MOV DS,ES MOV CX,AL
指令中指定寄存器中内容与指令中指定的位移 量之和为操作数有效地址EA 量之和为操作数有效地址EA
除了需要加位移量,其它与寄存器间接寻址相同: 除了需要加位移量,其它与寄存器间接寻址相同:
相对寻址寄存器:基址寄存器BX、BP和变址寄存器SI、DI 相对寻址寄存器:基址寄存器BX、BP和变址寄存器SI、 BX SI BX、SI、DI作间址寄存器时默认段地址为DS中内容 作间址寄存器时默认段地址为DS BX、SI、DI作间址寄存器时默认段地址为DS中内容 BP作间址寄存器时 默认段地址为SS 作间址寄存器时, SS中内容 BP作间址寄存器时,默认段地址为SS中内容 允许使用段超越前缀
AX (21A00H)=26BFH 21A00H)=26BFH )=
16
存储器寻址
17
8086指令系统 8086指令系统
数据传送指令 算术运算指令 逻辑运算
18
19
数据传送指令
通用数据传送指令
MOV PUSH POP XCHG 目的, 目的,源 源 目的 目的, 目的,源
输入输出指令
AL,端口地址 IN AL,端口地址 IN AX,端口地址 AX,端口地址 IN AL,DX IN AX,DX 端口地址,AL OUT 端口地址,AL OUT 端口地址,AX 端口地址,AX OUT DX,AL OUT DX,AX