X86
MNEMONIC INSTRUCTIONS FOR: GOLIATH
.NET CPU EMULATOR
BINARY
ARITHMETIC INSTRUCTIONS
The binary arithmetic
instructions perform basic integer computions on operands in memory or
the general-purpose registers:
- ADC -
Add With Carry
Sums two
binary operands placing the result in the
destination. If CF is set, a 1 is added to the destination.
- ADD -
Arithmetic Addition
Adds "src"
to "dest" and replacing the original contents of "dest".
Both operands are binary.
- CMP -
Compare
- DEC -
Decrement
Unsigned
binary subtraction of one from the destination.
- DIV -
Divide
- IDIV -
Signed Integer Division
- INC -
Increment
Adds one
to destination unsigned binary operand.
-
MUL - Unsigned Multiply:
Unsigned
multiply of the accumulator by the source. If "src"
is a byte value, then AL is used as the other multiplicand and
the result is placed in AX. If "src" is a word
value, then AX is multiplied by "src" and DX:AX receives the
result. If "src" is a double word value, then EAX is
multiplied by "src" and EDX:EAX receives the result. The 386+
uses an early out algorithm which makes multiplying any size value in
EAX as fast as in the 8 or 16 bit registers.
- NEG -
Two's Complement Negation
Subtracts
the destination from 0 and saves the 2s complement of "dest"
back into "dest".
- SBB - Subtract with Borrow/Carry
Subtracts
the source from the destination, and subtracts 1 extra if the
Carry Flag is set. Results are returned in "dest".
- SUB -
Subtract
The source
is subtracted from the destination and the result is stored
in the destination.
BIT
AND BYTE INSTRUCTIONS
The bit instructions test and
modify individual bits in operands. The byte instructions set the value
of a byte operand to indicate the status of flags in
the eflags register:
- TEST -
Test For Bit Pattern
Performs a
logical AND of the two operands updating the flags register without
saving the result.
- ...in continua
evoluzione
CONTROL
TRANSFER INSTRUCTIONS
The control transfer
instructions control the flow of program execution:
- JA
Short Jump if
first operand is Above second operand (as set by CMP instruction).
Unsigned.
- JAE
Short
Jump if first operand is Above or Equal to second operand (as set by
CMP instruction). Unsigned.
- JB
Short Jump if first operand is Below second operand (as set by CMP
instruction). Unsigned.
- JBE
Short Jump if first operand is Below or Equal to second operand (as set
by CMP instruction). Unsigned.
- JC
Short Jump if Carry flag is set to 1
- JCXZ/JECXZ
Short Jump
if CX/ECX register is 0. Uses unsigned comparision.
- JE
Short Jump if first operand is Equal to second operand (as set by CMP
instruction). Signed/Unsigned.
- JG
Short
Jump if first operand is Greater then second operand (as set by CMP
instruction). Signed.
- JL
Short Jump if first operand is Less then second
operand (as set by CMP instruction). Signed.
- JLE
Short Jump if first operand is Less or Equal to second operand (as set
by CMP instruction). Signed.
- JGE
Short Jump if first operand is Greater or Equal to second operand (as
set by CMP instruction). Signed.
- JNA
Short Jump if first operand is Not Above second operand (as set by CMP
instruction). Unsigned.
- JNAE
Short Jump if first operand is Not Above and Not Equal to second
operand (as set by CMP instruction). Unsigned.
- JNB
Short Jump if first operand is Not Below second operand (as set by CMP
instruction). Unsigned.
- JNBE
Short Jump if first operand is Not Below and Not Equal to second
operand (as set by CMP instruction). Unsigned.
- JNC
Short Jump if
Carry flag is set to 0
- JNE
Short Jump
if first operand is Not Equal to second operand (as set by CMP
instruction). Signed/Unsigned
- JNG
Short Jump if first operand is Not Greater then second operand (as set
by CMP instruction). Signed.
- JNGE
Short Jump if first operand is Not Greater and Not Equal to second
operand (as set by CMP instruction). Signed.
- JNL
Short Jump if first operand is Not Less then second operand (as set by
CMP instruction). Signed.
- JNLE
Short Jump if first operand is Not Less and Not Equal to second operand
(as set by CMP instruction). Signed.
- JNP
Short Jump if
No Parity (odd). Only 8 low bits of result are checked. Set by CMP,
SUB, ADD, TEST, AND, OR, XOR instructions.
- JNO
Short Jump
if Not Overflow.
- JNS
Short Jump if
Not Signed (if positive). Set by CMP, SUB, ADD, TEST, AND, OR, XOR
instructions.
- JNZ
Short Jump if
Not Zero (not equal). Set by CMP, SUB, ADD, TEST, AND, OR, XOR
instructions.
- JO
Short
Jump if Overflow
- JP
Short Jump if
Parity (even). Only 8 low bits of result are checked. Set by CMP, SUB,
ADD, TEST, AND, OR, XOR instructions
- JPE
Short Jump
if Parity Even. Only 8 low bits of result are checked. Set by CMP, SUB,
ADD, TEST, AND, OR, XOR instructions
- JPO
Short Jump
if Parity Odd. Only 8 low bits of result are checked. Set by CMP, SUB,
ADD, TEST, AND, OR, XOR instructions
- JS
Short Jump if
Signed (if negative). Set by CMP, SUB, ADD, TEST, AND, OR, XOR
instructions
- JZ
Short Jump if
Zero (equal). Set by CMP, SUB, ADD, TEST, AND, OR, XOR instructions.
DATA
TRANSFER INSTRUCTIONS
The data transfer instructions
move data between memory and the general-purpose and segment registers,
and perform operations such as conditional moves, stack access, and
data conversion:
DECIMAL
ARITHMETIC INSTRUCTIONS
The decimal arithmetic
instructions perform decimal arithmetic on binary coded decimal (BCD)
data:
FLAG
CONTROL INSTRUCTIONS
The status flag control
instructions operate on the bits in the eflags register:
LOGICAL
INSTRUCTIONS
The logical instructions
perform basic logical operations on their operands:
MISCELLANEOUS
INSTRUCTIONS
The instructions documented in
this section provide a number of useful functions:
ROTATE
INSTRUCTIONS
The rotate
instructions rotate the bits in their operands:
SHIFT
INSTRUCTIONS
The shift instructions
shift the bits in their operands:
STRING
INSTRUCTIONS
The string instructions operate
on strings of bytes. Operations include storing strings in memory,
loading strings from memory, comparing strings, and scanning strings
for substrings:
ALL "GOLIATH
.NET" SOFTWARE SECURITY
|