1. Data Transfer Instructions
MOV: Transfer word or byte ->>>>>>>>>>>>>>>>>>>>>>>>>>>> CHUAN means transfer
MOVSX: Sign extend first, then transfer ->>>>>>>>>>>>>>>>>>>>>> CHUANFHR means transfer sign to any register
MOVZX: Zero extend first, then transfer ->>>>>>>>>>>>>>>>>>>>>> CHUANLR means zero extend any register then transfer
PUSH: Push word onto stack ->>>>>>>>>>>>>>>>>>>>>> RUZH means push onto stack
POP: Pop word from stack ->>>>>>>>>>>>>>>>>>>>>> CHUZH means pop from stack
PUSHA: Push AX, CX, DX, BX, SP, BP, SI, DI onto stack in order ->>>>>>>>>>>>>>>>>>>>>> RUZHA means push A onto stack
POPA: Pop DI, SI, BP, SP, BX, DX, CX, AX from stack in order ->>>>>>>>>>>>>>>>>>>>>> CHUZHA means pop A from stack
PUSHAD: Push EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI onto stack in order ->>>>>>>>>>>>>>>>>>>>>> RUZHAD means push AD onto stack
POPAD: Pop EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX from stack in order ->>>>>>>>>>>>>>>>>>>>>> CHUZHAD means pop AD from stack
BSWAP: Swap the order of bytes in a 32-bit register ->>>>>>>>>>>>>>>>>>>>>> BJIAOH means B swap
XCHG: Exchange word or byte. (At least one operand must be a register; segment registers cannot be operands) ->>>>>>>>>>>>>>>>>>>>>> RJIAOH means arbitrary exchange
CMPXCHG: Compare and exchange operands. (The second operand must be the accumulator AL/AX/EAX) ->>>>>>>>>>>>>>>>>>>>>> BIRJIAOH means compare arbitrary exchange
XADD: Exchange first then add. (Result is in the first operand) ->>>>>>>>>>>>>>>>>>>>> RJIA means arbitrary add
2. Input/Output Port Transfer Instructions
IN: Input from I/O port. (Syntax: IN accumulator, {port number | DX}) ->>>>>>>>>>>>>>>>>>>>>> RU means input
OUT: Output to I/O port. (Syntax: OUT {port number | DX}, accumulator) When the I/O port is specified by immediate mode, its range is 0-255; when specified by register DX, its range is 0-65535 ->>>>>>>>>>>>>>>>>>>>>> CHU means output
3. Destination Address Transfer Instructions
LEA: Load effective address. Example: LEA DX, string; store the offset address in DX ->>>>>>>>>>>>>>>>>>>>>> JZYXDZ means load effective address
LDS: Transfer target pointer, load pointer content into DS. Example: LDS SI, string; store segment address: offset address in DS:SI ->>>>>>>>>>>>>>>>>>>>>> JZDS means load content into DS:SI
LES: Transfer target pointer, load pointer content into ES. Example: LES DI, string; store segment address: offset address in ES:DI ->>>>>>>>>>>>>>>>>>>>>> JZES means load content into ES:DI
LFS: Transfer target pointer, load pointer content into FS. Example: LFS DI, string; store segment address: offset address in FS:DI ->>>>>>>>>>>>>>>>>>>>>> JZFS means load content into FS:DI
LGS: Transfer target pointer, load pointer content into GS. Example: LGS DI, string; store segment address: offset address in GS:DI ->>>>>>>>>>>>>>>>>>>>>> JZGS means load content into GS:DI
LSS: Transfer target pointer, load pointer content into SS. Example: LSS DI, string; store segment address: offset address in SS:DI ->>>>>>>>>>>>>>>>>>>>>> JZSS means load content into SS:DI
4. Flag Transfer Instructions
LAHF: Transfer flag register, load flags into AH ->>>>>>>>>>>>>>>>>>>>>> JZAHBZ means load flags into AH
SAHF: Transfer flag register, load AH content into flag register ->>>>>>>>>>>>>>>>>>>>>> CAHBZ means store AH content to flag register
PUSHF: Push flags onto stack ->>>>>>>>>>>>>>>>>>>>>> RUZHBZ means push flags onto stack
POPF: Pop flags from stack ->>>>>>>>>>>>>>>>>>>>>> CHUZHBZ means pop flags from stack
PUSHD: Push 32-bit flags onto stack ->>>>>>>>>>>>>>>>>>>>>> RUZH32
POPD: Pop 32-bit flags from stack ->>>>>>>>>>>>>>>>>>>>>> CHUZH32
5. Arithmetic Operation Instructions
ADD: Addition ->>>>>>>>>>>>>>>>>>>>>> JIA means add
ADC: Addition with carry ->>>>>>>>>>>>>>>>>>>>>> DWJIA means addition with carry
INC: Increment by 1 ->>>>>>>>>>>>>>>>>>>>>> JIAYI means increment by one
AAA: ASCII adjustment for addition ->>>>>>>>>>>>>>>>>>>>>> JIAATZ means ASCII adjustment for addition
DAA: Decimal adjustment for addition ->>>>>>>>>>>>>>>>>>>>>> JIASHITZ means decimal adjustment for addition
SUB: Subtraction -> JIAN means subtract
SBB: Subtraction with borrow ->>>>>>>>>>>>>>>>>>>>>> DWJIAN means subtraction with borrow
DEC: Decrement by 1 ->>>>>>>>>>>>>>>>>>>>>> JIANYI means decrement by one
NEG: Take complement ->>>>>>>>>>>>>>>>>>>>>> QUBU means take complement
CMP: Compare. (Subtracts two operands, modifies only the flags, does not return result) ->>>>>>>>>>>>>>>>>>>>>> BIJ means compare
AAS: ASCII adjustment for subtraction ->>>>>>>>>>>>>>>>>>>>>> JIANATZ means ASCII adjustment for subtraction
DAS: Decimal adjustment for subtraction ->>>>>>>>>>>>>>>>>>>>>> JIANSHITZ means decimal adjustment for subtraction
MUL: Unsigned multiplication. Result returned in AH and AL (byte operation), or DX and AX (word operation) ->>>>>>>>>>>>>>>>>>>>>> CJI means multiply
IMUL: Integer multiplication. Result returned in AH and AL (byte operation), or DX and AX (word operation) ->>>>>>>>>>>>>>>>>>>>>> ZCJI means integer multiply
AAM: ASCII adjustment for multiplication ->>>>>>>>>>>>>>>>>>>>>> ATZCJI means ASCII adjustment for product
DIV: Unsigned division: quotient returned in AL, remainder returned in AH (byte operation); or quotient returned in AX, remainder returned in DX (word operation) ->>>>>>>>>>>>>>>>>>>>>> CHU means division
IDIV: Integer division: quotient returned in AL, remainder returned in AH (byte operation); or quotient returned in AX, remainder returned in DX (word operation) ->>>>>>>>>>>>>>>>>>>>>> ZCHU means integer division
AAD: ASCII adjustment for division -> ATZC means ASCII adjustment for division
CBW: Convert byte to word. (Sign extends the byte in AL to AH) ->>>>>>>>>>>>>>>>>>>>>> ZJZZ means byte to word conversion
CWD: Convert word to double word. (Sign extends the word in AX to DX) ->>>>>>>>>>>>>>>>>>>>>> ZZSZ means word to double word conversion
CWDE: Convert word to double word. (Sign extends the word in AX to EAX) ->>>>>>>>>>>>>>>>>>>>>> ZZSZE means word to double word E conversion
CDQ: Double word extension. (Sign extends the word in EAX to EDX) ->>>>>>>>>>>>>>>>>>>>>> SZKZ means double word extension
6. Logical Operation Instructions
Logical operation instructions
AND: AND operation. ->>>>>>>>>>>>>>>>>>>>>> YU means AND
OR: OR operation. ->>>>>>>>>>>>>>>>>>>>>> HUO means OR
XOR: XOR operation. ->>>>>>>>>>>>>>>>>>>>>> YIHUO means XOR
NOT: Negation. ->>>>>>>>>>>>>>>>>>>>>> QUFAN means negation
TEST: Test. (Performs AND operation on two operands, modifies only the flags, does not return result) ->>>>>>>>>>>>>>>>>>>>>> CESHI means test
7. Shift Instructions
SHL: Logical left shift. ->>>>>>>>>>>>>>>>>>>>>> LZY means logical left shift
SAL: Arithmetic left shift. (=SHL) ->>>>>>>>>>>>>>>>>>>>>> SZY means arithmetic left shift
SHR: Logical right shift. (Each bit shifts right, low bit enters CF, high bit fills with 0) ->>>>>>>>>>>>>>>>>>>>>> LYY means logical right shift
SAR: Arithmetic right shift. (Each bit shifts right, low bit enters CF, high bit remains unchanged) ->>>>>>>>>>>>>>>>>>>>>> SYY means arithmetic right shift
ROL: Rotate left. ->>>>>>>>>>>>>>>>>>>>>> XZY means rotate left
ROR: Rotate right. ->>>>>>>>>>>>>>>>>>>>>> XYY means rotate right
RCL: Rotate left through carry. ->>>>>>>>>>>>>>>>>>>>>> JXZY means rotate left through carry
RCR: Rotate right through carry ->>>>>>>>>>>>>>>>>>>>>> JXYY means rotate right through carry
8. String Operation Instructions
9. Program Transfer Instructions
Unconditional transfer instructions
(Long transfer)
JMP: Unconditional transfer instruction. ->>>>>>>>>>>>>>>>>>>>>> WTZ means unconditional jump
CALL: Procedure call. ->>>>>>>>>>>>>>>>>>>>>> DY means call
RET/RETF: Procedure return ->>>>>>>>>>>>>>>>>>>>>> FH/FANHUI
Conditional transfer instructions
(Short transfer, within a distance of -128 to +127; only when (SF, XOR, OF)=1, OP1<OP2)
JA/JNBE: Jump if greater. ->>>>>>>>>>>>>>>>>>>>>> TZDY/TZBXD means jump if greater / jump if not less than or equal
JAE/JNB: Jump if greater or equal. ->>>>>>>>>>>>>>>>>>>>>> TZDD/TZBX means jump if greater or equal / jump if not less
JB/JNAE: Jump if less. ->>>>>>>>>>>>>>>>>>>>>> TZX/TZBDD means jump if less / jump if not greater than or equal
JBE/JNA: Jump if less or equal. ->>>>>>>>>>>>>>>>>>>>>> TZXD/TZBD means jump if less or equal / jump if not greater
The above four test the results of unsigned integer operations (flags C and Z) ->
JG/JNLE: Jump if greater. ->
JGE/JNL: Jump if greater or equal. ->
JL/JNGE: Jump if less. ->
JLE/JNG: Jump if less or equal. ->
10. Loop Control Instructions
(Short transfer)
LOOP: Loop while CX is not zero. ->>>>>>>>>>>>>>>>>>>>>> XUNHUAN means loop
LOOPE/LOOPZ: Loop while CX is zero and flag Z=1. ->>>>>>>>>>>>>>>>>>>>>> XUNHUAND/XUNHUANL means loop while CX equals 0 and flag Z=1
LOOPNE/LOOPNZ: Loop while CX is not zero and flag Z=0. ->>>>>>>>>>>>>>>>>>>>>> XUNHUANBD/XUNHUANBL
JCXZ: Jump if CX is zero. ->>>>>>>>>>>>>>>>>>>>>> TZCXL means jump if CX is zero
JECXZ: Jump if ECX is zero. ->>>>>>>>>>>>>>>>>>>>>> TZECXL means jump if ECX is zero
11. Interrupt Instructions
INT: Interrupt instruction. ->>>>>>>>>>>>>>>>>>>>>> ZD means interrupt
INTO: Overflow interrupt. ->>>>>>>>>>>>>>>>>>>>>> YCZD means overflow interrupt
IRET: Interrupt return. ->>>>>>>>>>>>>>>>>>>>>> ZDFH means interrupt return