Difference between revisions of "Assembler:Commands:CMOVL"
(Created page with 'Category:Assembler '''command''' cmovl ''destination, source'' cmovl is CMOVcc instruction, The cmovl (conditional move if less) check the state of '''SF''' AND '''OF''', if…') |
(→Examples) |
||
(One intermediate revision by one other user not shown) | |||
Line 2: | Line 2: | ||
'''command''' cmovl ''destination, source'' | '''command''' cmovl ''destination, source'' | ||
− | cmovl is CMOVcc instruction, The cmovl | + | cmovl is CMOVcc instruction, The cmovl ''conditional move if less'' check the state of '''SF''' AND '''OF'''. |
+ | |||
+ | If '''SF<>OF''' then condition is satisfied, otherwise it will be skipped. | ||
+ | |||
+ | CMOVcc instructions are mainly used after [[Assembler:Commands:CMP|CMP]] | ||
+ | |||
+ | |||
+ | <div style="padding:2px;border:1px dashed #2f6fab;background-color:#f4f4f4;"> | ||
+ | The CMOVcc instructions check the state of one or more of the status flags in the EFLAGS register (CF, OF, PF, SF, and ZF) and perform a move operation if the flags are in a specified state (or condition). A condition code (cc) is associated with each instruction to indicate the condition being tested for. If the condition is not satisfied, a move is not performed and execution continues with the instruction following the CMOVcc instruction. | ||
+ | |||
+ | These instructions can move a 16- or 32-bit value from memory to a general-purpose register or from one general-purpose register to another. Conditional moves of 8-bit register operands are not supported. | ||
+ | |||
+ | The terms "less" and "greater" are used for comparisons of signed integers and the terms "above" and "below" are used for unsigned integers. | ||
+ | </div> | ||
Line 31: | Line 44: | ||
cmovl edi,[UserDefinedSymbol] | cmovl edi,[UserDefinedSymbol] | ||
+ | |||
+ | //if eax<5 then ebx=eax else ebx=0 | ||
+ | xor ebx, ebx | ||
+ | cmp eax, 5 | ||
+ | cmovl ebx, eax | ||
Latest revision as of 20:08, 5 January 2019
command cmovl destination, source
cmovl is CMOVcc instruction, The cmovl conditional move if less check the state of SF AND OF.
If SF<>OF then condition is satisfied, otherwise it will be skipped.
CMOVcc instructions are mainly used after CMP
The CMOVcc instructions check the state of one or more of the status flags in the EFLAGS register (CF, OF, PF, SF, and ZF) and perform a move operation if the flags are in a specified state (or condition). A condition code (cc) is associated with each instruction to indicate the condition being tested for. If the condition is not satisfied, a move is not performed and execution continues with the instruction following the CMOVcc instruction.
These instructions can move a 16- or 32-bit value from memory to a general-purpose register or from one general-purpose register to another. Conditional moves of 8-bit register operands are not supported.
The terms "less" and "greater" are used for comparisons of signed integers and the terms "above" and "below" are used for unsigned integers.
Command Parameters[edit]
Parameter | Description |
---|---|
destination | r16 / r32 |
source | m16-r16 / m32-r32 |
Examples[edit]
cmovl dx,ax
cmovl cx,[bx]
cmovl edx,[edx+110]
cmovl eax,edx
cmovl esi,[00123abc]
cmovl edi,[UserDefinedSymbol]
//if eax<5 then ebx=eax else ebx=0 xor ebx, ebx cmp eax, 5 cmovl ebx, eax