Initial Thoughts on the Localization of Assembly Language (A Direct Challenge to English Encoding!)

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

Leave a Comment