Tekil Mesaj gösterimi
Alt 06-09-2008, 15:11   #5
Constantin
ยŦยк
 
Constantin - ait Kullanıcı Resmi (Avatar)
 

PUSHF INSTRUCTION

Purpose: It places the value of the flags on the stack.

Syntax:
PUSHF
This command decreases by 2 the value of the SP register and then the content of the flag register is transferred to the stack, on the address indicated by SP.

The flags are left stored in memory on the same bits indicated on the POPF command.


Logic instructions

They are used to perform logic operations on the operators.


AND INSTRUCTION

Purpose: It performs the conjunction of the operators bit by bit.

Syntax:
AND destiny, source
With this instruction the "y" logic operation for both operators is carried out:
Source Destiny | Destiny
-------------------------
1 1 | 1
1 0 | 0
0 1 | 0
0 0 | 0
The result of this operation is stored on the destiny operator.

NEG INSTRUCTION

Purpose: It generates the complement to 2.

Syntax:
NEG destiny
This instruction generates the complement to 2 of the destiny operator and stores it on the same operator.

For example, if AX stores the value of 1234H, then:
NEG AX
This would leave the EDCCH value stored on the AX register.

NOT INSTRUCTION

Purpose: It carries out the negation of the destiny operator bit by bit.

Syntax:
NOT destiny
The result is stored on the same destiny operator.

OR INSTRUCTION

Purpose: Logic inclusive OR

Syntax:
OR destiny, source
The OR instruction carries out, bit by bit, the logic inclusive disjunction of the two operators:
Source Destiny | Destiny
-------------------------
1 1 | 1
1 0 | 1
0 1 | 1
0 0 | 0
TEST INSTRUCTION

Purpose: It logically compares the operators

Syntax:
TEST destiny, source
It performs a conjunction, bit by bit, of the operators, but differing from AND, this instruction does not place the result on the destiny operator, it only has effect on the state of the flags.

XOR INSTRUCTION

Purpose: OR exclusive

Syntax:
XOR destiny, source
Its function is to perform the logic exclusive disjunction of the two operators bit by bit.
Source Destiny | Destiny
-------------------------
1 1 | 0
0 0 | 1
0 1 | 1
0 0 | 0
Arithmetic instructions

They are used to perform arithmetic operations on the operators.


ADC INSTRUCTION

Purpose: Cartage addition

Syntax:
ADC destiny, source
It carries out the addition of two operators and adds one to the result in case the CF flag is activated, this is in case there is carried.

The result is stored on the destiny operator.

ADD INSTRUCTION

Purpose: Addition of the operators.

Syntax:
ADD destiny, source
It adds the two operators and stores the result on the destiny operator.

DIV INSTRUCTION

Purpose: Division without sign.

Syntax:
DIV source
The divider can be a byte or a word and it is the operator which is given the instruction.

If the divider is 8 bits, the 16 bits AX register is taken as dividend and if the divider is 16 bits the even DX:AX register will be taken as dividend, taking the DX high word and AX as the low.

If the divider was a byte then the quotient will be stored on the AL register and the residue on AH, if it was a word then the quotient is stored on AX and the residue on DX.

IDIV INSTRUCTION

Purpose: Division with sign.

Syntax:
IDIV source
It basically consists on the same as the DIV instruction, and the only difference is that this one performs the operation with sign.

For its results it used the same registers as the DIV instruction.

MUL INSTRUCTION

Purpose: Multiplication with sign.

Syntax:
MUL source
The assembler assumes that the multiplicand will be of the same size as the multiplier, therefore it multiplies the value stored on the register given as operator by the one found to be contained in AH if the multiplier is 8 bits or by AX if the multiplier is 16 bits.
When a multiplication is done with 8 bit values, the result is stored on the AX register and when the multiplication is with 16 bit values the result is stored on the even DX:AX register.

IMUL INSTRUCTION

Purpose: Multiplication of two whole numbers with sign.

Syntax:
IMUL source
This command does the same as the one before, only that this one does take into account the signs of the numbers being multiplied.

The results are kept in the same registers that the MOV instruction uses.

SBB INSTRUCTION

Purpose: Subtraction with cartage.

Syntax:
SBB destiny, source
This instruction subtracts the operators and subtracts one to the result if CF is activated. The source operator is always subtracted from the destiny.

This kind of subtraction is used when one is working with 32 bits quantities.

SUB INSTRUCTION

Purpose: Subtraction.

Syntax:
SUB destiny, source
It subtracts the source operator from the destiny.

Jump instructions

They are used to transfer the flow of the process to the indicated operator.


JMP INSTRUCTION

Purpose: Unconditional jump.

Syntax:
JMP destiny
This instruction is used to deviate the flow of a program without taking into account the actual conditions of the flags or of the data.

JA (JNBE) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JA Label
After a comparison this command jumps if it is or jumps if it is not down or if not it is the equal.

This means that the jump is only done if the CF flag is deactivated or if the ZF flag is deactivated, that is that one of the two be equal to zero.

JAE (JNB) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JAE label
It jumps if it is or it is the equal or if it is not down.

The jump is done if CF is deactivated.

JB (JNAE) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JB label
It jumps if it is down, if it is not , or if it is the equal.

The jump is done if CF is activated.

JBE (JNA) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JBE label
It jumps if it is down, the equal, or if it is not .

The jump is done if CF is activated or if ZF is activated, that any of them be equal to 1.

JE (JZ) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JE label
It jumps if it is the equal or if it is zero.

The jump is done if ZF is activated.

JNE (JNZ) INSTRUCTION

Purpose: Conditional jump.

Syntax:
JNE label
It jumps if it is not equal or zero.

The jump will be done if ZF is deactivated.

JG (JNLE) INSTRUCTION

Purpose: Conditional jump, and the sign is taken into account.

Syntax:
JG label
It jumps if it is larger, if it is not larger or equal.

The jump occurs if ZF = 0 or if OF = SF.

JGE (JNL) INSTRUCTION

Purpose: Conditional jump, and the sign is taken into account.

Syntax:
JGE label
It jumps if it is larger or less than, or equal to.

The jump is done if SF = OF
Constantin Ofline   Alıntı ile Cevapla