【汇编笔记——8086/8088的寻址方式】

一、数据寻址方式

1、立即数寻址方式

  • 主要特征:操作数是立即数
  • 优缺点
    1、优点:不需要访问存储器,执行速度快
    2、缺点:立即数不能修改,通用性差
  • 用途:主要用于给寄存器或存储单元赋初值
  • 举例
MOV AX,0A7FH  ;执行后,AH=0AH,AL=7FH

2、寄存器寻址方式

  • 主要特征:操作数是寄存器操作数
  • 注意:
    1、通用寄存器段寄存器都可以用作寄存器寻址方式
    2、指令指针寄存器状态标志寄存器不可用
  • 举例
MOV AX,BX
MOV AH,AL

3、存储器寻址方式

(1)直接寻址方式

  • 主要特征:操作数在存储单元中,指令的操作码之后给出该存储单元的有效地址EA
  • EA可以是数值形式,也可以是符号地址形式,如下:
MOV AX,[100H]        ;数值地址必须加方括号
MOV AX,X             ;符号地址X必须事先定义
  • 在默认情况下,数据在DS段中,但可以使用段超越前缀的方式改变默认段。如:MOV AX,ES:[100H]
  • 当数据在DS段中时,物理地址PA =(DS)×16 + EA
  • 思考题
    MOV AX,X 和 MOV AX,[X] 效果 一样吗?
    答案:这两条指令的效果是一样的。对于符号地址,加不加括号指的都是之前定义的单元。

(2)寄存器间接寻址

  • 主要特征:操作数在存储单元中,指令的操作码之后给出存放该单元的有效地址的寄存器编码或名称
  • 可以用这种寻址方式的寄存器称为间址寄存器。间址寄存器有BX,BP,SI,DI
  • 默认情况下,数据在DS段SS段,由间址寄存器决定
  • 物理地址PA
    1、当间址寄存器为BX,SI,DI 时,数据在DS段,物理地址PA =(DS)× 16 + (BX/SI/DI)
    2、当间址寄存器为BP时,数据在SS段,物理地址PA=(SS)× 16 +(BP)
  • 举例
MOV AX,[BX]   ;物理地址=DS×16+BX
MOV [BP],AX   ;物理地址=SS×16+BP

(3)寄存器相对寻址

  • 主要特征:操作数在存储单元中,操作数的有效地址为指令中指定的间址寄存器的值与指令中给出的偏移量(DISP)之和
  • 间址寄存器:BX,BP,SI,DI
  • 偏移量(DISP):数值形式或符号地址形式
  • 默认情况下,数据在DS段SS段,由间址寄存器决定
  • 物理地址
    1、间址寄存器为BX,SI,DI时:
    PA =(DS)× 16 + (BX/SI/DI)+ DISP
    2、间址寄存器为BP时:
    PA = (SS)× 16 + (BP) + DISP
  • 举例
MOV AX,[BX+100H]
MOV AX,100H[BX]
MOV AX,[BX][100H]  ;这三种形式效果一样

(4)基址变址寻址方式

  • 主要特征:操作数在存储单元中,操作数的有效地址为指令中指定的基址寄存器的值和变址寄存器的值之和
  • 基址寄存器:BX,BP
  • 变址寄存器:SI,DI
  • 默认情况下,数据在DS段SS段,由基址寄存器决定
  • 物理地址
    1、基址寄存器为BX时:
    PA = (DS)× 16 + (BX) + (SI/DI)
    2、基址寄存器为BP时:
    PA = (SS)× 16 + (BP)+ (SI/DI)
  • 举例
MOV AX,[BX+SI]
MOV AX,[BX][SI]
MOV AX,[BX]+[SI] ;这三条指令效果相同

(5)相对基址变址寻址方式

  • 主要特征:操作数在存储单元中,操作数的有效地址为指令中指定的基址寄存器的值变址寄存器的值偏移量DISP三者之和
  • 基址寄存器:BX,BP
  • 变址寄存器:SI,DI
  • 偏移量:数值形式或符号地址形式
  • 默认情况下,数据在DS段SS段,由基址寄存器决定
  • 物理地址
    1、基址寄存器为BX时:
    PA = (DS)× 16 + (BX) + (SI/DI)+ DISP
    2、基址寄存器为BP时:
    PA = (SS)× 16 + (BP)+ (SI/DI)+ DISP
  • 举例
MOV AX,[BX+SI+100H]
MOV AX,100H[BX+SI]
MOV AX,100H[BX][SI]  ;这三条指令效果相同

数据寻址方式小结

  • 上述三大类寻址方式,是按照操作数存放位置来分类的
  • 指令中凡是加有方括号[ ] 的内容——立即数或寄存器,其值均表示地址信息
  • 间址寄存器:BX,BP,SI,DI。
  • 在指令中,只有间址寄存器才能出现在[ ]中,[ ] 中的寄存器只能是一个或两个间址寄存器,且不能同时为基址寄存器或变址寄存器
  • 有效地址EA应为16位,多于16位应按64K取模
  • 存储器寻址方式中,默认情况下均在DS段或SS段中,若需要寻址其他段,可以用段超越前缀的方法来改变默认段寄存器。如:
    MOV AX,ES:[BP+100H]
  • 存储器寻址方式的通用形式
源操作数寻址方式寻址格式
直接寻址方式DISP
寄存器间接寻址[间址寄存器]
寄存器相对寻址[DISP+间址寄存器]
基址变址寻址方式[基址寄存器]+[变址寄存器]
相对基址变址寻址方式DISP+[基址寄存器]+[变址寄存器]

二、程序寻址方式

1、顺序寻址

  • 默认的寻址方式
  • 不需要指定下条指令的地址,由指令指针自动修改。每次取出指令后,指令指针自动将取出的字节数作为其增量

2、跳跃寻址

  • 当程序流向发生变化是,要使用跳跃寻址
  • 需要在当前指令中指定下一条指令的位置
    ☆ 可以由直接地址的形式指出,也可以给出偏移量
    ☆ 转移的位置可以是同一逻辑段内的,也可以是不同逻辑段间的
  • 类型
    1、根据转移的范围分为:
    ☆ 段内转移:只修改IP,CS不变
    ☆ 段间转移:同时修改IP和CS
    2、根据转移指令中操作数寻址方式分为:
    ☆ 直接转移
    ☆ 间接转移
  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值