(5)变址寻址方式( Indexed Addressing)(寄存器相对寻址方式) 特点:(变址、基址寄存器)+指令中的位移量=操作数的偏移地址 计算操作数物理地址的公式: 存储器 1)操作数物理地址=(DS×16+(0+位位移量 代码段 16位位移量 op (BX) 2)操作数物理地址(ss6+(8位移 指令 00 例:设(DS)=3000H ARRAY=4000H 40 (S1)=2000H 指令为: MOV AX, ARRAYISI 30000H 数据段 要访问的存储单元 4000H 数组起始地址 物理地址为 1234 2000H 30000H+4000H+2000H=36000H 34 36000H 设:(36000H)=1234H 执行指令后:(AX)=1234H 12 用途:可用于处理数组
指令 4000H 30000H AX (寄存器相对寻址方式) 12 34 例:设 ( DS ) = 3000H ARRAY=4000H ( SI ) = 2000H 指令为: MOV AX, ARRAY[ SI ] 34 12 … … … … 存储器 代码段 op 00 40 数据段 36000H op 2000H … 数组起始地址 (5)变址寻址方式 ( Indexed Addressing ) 特点: (变址、基址寄存器) +指令中的位移量 = 操作数的偏移地址 计算操作数物理地址的公式: 1) 操作数物理地址=(DS)16+ 2) 操作数物理地址=( SS)16+ (BP) + 8位位移量 16位位移量 30000H+4000H+2000H= 36000H 要访问的存储单元 物理地址为: 设: (36000H)=1234H 用途: 可用于处理数组 执行指令后: (AX)=1234H + (SI) (DI) (BX) 8位位移量 16位位移量
(6)基址变址寻址方式( Based Index Addressing) 特点:(基址寄存器)+(变址寄存器)=操作数的偏移地址 计算操作数物理地址的公式: (SD) 1)操作数物理地址=6+(Bx+1 (SD 2)操作数物理地址=(S96(B)+1D 例:设(DS)=2100H 存储器 (Bx)=0158H 21000H 数据段 (DI)=1000H 指令为: MOV AX,[BX+D 0158H 数组起始地址 要访问的存储单元 1234 1000H 物理地址为: 21000H+0l58H+1000H=22158H 34 22158H 设:(2158H)=1234H 执行指令后:(AX)=1234H 用途:可用于处理数组
0158H AX 12 34 例:设 ( DS ) = 2100H ( BX ) = 0158H ( DI ) = 1000H 指令为:MOV AX, [BX+DI] 34 12 … … … 存储器 21000H 数据段 22158H 1000H 数组起始地址 (6)基址变址寻址方式 ( Based Index Addressing ) 特点:(基址寄存器) + (变址寄存器) = 操作数的偏移地址 计算操作数物理地址的公式: 1) 操作数物理地址=(DS)16+ 2) 操作数物理地址=( SS)16+ (BP) + (BX) + (SI) (DI) (SI) (DI) 21000H+0158H+1000H= 22158H 要访问的存储单元 物理地址为: 设: (22158H)=1234H 执行指令后: (AX)=1234H 用途: 可用于处理数组
几种可处理数组的寻址方式的比较 1. MOV AX, BXI 寄存器间接寻址方式 特点适用于要处理的数组需要在程序运行中动态确定, 且形式简单。 DⅠSIBP(加段跨越前缀DS:或ES) 2. MOV AX, ARRAY[SI变址寻址方式 特点:可读性好,指令中明确指出了要处理的数组。 限制:写程序时必须清楚要处理什么数组。 DⅠBⅹBP(加段跨越前缀DS:或ES) 3. MOV AX, BXISI 基址变址寻址方式 特点:适用于要处理的数组需要在程序运行中动态确定, 并且修改BX就可以处理不同的数组。 △上述1和2.指令中的寄存器还可被哪些寄存器替换? △上述3指令中的BX寄存器是否可被其他寄存器替换? next
几种可处理数组的寻址方式 的比较: 1. MOV AX,[BX] 2. MOV AX,ARRAY [SI] 3. MOV AX,[BX][SI] 寄存器间接寻址方式 变址寻址方式 基址变址寻址方式 特点: 可读性好,指令中明确指出了要处理的数组。 限制:写程序时必须清楚要处理什么数组。 特点: 适用于要处理的数组需要在程序运行中动态确定, 并且修改BX就可以处理不同的数组。 特点: 适用于要处理的数组需要在程序运行中动态确定, 且形式简单。 上述1.和2.指令中的[寄存器]还可被哪些寄存器替换? DI SI BP (加 段跨越前缀 DS: 或 ES) 上述3.指令中的BX寄存器是否可被其他寄存器替换? DI BX BP (加 段跨越前缀 DS: 或 ES) next
(7)相对基址变址寻址方式( Relative Based Index Addressing) 特点:(基址寄存器)+(变址寄存器)+位移量=操作数的偏移地址 例:设(SS)=3000H 存储器 (BP)=200H 代码段 ARRAY=0250H op (S1)=1000H MOV AX, ARRAYBPIISI op 指令 50 要访问的存储单元物理地址为 02 30000H+200OH+0250+1000H =33250H 30000H 000H 堆栈段 栈顶 0250H 数组首址 1234 1000H 3413350H 12 用途:便于访问堆栈中的数组
指令 2000H AX 12 34 例:设( SS ) = 3000H ( BP ) = 2000H ARRAY = 0250H ( SI ) = 1000H MOV AX, ARRAY[BP][SI] 1000H 30000H 34 12 … … … … 存储器 代码段 op 50 02 堆栈段 33250H op … … 0250H 栈顶 数组首址 (7)相对基址变址寻址方式 ( Relative Based Index Addressing ) 特点:(基址寄存器) + (变址寄存器)+位移量 = 操作数的偏移地址 30000H+2000H+0250+1000H = 33250H 要访问的存储单元物理地址为: 用途: 便于访问堆栈中的数组
要求:熟练掌握前6种寻址方式,其中前3种是最基本的寻 址方式,后3种是重点寻址方式 22指令系统 8086/8088指令系统中的指令按功能可分为六类: (1)数据传送指令 (2)算术运算指令 (3)逻辑运算与移位指令(4)串操作指令 (5)控制转移指令 (6)处理机控制指令 22.1数据传送指令 (1)通用传送指令 1)传送指令MOV 指令格式: Mov dst,src(dst:目的操作数,src:源操作数) 执行操作:(dst)←(src) 功能:在CPU与存储器之间或CPU内部传送数据。 标志位:不受影响
要求:熟练掌握前6种寻址方式,其中前3种是最基本的寻 址方式,后3种是重点寻址方式。 2.2 指令系统 8086/8088指令系统中的指令按功能可分为六类: (1)数据传送指令 (2)算术运算指令 (3)逻辑运算与移位指令 (4)串操作指令 (5)控制转移指令 (6)处理机控制指令 2.2.1 数据传送指令 (1) 通用传送指令 1)传送指令MOV 指令格式:MOV dst,src 执行操作:(dst)←(src) (dst:目的操作数, src:源操作数) 功能:在CPU与存储器之间或CPU内部传送数据。 标志位:不受影响