وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

FIDIV

FIDIV 

Usage: FIDIV  dest,src                               Modifies flags:  None

Divides the 'dest' by the 'src' operand and stores the result in the 'dest'. The 'dest' (dividend) is always in an FPU register; the 'src' operand (divisor) can be a register or a memory location.   

Floating-Point/Integer Division


FIDIV mem16                   ; DE /6                [8086,FPU]

FIDIV mem32                   ; DA /6                [8086,FPU]


FIDIVR mem16                  ; DE /7                [8086,FPU]

FIDIVR mem32                  ; DA /7                [8086,FPU]


FIDIV divides ST0 by the 16-bit or 32-bit integer stored in the given memory location, and stores the result in ST0. FIDIVR does the division the other way up: it divides the integer by ST0, but still stores the result in ST0.


Source operands in memory can be in single-precision or double-precision floating-point format, word or doubleword integer format.


The no-operand version of the instruction divides the contents of the ST(1) register by the contents of the ST(0) register. The one-operand version divides the contents of the ST(0) register by the contents of a memory location (either a floating-point or an integer value). The two-operand version, divides the contents of the ST(0) register by the contents of the ST(i) register or vice versa.


The FDIVP instructions perform the additional operation of popping the FPU register stack after storing the result. To pop the register stack, the processor marks the ST(0) register as empty and increments the stack pointer (TOP) by 1. 


The no-operand version of the floating-point divide instructions always results in the register stack being popped. In some assemblers, the mnemonic for this instruction is FDIV rather than FDIVP.


FPU Flags Affected

C1 Set to 0 if stack underflow occurred. Set if result was rounded up; cleared otherwise.

C0, C2, C3 Undefined.


FDIV/FDIVP/FIDIV-Divide

Opcode        Instruction                Description

D8 /6            FDIV m32fp                Divide ST(0) by m32fp and store result in ST(0).

DC /6           FDIV m64fp                Divide ST(0) by m64fp and store result in ST(0).

D8 F0 +i       FDIV ST(0), ST(i)         Divide ST(0) by ST(i) and store result in ST(0).

DC F8 +i      FDIV ST(i), ST(0)         Divide ST(i) by ST(0) and store result in ST(i).

DE F8 +i      FDIVP ST(i), ST(0)       Divide ST(i) by ST(0), store result in ST(i), and pop the register stack.

DE F9          FDIVP                        Divide ST(1) by ST(0), store result in ST(1), and pop the register stack.

DA /6           FIDIV m32int               Divide ST(0) by m32int and store result in ST(0).

DE /6           FIDIV m16int               Divide ST(0) by m64int and store result in ST(0).


EXAMPLE:

fidiv st2 D$Last