网站首页 网站地图
网站首页 > 游戏秘籍 > 汇编语言指令

汇编语言指令

时间:2026-04-01 17:16:29

汇编语言(Assembly Language)是一种低级编程语言,它直接对应计算机的机器语言,通过指令集(Instruction Set)来描述操作。汇编语言的指令通常以MOVADDSUBJMP等关键字开头,用于操作寄存器、内存、数据等。

下面是一些常见的汇编语言指令及其用途,以x86架构为例(如MASM、TASM、NASM等汇编器):

✅ 常见汇编语言指令

1. 数据操作指令

  • MOV:移动数据(移动寄存器、内存、寄存器到寄存器)

    MOV AX, 1000h      ; 将 1000h(即 4096)赋值给寄存器 AX
    MOV [BX], 1000h    ; 将 1000h 写入内存地址 BX
    MOV DX, 1234h      ; 将 1234h 赋值给寄存器 DX
  • ADD:加法操作

    ADD AX, BX         ; AX = AX + BX
    ADD [SI], CX       ; CX 的值加到内存地址 SI 的位置
  • SUB:减法操作

    SUB AX, BX         ; AX = AX - BX
    SUB [DI], DX       ; DX 的值减到内存地址 DI 的位置
  • AND:按位与

    AND AL, 0Fh        ; AL = AL & 0Fh
  • OR:按位或

    OR AH, 0FFh        ; AH = AH | 0FFh
  • XOR:按位异或

    XOR CL, DL         ; CL = CL ^ DL
  • SHL:左移(乘以 2)

    SHL AX, 1          ; AX = AX << 1
  • SHR:右移(除以 2)

    SHR BX, 1          ; BX = BX >> 1

2. 控制流指令

  • JMP:跳转

    JMP 100h           ; 跳转到地址 100h
    JMP DWORD PTR [BX]  ; 跳转到内存地址 BX 的内容
  • CALL:调用子程序

    CALL SubProc       ; 调用子程序 SubProc
  • RET:返回

    RET                 ; 返回到调用者
  • CMP:比较(不改变数据)

    CMP AX, BX         ; AX 和 BX 相等吗?
  • JZ:跳转 if zero

    JZ ZeroFlag        ; 如果 ZeroFlag 为 1,跳转
  • JNZ:跳转 if not zero

    JNZ NonZeroFlag    ; 如果 NonZeroFlag 为 1,跳转
  • JA:跳转 if above

    JA 100h            ; 如果 AX > BX,跳转到 100h

3. 寄存器操作

  • MOV:移动寄存器到寄存器

    MOV AL, BL         ; AL = BL
  • PUSH:压栈

    PUSH AX            ; 将 AX 压入栈
  • POP:弹栈

    POP BX             ; 弹出栈顶内容到 BX
  • CLI:清除中断标志

    CLI                 ; 清除中断标志位
  • STI:设置中断标志

    STI                 ; 设置中断标志位
  • CLISTI 用于控制中断处理。

4. 内存操作

  • LEA:加载有效地址

    LEA SI, [BX + 100h]  ; SI = 地址 BX + 100h
  • MOV:移动内存内容(与 MOV 类似,但用于内存)

  • MOVSB:移动字节(Memory to Memory)

    MOVSB               ; 从内存地址 SI 处读取一个字节,存入 DI
  • MOVSW:移动字(Memory to Memory)

    MOVSW               ; 从内存地址 SI 处读取一个字,存入 DI
  • MOVSD:移动双字(Memory to Memory)

    MOVSD               ; 从内存地址 SI 处读取一个双字,存入 DI