第二章8086/8088的寻址方式与指令系统 指令系统:计算机提供给用户使用的指令集 双操作数指令格式:操作码目的操作数,源操作数 操作结果替代目的操作数 不影响源操作数 例如: MOV AX,100 MOV AX. BX MOv AX, BX 要访问操作数,首先必须确定如何形成操作数的地址。 寻址方式:·确定获得操作数地址的方法 寻址方式选择得正确与否,直接影响程序的执行效率
第二章 8086/8088的寻址方式与指令系统 指令系统 : 计算机提供给用户使用的指令集 双操作数指令格式: 操作码 目的操作数,源操作数 例如: MOV AX,100 MOV AX,BX MOV AX,[BX] 要访问操作数,首先必须确定如何形成操作数的地址。 寻址方式: 确定获得操作数地址的方法 操作结果 替代目的操作数 不影响源操作数 寻址方式选择得正确与否,直接影响程序的执行效率
21寻址方式 寻址方式分类:1)与数据有关的寻址方式:确定内存单元的地址 2)与转移地址有关的寻址方式:确定转移地址 有7种与数据有关的寻址方式 以MOV指令为例:MO∨目的操作数,源操作数 对源操作数分别使用7种寻址方式如下: (1)立即寻址方式( Immediate Addressing) 特点:操作数包含在指令中 操作数是指令的组成部分,可以是8位或16位,取出指令就 立即获得操作数—立即数 AX 例1: MOV AL,5 存储器|低地址 AL 存储器 3045 OP 执行指令后:(AL=05H05 BO 45 指令 指令 例2: MOV AX,3045H 05 30 执行指令后:(AX)=3045H 高地址
2.1 寻址方式 寻址方式分类: 1)与数据有关的寻址方式 2)与转移地址有关的寻址方式 :确定内存单元的地址 有 7 种 与数据有关的寻址方式 :确定转移地址 以MOV指令为例: MOV 目的 操作数,源操作数 对源操作数分别使用7 种寻址方式如下: (1)立即寻址方式 (Immediate Addressing ) 特点:操作数包含在指令中 操作数是指令的组成部分,可以是8位或16位,取出指令就 立即获得操作数——立即数 例1: MOV AL, 5 执行指令后: (AL) = 05H B0 05 存储器 指令 05 AL 例2: MOV AX, 3045H 执行指令后: (AX) = 3045H 指令 45 AX OP 45 存储器 30 30 低地址 高地址
用途:给变量或寄存器赋常量值 限制:只能用于源操作数 (2)寄存器寻址方式( Register Addressing) 特点:操作数存在寄存器中 例: MOV AX,BX 执行指令前:(AX)=3045H(BX)=4000H 执行指令后:(AX)=4000H(BX)=4000H 用途:用寄存器提供操作数时存取速度快
用途:给变量或寄存器赋常量值 限制:只能用于源操作数 (2)寄存器寻址方式 (Register Addressing ) 特点:操作数存在寄存器中 例: MOV AX, BX 执行指令前: (AX) = 3045H (BX) = 4000H 执行指令后: (AX) = 4000H (BX) = 4000H 用途:用寄存器提供操作数时存取速度快
(3)直接寻址方式( Direct Addressing) 特点:操作数的偏移地址包含在指令中 例:设(DS)=3000H 存储器 ∴代码段 MOV AX, 2000H MOV AX, NUM op 要访问的存储单元物理地址为 00 指令 30000H+2000H=32000H 设:(32000H)=3050H AX 30000H 数据段 3050 2000H 执行指令后:(AX)=3050H 50 32000H 30 用途:用于存取单个变量中的操作数 如果2000单元在附加段,指令为: MOV AX,ES:12000 段跨越前缀:段寄存器名:-改变默认使用的段寄存器
指令 2000H 50 30 … … … … 存储器 代码段 op 00 20 30000H 数据段 32000H AX 用途: 用于存取单个变量中的操作数 30 50 例:设 ( DS ) = 3000H MOV AX, [2000H] (3)直接寻址方式 (Direct Addressing ) 特点:操作数的偏移地址包含在指令中 要访问的存储单元物理地址为: 30000H+2000H=32000H 设: (32000H)=3050H 执行指令后: (AX)=3050H 如果2000H单元在附加段,指令为: MOV AX, ES:[2000H] 段跨越前缀: 段寄存器名: —— 改变默认使用的段寄存器 MOV AX, NUM
(4)寄存器间接寻址方式( Register Indirect Addressing) 特点:(寄存器)=操作数的偏移地址 计算操作数物理地址的公式: (BX )操作数物理地址=(Ds)×16+1(SD (DI 2)操作数物理地址=(SS)×16+(BP) 存储器 例:设(DS)=2000H (BX)=1000H 50A0 20000H 数据段 指令为: MOV AX,IBX 1000H 数组起始地址 要访问的存储单元 AO 1000H 物理地址为: 50 20000H+1000H=21000H XX 21002H 设:(21000H)=50A0H 执行指令后:(AX=50A0H 用途:可用于处理数组
1000H AX 用途: 可用于处理数组 50 A0 A0 50 … … … 存储器 20000H 数据段 21000H XX XX 21002H 例:设 ( DS ) = 2000H ( BX ) = 1000H 指令为: MOV AX, [ BX ] 数组起始地址 (4)寄存器间接寻址方式 (Register Indirect Addressing ) 特点: (寄存器) = 操作数的偏移地址 计算操作数物理地址的公式: 1) 操作数物理地址=(DS)16+ 2) 操作数物理地址=(SS)16+(BP) (BX) (SI) (DI) 20000H+1000H = 21000H 要访问的存储单元 物理地址为: 设: (21000H)=50A0H 执行指令后: (AX)=50A0H