Outils pour utilisateurs

Outils du site


back2root:ibm-pc-ms-dos:instr:infos:conditional-jump

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRé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.1back2root:ibm-pc-ms-dos:instr:infos:conditional-jump [2023/02/24 14:18] (Version actuelle) – ↷ Page déplacée de back2root:ibm-pc-ms-dos:instr:conditional-jump à back2root:ibm-pc-ms-dos:instr:infos:conditional-jump frater
Ligne 1: Ligne 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<>       |  JNE          |  A<>       |
 +|  <color #00a2e8>JNE</color>        ZF=0                                                          | Not Equal              JNZ          | :::          |  JNZ          | :::          |
 +|  **<color #22b14c>JC</color>**    |  CF=1                                                          | Carry                  JNAE, JB      A<                                   |
 +|  <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>                                   |
 +|  <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>        |
 +|  **<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<        |
 +|  **<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