8086汇编 寻址方式

数据寻址方式

归纳的记忆方法在最底下

立即数寻址
  • 操作数直接存放在指令中,紧跟在操作码之后。
  • 立即数可以是8位或16位
  • 不加H是十进制,加H才是十六进制
    MOV AX,5
寄存器寻址
  • 16位数可以是AX BX CX DX SI DI SP BP
  • 8位数可以是AL AH BL BH CL CH DL DH
  • 操作数在寄存器中,运算速度较高
    MOV AX,BX

新增的预备知识

  • 有效地址EA:操作数的偏移地址
    EA=基址+(变址×比例因子)+位移量
  • 不允许段跨越前缀情况:
    串处理指令的目的串必须用ES段
    PUSH指令的目的和POP指令的源必须用SS段
    指令必须放在CS段中
  • 默认段选择规则
    指令——代码段——CS寄存器
    堆栈——堆栈段——SS寄存器
    局部数据——数据段——DS寄存器
    目的串——附加数据段——ES寄存器
直接寻址
  • 有效地址 = 位移量
    MOV AX,[2000H]
    EA=2000H
  • 用符号地址代替数值地址
    MOV AX,[VALUE]
    EA=VALUE
寄存器间接寻址
  • 有效地址 = 寄存器的内容
  • ,其中BP的默认段是SS,不是DS
    MOV AX,[BX]
    EA=BX
寄存器相对寻址/直接变址寻址
  • 有效地址 = 基址寄存器/变址寄存器 + 指令中的位移量
    MOV AX,COUNT[SI]或
    MOV AX,[COUNT+SI]
    EA=CONUT+SI
基址变址寻址
  • 有效地址 = 基址寄存器内容 + 变址寄存器内容
    MOV AX,[BX][DI]或
    MOV AX,[BX+DI]
    EA=BX+DI
相对基址变址寻址方式
  • 有效地址 = 基址寄存器内容 + 变址寄存器内容 + 指令中指定的位移量
    MOV AX,MASK[BX][SI]或
    MOV AX,MASK[BX+SI]或
    MOV AX,[MASK+BX+SI]
    EA=MASK+BX+SI

好了,说了一大堆,怎么记呢?

  • 最前面两个立即数寻址和寄存器寻址不涉及偏移地址,特殊拎出来记一下就好了
  • 后面的一大堆******寻址方式,找关键词就好了。
    判断这四个有效地址中成分:寄存器,基址,变址,相对(指令中的位移量),有哪些就叫什么寻址。
  • 当然还有一个例外,直接寻址,有效地址直接就是位移量

你可能感兴趣的:(8086汇编 寻址方式)