Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
back2root:ibm-pc-ms-dos:instr:infos:conditional-jump [2023/02/24 14:18] – supprimée - modification externe (Unknown date) 127.0.0.1 | back2root:ibm-pc-ms-dos:instr:infos:conditional-jump [2024/06/04 16:31] (Version actuelle) – [Tableau] frater |
---|
| ====== Conditional Jumps ====== |
| |
| ===== Flags Test ===== |
| {{tablelayout?rowsHeaderSource=Auto&colwidth="80px,90px,180px,120px,120px,120px,120px"&float=center}} |
| ^ Instr. ^ Saut Si ^ Jump If... ^ Unsigned |^ Signed || |
| | ::: | ::: | ::: ^ Equivalence ^ Evaluation ^ Equivalence ^ Evaluation ^ |
| | **<color #00a2e8>JS</color>** | SF=1 | sign | | | | | |
| | **<color #00a2e8>JNS</color>** | SF=0 | not sign | | | | | |
| | **<color #00a2e8>JO</color>** | OF=1 | Overflow | | | | | |
| | **<color #00a2e8>JNO</color>** | OF=0 | Not Overflow | | | | | |
| | **<color #00a2e8>JZ</color>** | ZF=1 | Zero | JE | A=B | JE | A=B | |
| | <color #00a2e8>JE</color> | ZF=1 | Equal | JZ | ::: | JZ | ::: | |
| | **<color #00a2e8>JNZ</color>** | ZF=0 | Not Zero | JNE | A<>B | JNE | A<>B | |
| | <color #00a2e8>JNE</color> | ZF=0 | Not Equal | JNZ | ::: | JNZ | ::: | |
| | **<color #22b14c>JC</color>** | CF=1 | Carry | JNAE, JB | A<B | | | |
| | <color #22b14c>JNAE</color> | CF=1 | Not Above or Equal | JC, JB | ::: | | | |
| | <color #22b14c>JB</color> | CF=1 | Below | JC, JNAE | ::: | | | |
| | **<color #22b14c>JNC</color>** | CF=0 | Not Carry | JAE, JNB | A>=B | | | |
| | <color #22b14c>JNB</color> | CF=0 | Not Below | JAE, JNC | ::: | | | |
| | <color #22b14c>JAE</color> | CF=0 | Above or Equal | JNC, JNB | ::: | | | |
| | **<color #22b14c>JA</color>** | (CF=0 & ZF=0) | Above | JNBE | A>B | | | |
| | <color #22b14c>JNBE</color> | (CF=0 & ZF=0) | Not Below or Equal | JA | ::: | | | |
| | <color #22b14c>JBE</color> | (CF=1 & ZF=1)\\ ou\\ (CF<>ZF) | Below or Equal | JNA | A<=B | | | |
| | **<color #22b14c>JNA</color>** | ::: | Not Above | JBE | ::: | | | |
| | <color #ed1c24>JG</color> | (ZF=0 & OF=SF) | Greater | | | JNLE | A>B | |
| | **<color #ed1c24>JNLE</color>** | ::: | Not Less of Equal | | | JG | ::: | |
| | <color #ed1c24>JGE</color> | (SF-OF) | Greater or Equal | | | JNL | A>=B | |
| | **<color #ed1c24>JNL</color>** | ::: | Not Less | | | JGE | ::: | |
| | <color #ed1c24>JNG</color> | (ZF=0 & SF=OF)\\ ou\\ (ZF=1 & SF=OF)\\ ou\\ (ZF=0 & SF<>OF) | Not Greater | | | JL | A<=B | |
| | **<color #ed1c24>JLE</color>** | ::: | Less or Equal | | | JNG | ::: | |
| | <color #ed1c24>JNGE</color> | (SF<>OF) | Not Greater or Equal | | | JL | A<B | |
| | **<color #ed1c24>JL</color>** | ::: | Less | | | JNGE | ::: | |
| |
| **Légende** |
| |
| * **Instruction** : Instruction "native" du CPU, les autres sont des "alias" de l'assembleur. |
| * <color #00a2e8>Instruction</color> : Instruction Communes aux test "signés" et "Non Signés" |
| * <color #22b14c>Instruction</color> : Instruction Propre aux test "Non Signés" |
| * <color #ed1c24>Instruction</color> : Instruction Propre aux test "Signés" |
| |
| {{tablelayout?rowsHeaderSource=Auto&colwidth=""}} |
| ^ ^ Jump ? ^ Clocks ||^ ^ Size ^ |
| ^ Operands ^ ^ 808x ^ 286 ^ 386 ^ 486 ^ Bytes ^ |
| | Jx | Y | 16 | 7+m | 7+m | 3 | 2 | |
| | ::: | N | 4 | 3 | 3 | 1 | ::: | |
| | Jx near-label | Y | - | - | 7+m | 3 | 4 | |
| | ::: | N | - | - | 3 | 1 | ::: | |
| |
| |
| <WRAP round box> |
| * C'est une bonne pratique de programmation d'organiser le code pour executer celui-ci en limitant les //jump//; un //jump// prends toujours plus de temps qu'un test qui échoue |
| </WRAP> |
| |
| * see [[back2root:ibm-pc-ms-dos:instr:jcxz|JCXZ]] and [[back2root:ibm-pc-ms-dos:instr:jmp|JMP]] for their respective timings |