Fork me on GitHub

指令系统

寻址方式

  • 立即寻址

    1
    MOV AL,01010101B
  • 寄存器寻址

1
MOV AX,BX
  • 存储器操作数寻址

    逻辑地址:段寄存器名称:偏移地址表达式

    • 直接寻址
      1
      MOV BX,DS:[1234H]
    • 寄存器间接寻址

      1
      MOV AL,[BX]
      1
      2
      MOV BP,MESG
      MOV CL,ES:[BP] ;ES附加段MESG字节单元取数->CL
    • 基址寻址

      逻辑地址表达方式:段寄存器:[基址寄存器+位移量]/段寄存器:位移量[基址寻址器]

      1
      2
      3
      4
      5
      6
      7
      8
      MOV DL,DS:[BP+10]
      MOV EDX,[EAX+10H]
      ```
      * 变址寻址
      >段寄存器:[比例因子×变址寄存器+位移量]/段寄存器:位移量[比例因子×变址寄存器]
      ```asm
      MOV AL,[2*EBX+10]
      MOV AH,[SI+5] ;只能选择SI DI两个存储器

      *基址加变址寻址

      • 有比例因子的基地址加变址寻址:
        段寄存器:[基址寄存器+比例因子×变址寄存器+位移量]
        段寄存器:位移量[基址寄存器+比例因子x变址寄存器]
        段寄存器:位移量[基址寄存器][比例因子x变址寄存器]
        基址寄存器与变址寄存器都必须是规定的32位寄存器
      • 没有比例因子的基址加变址寻址:
        段寄存器:[基址寄存器+变址寄存器+位移量]
        段寄存器:位移量[基址寄存器+变址寄存器]
        段寄存器:位移量[基址寄存器][变址寄存器]
        基址寄存器与变址寄存器必须是指定的16位寄存器
      • 基址、变址、基址加变址这三种寻址方式中偏移地址表达式中的位移量是无符号整数
  • 带有比例因子的变址寻址同行用于检索一维数组元素
  • 带有比例因子的基址加变址通常用于检索二维数组