简单汇编指令

r :表示操作数:必须是寄存器

r/m :可以使寄存器或是内存单元

imm :表示立即数

MOV指令:

1、MOV r/m8,r8

​ MOV [0x34], AL

​ MOV BL, AL

2、MOV r/m16,r16

​ MOV [0x1234], BL

​ MOV AX, BX

3、MOV r/m32,r32

​ MOV [0x86531254], ECX

​ MOV EAX, ECX

4、MOV r8,r/m8

​ MOV BH, [0x65]

5、MOV r16,r/m16

​ MOV AX, [0x6546]

6、MOV r32,r/m32

​ MOV EAX, EBX

​ MOV EAX, [0x6A376833]

7、MOV r8, imm8

​ MOV BL, 66H

8、MOV r16, imm16

​ MOV CX, 6666H

9、MOV r32, imm32

​ MOV EDX, 11451419H

image-20250923202739375

ADD指令

ADD AL, imm8

​ ADD AL, 66H

ADD AX, imm16

​ ADD AX, 1145H

ADD EAX, imm32

​ ADD EAX, 98765432H

​ ADD EAX, 0xF8765432

ADD r/m8, imm8

​ ADD BYTE [0x66], 77H

​ ADD AL, 77H

ADD r/m16,imm16

​ ADD WORD [0x1919], 6666H

​ ADD WORD [0x1919], 0x6666

ADD r/m32,imm32

​ ADD DWORD [0x55668899], 12346688H

ADD r/m16, imm8

​ ADD BYTE [0x6699], 54H

​ ADD WORD [0x6699], 54H

ADD r/m32, imm8

​ ADD EBX, 66H

ADD r/m8, r8

​ ADD BYTE [0xAF], AH

ADD r/m16, r16

​ ADD WORD [0xFCED], BX

ADD r/m32, r32

​ ADD [0xFFF666CA], EAX

ADD r8, r/m8

​ ADD AL, [0xAA]

ADD r16, r/m16

​ ADD CX, DX

ADD r32, r/m32

​ ADD EAX, ECX

image-20250923203505097

SUB指令(使用0x,使用H会先按 8 位符号来省字节)

SUB AL, imm8

​ SUB AL, 33H

SUB AX, imm16

​ SUB AX, 1FDCH

SUB EAX, imm32

​ SUB EAX, 5568DFE7H

​ SUB EAX, 0xF568DFE7

SUB r/m8, imm8

​ SUB BYTE [0xFF], 77H

SUB r/m16,imm16

​ SUB WORD [0xF5A6], 49CAH

SUB r/m32,imm32

​ SUB DWORD [0xAD66CD45], 6BDDC564H

SUB r/m16, imm8

​ SUB AX, 7FH

SUB r/m32, imm8

​ SUB DWORD [0xFDA658C1], 0F4H

SUB r/m8, r8

​ SUB AL, 5DH

SUB r/m16, r16

​ SUB WORD [0xEDAC], 6568H

SUB r/m32, r32

​ SUB EDX, 66666666H

SUB r8, r/m8

​ SUB BH, [0x11]

SUB r16, r/m16

​ SUB CX, [0x1234]

SUB r32, r/m32

​ SUB EAX, [0xEADC6597]

image-20250923203622186

AND指令

AND AL, imm8

​ AND AL, 15H

AND AX, imm16

​ AND AX, 654FH

AND EAX, imm32

​ AND EAX, 0xEACF58BD

AND r/m8, imm8

​ AND BYTE [0xCC], 0xC4

AND r/m16,imm16

​ AND WORD [0xEC56], 0xE5C3

AND r/m32,imm32

​ AND DWORD [0x6E5D1C3A], 5F1C3E6BH

​ AND DWORD [0x6E5D1C3A], 0x5F1C3E6B

AND r/m16, imm8

​ AND [0xED65], 44H

​ AND BYTE [0xED65], 44H

AND r/m32, imm8

​ AND [0xD5E3C1A4], FFH

​ AND BYTE [0xD5E3C1A4], 0xFF

​ AND WORD [0xD5E3C1A4], 0xFF

​ AND DWORD [0xD5E3C1A4], 0xFF

AND r/m8, r8

​ AND BYTE [0x66], 99H

AND r/m16, r16

​ AND WORD [0x7878], 8787H

AND r/m32, r32

​ AND DWORD [0x61615151], 0xADADCDCD

AND r8, r/m8

​ AND CH, [0x66]

AND r16, r/m16

​ AND AX, [0xED65]

AND r32, r/m32

​ AND EBX, [0x654FED3C]

image-20250923203747708

OR指令:

OR AL, imm8

​ OR AL, 0xFF

OR AX, imm16

​ OR AX, 0xECBA

OR EAX, imm32

​ OR EAX, 0x64DC24AB

OR r/m8, imm8

​ OR BYTE [0xEE], 0x46

OR r/m16,imm16

​ OR WORD [0xE75C], 0x65A3

OR r/m32,imm32

​ OR DWORD [0x65FC34DA], 0xEE77FF88

OR r/m16, imm8

​ OR BYTE [0xE6C1], 0x12

​ OR WORD

OR r/m32, imm8

​ OR BYTE

​ OR WORD [0xEC65AB41], 0x77

​ OR DWORD

OR r/m8, r8

​ OR [0x66], AL

OR r/m16, r16

​ OR [0xAECD], BX

OR r/m32, r32

​ OR [0x65BB66AA], EDX

OR r8, r/m8

​ OR CH, [0x11]

OR r16, r/m16

​ OR AX, [0x9999]

OR r32, r/m32

​ OR EBX, [0xFEADB654]

image-20250923203908166

XOR指令:

XOR AL, imm8

​ XOR AL, 0x78

XOR AX, imm16

​ XOR AX, 0x6678

XOR EAX, imm32

​ XOR EAX, 0x78786666

XOR r/m8, imm8

​ XOR BYTE [0xAA], 0xBB

XOR r/m16,imm16

​ XOR WORD [0x9876], 0x4563

XOR r/m32,imm32

​ XOR DWORD [0x85DF3CB1], 0xEEEEDCAB

XOR r/m16, imm8

​ XOR BYTE [0x98FC], 0x78

​ XOR WORD

XOR r/m32, imm8

​ XOR BYTE

​ XOR WORD [0xFAF78654], 0x66

​ XOR DWORD

XOR r/m8, r8

​ XOR [0x78], AL

XOR r/m16, r16

​ XOR [0x64AC], BX

XOR r/m32, r32

​ XOR [0xA12C35D4], ECX

XOR r8, r/m8

​ XOR AH, [0x78]

XOR r16, r/m16

​ XOR BX, [0x6666]

XOR r32, r/m32

​ XOR ECX, [0xFEDCBA98]

image-20250923204057801

NOT指令:

NOT r/m8

​ NOT BYTE [0x78]

NOT r/m16

​ NOT BYTE [0x7878]

​ NOT WORD [0x7878]

NOT r/m32

​ NOT BYTE [0xFD87CA65]V

​ NOT WORD [0xFD87CA65]

​ NOT DWORD [0xFD87CA65]

image-20250923204122081

其他指令

ADC指令:带进位加法

格式:ADC R/M,R/M/IMM 两边不能同时为内存 宽度要一样


ADC AL,CL

ADC BYTE PTR DS:[12FFC4],2

ADC BYTE PTR DS:[12FFC4],AL

SBB指令:带借位减法

格式:SBB R/M,R/M 两边不能同时为内存 宽度要一样


SBB AL,CL

SBB BYTE PTR DS:[12FFC4],2

SBB BYTE PTR DS:[12FFC4],AL

XCHG指令:交换数据

格式:XCHG R/M,R/M/IMM 两边不能同时为内存 宽度要一样


XCHG AL,CL

XCHG DWORD PTR DS:[12FFC4],EAX

XCHG BYTE PTR DS:[12FFC4],AL

MOVS指令:移动数据 内存-内存

BYTE/WORD/DWORD

MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 简写为:MOVSB

MOVS WORD PTR ES:[EDI],BYTE PTR DS:[ESI] 简写为:MOVSW

MOVS DWORD PTR ES:[EDI],BYTE PTR DS:[ESI] 简写为:MOVSD

例子:

MOV EDI,12FFD8
MOV ESI,12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

修改标志寄存器中D位的值,然后在执行下面的指令:

MOV EDI,12FFD8
MOV ESI,12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]




STOS指令:讲Al/AX/EAX的值存储到[EDI]指定的内存单元


STOS BYTE PTR ES:[EDI] 简写为STOSB

STOS WORD PTR ES:[EDI] 简写为STOSW

STOS DWORD PTR ES:[EDI] 简写为STOSD



MOV EAX,12345678
MOV EDI,12FFC4
STOS BYTE PTR ES:[EDI] 观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]


修改标志寄存器中D位的值,然后在执行下面的指令:

MOV EAX,12345678
MOV EDI,12FFC4
STOS BYTE PTR ES:[EDI] 观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]


REP指令:按计数寄存器 (ECX) 中指定的次数重复执行字符串指令

MOV ECX,10

REP MOVSD

REP STOSD

Author: wickt42
Link: http://example.com/2025/09/23/简单汇编指令/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.