MOV - Move Byte or Word
Usage: MOV dest,src
Modifies Flags: None
Copies byte or word from the source operand to the destination operand. If the destination is SS interrupts are disabled except on early buggy 808x CPUs. Some CPUs disable interrupts if the destination is any of the segment registers
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg,reg | 2 | 2 | 1 | 2 |
mem,reg | 3 | 2 | 1 | 2-4 |
reg,mem | 5 | 4 | 1 | 2-4 |
mem,immed | 3 | 2 | 1 | 3-6 |
reg,immed | 2 | 2 | 1 | 2-3 |
mem,accum | 3 | 2 | 1 | 3 |
accum,mem | 5 | 4 | 1 | 3 |
segreg,reg16 | 2 | 2 | 3 | 2 |
segreg,mem16 | 5 | 5 | 9 | 2-4 |
reg16,segreg | 2 | 2 | 3 | 2 |
mem16,segreg | 3 | 2 | 3 | 2-4 |
reg32,CR0/CR2/CR3 | 6 | 4 | ||
CR0,reg32 | 10 | 16 | ||
CR2,reg32 | 4 | 4 | 3 | |
CR3,reg32 | 5 | 4 | 3 | |
reg32,DR0/DR1/DR2/DR3 | 22 | 10 | 3 | |
reg32,DR6/DR7 | 22 | 10 | 3 | |
DR0/DR1/DR2/DR3,reg32 | 22 | 11 | 3 | |
DR6/DR7,reg32 | 16 | 11 | 3 | |
reg32,TR6/TR7 | 12 | 4 | 3 | |
TR6/TR7,reg32 | 12 | 4 | 3 | |
reg32,TR3 | 3 | |||
TR3,reg32 | 6 | |||
when the 386 special registers are used all operands are 32 bits |
MOVS - Move String (Byte or Word)
Usage: MOVS dest,src
MOVSB
MOVSW
MOVSD (386+)
Modifies Flags: None
Copies data from addressed by DS:SI (even if operands are given) to the location ES:DI destination and updates SI and DI based on the size of the operand or instruction used. SI and DI are incremented when the Direction Flag is cleared and decremented when the Direction Flag is Set. Use with REP prefixes.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
dest,src | 5 | 7 | 7 | 1 |
MOVSX - Move with Sign Extend (386+)
Usage: MOVSX dest,src
Modifies Flags: None
Copies the value of the source operand to the destination register with the sign extended.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg,reg | 3 | 3 | 3 | |
reg,mem | 6 | 3 | 3-7 |
MOVZX - Move with Zero Extend (386+)
Usage: MOVZX dest,src
Modifies Flags: None
Copies the value of the source operand to the destination register with the zeroes extended.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg,reg | 3 | 3 | 3 | |
reg,mem | 6 | 3 | 3-7 |
MUL - Unsigned Multiply
Usage: MUL src
Modifies Flags: CF OF (AF,PF,SF,ZF undefined)
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.
Clocks | ||||
---|---|---|---|---|
operands | 286 | 386 | 486 | Size Bytes |
reg8 | 13 | 9-14 | 13-18 | 2 |
reg16 | 21 | 9-22 | 13-26 | 2 |
reg32 | 9-38 | 13-42 | 2-4 | |
mem8 | 16 | 12-17 | 13-18 | 2-4 |
mem16 | 24 | 13-26 | 12-25 | 2-4 |
mem32 | 12-21 | 13-42 | 2-4 |
[ TOC | Previous | NeXt | Winston's page ]