Q第3章寻址方式和指令系统 ●指令系统 组指令的集合 指令操作码操作数…操作数 寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
1 • 指令系统 一组指令的集合 第3章 寻址方式和指令系统 指令 操作码 操作数 ... 操作数 • 寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
31寻址方式 8086的寻址方式 与数据有关的寻址方式:以MO指令为例 立即寻址 MOV AX. 3069H 寄存器寻址 MOV AL. BH 直接寻 MOV AX,2000H I 寄存器间接寻址: MOV AX,[Bx 寄存器相对寻址 MOV AX, COUNTISI 基址变址寻址 I MOV AX, I BPIIDII 1相对基址变址寻址 MOV AX, MASK I BXIISII 存储器寻址
2 3.1 寻址方式 一、8086的寻址方式 1.与数据有关的寻址方式:以MOV 指令为例 • 立即寻址 MOV AX , 3069H • 寄存器寻址 MOV AL , BH • 直接寻址 MOV AX , [ 2000H ] • 寄存器间接寻址 MOV AX , [ BX ] • 寄存器相对寻址 MOV AX , COUNT [ SI ] • 基址变址寻址 MOV AX , [ BP ] [ DI ] • 相对基址变址寻址 MOV AX , MASK [ BX ] [ SI ] 存储器寻址
Q(立即寻址方式一操作放在指今中给出 指令格式: MOV AL,5 MOV AX, 3064H MOV AL。A 只能用于SRC字段MOv40H,AL SRC和DST的字长一致 MOV AH. 3064H x
3 (1) 立即寻址方式*—— 操作数在指令中给出 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, ‘A’ * 只能用于 SRC 字段 MOV 40H, AL * SRC 和 DST 的字长一致 MOV AH, 3064H
(2)寄存器寻址方式一操作数在指定的寄存器中 MOV AX BX MOV AL. BH MOV AX. 3064H 字节寄存器只有 AH AL BH BL CH CL DH DL SRC和DST的字长一致 MOV AH. BX X CS不能用MOV指令改变 MOV CS,AX
4 (2) 寄存器寻址方式*— 操作数在指定的寄存器中 MOV AX, BX MOV AL, BH MOV AX, 3064H * 字节寄存器只有 AH AL BH BL CH CL DH DL * SRC 和 DST 的字长一致 MOV AH, BX * CS 不能用 MOV 指令改变 MOV CS, AX
(3)直接寻址方式一有效地址EA由指令直接给出 例: MOV AX,[200H EA=2000H,假设(DS)=3000H,那么PA=32000H AL 30 50 32000 50 30 X)=3050H 隐含的段为数据段DS 可使用段跨越前缀 MOV AX, ES: 2000H 操作数地址可由变量(符号地址)表示,但要注意 VALUE DB 10 变量的属性 MOV AH. VALUE MOV AX VALUE X MOAx, WORD PTR VALUE√
5 (3) 直接寻址方式*— 有效地址EA由指令直接给出 例:MOV AX, [ 2000H ] EA=2000H, 假设(DS)=3000H, 那么PA=32000H * 隐含的段为数据段 DS * 可使用段跨越前缀 MOV AX, ES: [2000H] * 操作数地址可由变量(符号地址)表示, 但要注意 VALUE DB 10 变量的属性 MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE 50 30 32000 AH AL 30 50 (AX) = 3050H
(4)寄存器间接寻址*一EA在基址寄存器(BXBP) 或变址寄存器(SIDD中 MOV AX, IBXI PA=16d×(DS)+(BX) MOV AX, ES: BX PA= 16d x(ES)+(BX) MOV AX, BPI PA=16d×(SS)+(BP) 不允许使用AX、CX、DX存放EA MOV AX, ICX X SRC和DST的字长一致 MOV DL,IBX];BX指示一个字节单元 MODX,IBX];IBX指示一个字单元 适于数组、字符串、表格的处理
6 (4)寄存器间接寻址*— EA 在基址寄存器(BX/BP) 或变址寄存器(SI/DI) 中 MOV AX, [BX] PA = 16d (DS) + (BX) MOV AX, ES:[BX] PA = 16d (ES) + (BX) MOV AX, [BP] PA = 16d (SS) + (BP) * 不允许使用AX、CX、DX 存放 EA MOV AX, [CX] * SRC 和 DST 的字长一致 MOV DL, [ BX ] ; [BX]指示一个字节单元 MOV DX, [ BX ] ; [BX]指示一个字单元 * 适于数组、字符串、表格的处理
(5)寄存器相对寻址方式 (BX) (BP)8位 有效地址 位移量 (SD)16位 (D 指令格式: MOV AX, COUNT[S]或 MOV AX, [COUNT+SII 假设(DS)=3000H,(S|)=2000H, COUNT=3000H, 则:PA=35000H 假设(35000H)=1234H,那么(AX)=1234H 适于数组、字符串、表格的处理
7 有效地址= (BX) (BP) 8位 (SI) 16位 (DI) + 位移量 (5) 寄存器相对寻址方式* 指令格式: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI] 假设 (DS)=3000H, (SI)=2000H, COUNT=3000H, 则: PA = 35000H 假设(35000H)=1234H, 那么 (AX)=1234H * 适于数组、字符串、表格的处理
Q(6)基址变址寻址方式 有效地址(BX).((SD (BP)(DD 指令格式: MOV AX,[BX][D] MOv AX,[BX+DII MOV AX, ES: [ BXI[SII 适于数组、字符串、表格的处理 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,[BⅪ]BP] MOV AX, ISI DIx
8 (6) 基址变址寻址方式* 指令格式: MOV AX, [BX] [DI] MOV AX, [BX+DI] MOV AX, ES:[BX] [SI] * 适于数组、字符串、表格的处理 * 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX, [BX] [BP] MOV AX, [SI] [DI] 有效地址 = (BX) (SI) (BP) (DI) +
Q(7)相对基址变址寻址方式 有效地址=/(BX)((SD(8位位移量 (BP)(DD(16位 MOV AX, MASK BXIISI 或 MOV AX,MASK|BX+SⅡ 或 MOV AX, MASK+BX+S
9 ( 7 ) 相对基址变址寻址方式 MOV AX, MASK [BX] [SI] 或 MOV AX, MASK [BX+SI] 或 MOV AX, [MASK+BX+SI] 有效地址 = (BX) (SI) 8位 (BP) (DI) 16位 + + 位移量
段寄存器的使用规定 默认的 可跨越的 访何存储器的方式段奇存器段奇存器偏移地址 取指令 无 IP 堆栈操作 无 SP 般数据访问 DS CS ES SS有效地址EA BP作为基址的寻址 CS DS ES BP 串操作的源操作数 DS CS ES SS 串操作的目的操作数 无 DI
10 访问存储器的方式 默认的 段寄存器 可跨越的 段寄存器 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP 一般数据访问 DS CS ES SS 有效地址EA BP作为基址的寻址 SS CS DS ES BP 串操作的源操作数 DS CS ES SS SI 串操作的目的操作数 ES 无 DI 段 寄 存 器 的 使 用 规 定