Les deux révisions précédentesRévision précédente | Dernière révisionLes deux révisions suivantes |
back2root:ibm-pc-ms-dos:instr:conditional-jump [2023/02/24 14:17] – ↷ Liens modifiés en raison d'un déplacement. frater | back2root:ibm-pc-ms-dos:instr:infos:conditional-jump [2023/02/24 14:18] – supprimée - modification externe (Unknown date) 127.0.0.1 |
---|
====== Conditional Jumps ====== | |
| |
===== Flags Test ===== | |
{{tablelayout?rowsHeaderSource=Auto&colwidth="80px,90px,180px,120px,120px,120px,120px"}} | |
^ 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 | |