【汇编笔记——80868088的寻址方式】

【汇编笔记——80868088的寻址方式】,第1张


一、数据寻址方式 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、根据转移指令中 *** 作数寻址方式分为:
    ☆ 直接转移
    ☆ 间接转移

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/584580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存