在总结寻址方式之前,首先,看一下操作数的种类(指令操作对象称为操作数),8086/8088指令的操作数的种类如下:

  1. 立即操作数。指令要操作的数据在指令代码中,称此数据为立即操作数
  2. 存储器操作数。指令要操作的数据在内存单元中存放,称其为存储器操作数
  3. 寄存器操作数。指令要操作的数据在寄存器中存放,称其为寄存器操作数
  4. I/O端口操作数。指令要操作的数据来自或送到I/O端口,称其为I/O端口操作数
    8086/8088指令系统具有多种寻址方式,一般归纳为以下9种。

  5. 固定寻址。指令要操作的对象隐含在指令的代码中,即代码中没有明确的操作数段,这种方式称为固定寻址。通俗的说,自带操作数。不需要你给出目标操作数。
    例如:
    CBW命令,将AL中的符号位扩展到AH中,形成16位的操作数。比如AL中的符号位是1,则执行CBW命令后,AH则变成FF,如果符号位是0,则AH则变成00。
    PUSH AX ,源操作数是寄存器AX,目的操作数为堆栈顶部,将AX寄存器中的内容压入堆栈。
    CWDE命令,是32位汇编指令,将AX中的符号位扩展到EAX的高位。

  6. 立即寻址。指令要操作的数据在指令代码中,当指令代码取出来时就立即得到了操作数。立即寻址只能用于源操作数的寻址。
    例如:
    MOV AX,3064H 指令的源操作数就是立即寻址方式,其指令