清华大学出版社 TSINGHUA UNIVERSITY PRESS 第3章80X86的指令系统和寻址方式 ●指令系统 组指令的集 指令操作码操作数操作数 ●寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
• 指令系统 一组指令的集合 第3章 80x86的指令系统和寻址方式 指令 操作码 操作数 ... 操作数 • 寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
清华大学出版社 TSINGHUA UNIVERSITY PRESS 1.8086的寻址方式 与数据有关的寻址方式:以MOV指令为例 立即寻址 MOV AX. 3069H 寄存器寻址 MOV AL, BH 直接寻址 MOV AX,2000H 寄存器间接寻址 MOV AX,Bxl 寄存器相对寻址 MOV AX, COUNTISI 基址变址寻址 MOV AX,[ BPIIDI 相对基址变址寻址MoAX,MASK| BXIISII 存储器寻址
1. 8086的寻址方式 与数据有关的寻址方式:以 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 ] 存储器寻址
清华大学出版社 TSINGHUA UNIVERSITY PRESS (1)立即寻址方式*—操作数在指令中给出 指令格式: MOV AL,5 MOV AX.3064H MOV ALSA 只能用于SRC字段 MOV 40H.AL X SRC和DST的字长一致 MOV AH.3064H x
(1) 立即寻址方式* —— 操作数在指令中给出 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, ‘A’ * 只能用于 SRC 字段 MOV 40H, AL * SRC 和 DST 的字长一致 MOV AH, 3064H
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)寄存器寻址方式*一操作数在指定的寄存器中 MOV AX. BX MOV AL BH MOV AX. 3064H 次字节寄存器只有 AH AL BH BL CH CL DH DL zSRC和DST的字长一致 MOV AH, BX X zCS不能用MOV指令改变 MOV CS,AX
(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
清华大学出版社 TSINGHUA UNIVERSITY尸RES (3)直接寻址方式*一有效地址EA由指令直接给出 例: MOV AX,[2000H EA=2000H,假设(DS)=3000,那么PA=32000H 30 50 32000 50 30 (AX)=3050H 隐含的段为数据段DS 可使用段跨越前缀 MOV AX, ES: 2000H 操作数地址可由变量(符号地址)表示,但要注意 VALUE DB 10 变量的属性 MOV AH. VALUE MOV AX VALUE X MOV AX. WORD PTR VALUE Y
(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
清华大学出版社 TSINGHUA UNIVERSITY PRESS (4)寄存器间接寻址*一EA在基址寄存器(BX/BP 或变址寄存器(SIDD)中 MOV AX, BXI 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× ☆SRC和DST的字长一致 MOⅤDL,[BXl;BX指示一个字节单元 MODX,IBX];[BX]指示一个字单元 ☆适于数组、字符串、表格的处理
(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]指示一个字单元 * 适于数组、字符串、表格的处理
清华大学出版社 TSINGHUA UNIVERSITY PRESS (5)寄存器相对寻址方式* BX (BP) 有效地址= 位位 86 位移量 (SD ) 指令格式:MOAX, COUNT[S]或 MOv AX, [COUNT+SI] 假设(DS)=3000H,(S)=2000H, COUNT=3000H, 则:PA=35000H 假设(35000H)=1234H,那么(AX=1234H 适于数组、字符串、表格
(5) 寄存器相对寻址方式* 指令格式: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI] 假设 (DS)=3000H, (SI)=2000H, COUNT=3000H, 则: PA = 35000H 假设(35000H)=1234H, 那么 (AX)=1234H * 适于数组、字符串、表格 有效地址= (BX) (BP) 8位 (SI) 16位 (DI) + 位移量
清华大学出版社 TSINGHUA UNIVERSITY PRESS (6)基址变址寻址方式 有效地址= (BX).(SD (BP)DD 指令格式: MOV AX,[BX][D MOV AX, BX+DII MOV AX ES: BXI[SII ☆适于数组、字符串、表格的处理 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,[BⅪ]BP MOV AX, SI DIX
(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) +
清华大学出版社 TSINGHUA UNIVERSITY PRESS (7)相对基址变址寻址方式 有效地址=/(Bx),(S+「8位位移量 BP (DD)16位 MOV AX, MASK BXI ISI 或MOAX,MASK[BX+SI 或 MOV AX, MASK+BX+S
( 7 ) 相对基址变址寻址方式 MOV AX, MASK [BX] [SI] 或 MOV AX, MASK [BX+SI] 或 MOV AX, [MASK+BX+SI] 有效地址 = (BX) (SI) 8位 (BP) (DI) 16位 + + 位移量
清华大学出版社 TSINGHUA UNIVERSITY PRESS 段寄存器的使用规定 默认的可跨越的 访何存储器的方式段奇存器段奇存器偏移地址 取指令 CS 无无 IP 堆栈操作 SS SP 一般数据访问 DS CS ES SS有效地址EA BP作为基址的寻址 SS CS DS ES BP 串操作的源操作数 DS CS ES SS SI 串操作的目的操作数 ES 无 DI
访问存储器的方式 默认的 段寄存器 可跨越的 段寄存器 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP 一般数据访问 DS CS ES SS 有效地址EA BP作为基址的寻址 SS CS DS ES BP 串操作的源操作数 DS CS ES SS SI 串操作的目的操作数 ES 无 DI 段 寄 存 器 的 使 用 规 定