2024年3月27日发(作者:)

一、汇编速查

MOV AA,BB 将 BB 放到 AA 里

CALL 调用子程序 (相当于 BASIC 的 GOSUB)

RET 与 RETF 返回程序 (相当于 BASIC 的 RETURN)

CMP XX,YY 比较 XX 与 YY

JZ 若相等则转移

JNZ 若不相等则转移

JB 若小于则转移

JG 若大于则转移

JMP 无条件转移

J??? (各种转移指令)

LOOP 循环直到CX为0

INT XX 类似 CALL 的中断涵数

PUSH 推入栈(STACK)ESP:PUSH AX

POP 出栈ESP:POP CX

XCHG 交换ESP:XCHG AX,BX

IN、OUT 与PORT有关的IN/OUT

XLAT 查表

LEA 段内偏移量。ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1

LAHF、SAHF与棋标有关的寄存器 AH

PUSHF、POPF将棋标入/出栈

ADD ESP ADD AX,CX (AX=AX+CX)

ADC 加入棋标C的ADD

INC ESP INC AX(AX=AX+1)

AAA 加法校正

SUB、SBB 减法

DEC ESP: DEC AX(AX=AX-1)

NEG 去补,

MUL、IMUL 乘

DIV、IDIV 除

SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT

OR、XOR、AND 逻辑运算 ESP :XOR AX,AX(AX=0)

直接标志转移

指令格式 机器码 测试条件 如...则转移

JC 72 C=1 有进位

JNS 79 S=0 正号

JNC 73 C=0 无进位

JO 70 O=1 有溢出

JZ/JE 74 Z=1 零/等于

JNO 71 O=0 无溢出

JNZ/JNE 75 Z=0 不为零/不等于

JP/JPE 7A P=1 奇偶位为偶

JS 78 S=1 负号

JNP/IPO 7B P=0 奇偶位为奇

间接标志转移

指令格式 机器码 测试格式 如...则转移

JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于

JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于

JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于

JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于

JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于

JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于

JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于

JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于

无条件转移指令JMP

指令格式 执行操作 机器码 说明

段内直接短转移Jmp short (IP)←(IP)+8位位移量 EB 转移范围-128到+127字节

段内直接近转移Jmp near (IP)←(IP)+16位位移量 E9 转移到段内的任一位置

段内间接转移Jmp word (IP)←(有效地址EA) FF

段间直接(远)转移Jmp far (IP)←(偏移地址)

(CS)←(段地址) EA

段间间接转移 Jmp dword (IP)←(EA)

(CS)←(EA+2)

二、断点设置表

一般处理:

bpx hmemcpy(万能断点)

bpx MessageBox bpx MessageBoxExA

bpx MessageBeep bpx SendMessage

bpx GetDlgItemText bpx GetDlgItemInt