4/2 - Assembleur Z80 : Définitions et rappels de base4/2.3 - Les mots-clés de l'assembleur Z80 et leur utilisation VI. Opérations logiques A. OPÉRATIONS LOGIQUES ÉLÉMENTAIRES AND ET logique sur l'accumulateur. L'adressage peut être immédiat, registre 8 bits, indirect, ou indirect indexé. La table de vérité de AND au niveau bit est la suivante : Cette logique est appliquée entre chaque bit de même rang de l'accu- mulateur et de l'argument fourni. Remarque : Pour l'instruction AND, sauf indication contraire, les indicateurs sont modi- fiés de la façon suivante : C = 0, N = 0, H = 1, Z, P, et S affectés selon le résultat du AND. • Adressage immédiat V AND VAL8 ET logique entre l'acccumulateur et VAL8. Le résultat est dans A. • Adressage registre 8 bits : AND X Où X peut être A, B, C, D, E, H ou L. ET logique entre l'accumulateur et le registre spécifié. Le résultat est dans A. • Adressage indirect : AND (HL) ET logique entre l'accumulateur et l'octet pointé par HL. Le résultat est dans A. • Adressage indirect indexé : AND (IX+ d) AND (IY + d) ET logique entre l'accumulateur et l'octet pointé par IX + d ou lY + d. d est un déplacement dont la valeur est comprise entre - 127 et 127. Le résultat est dans A. OR OU logique sur l'accumulateur. L'adressage peut être immédiat, registre 8 bits, indirect, ou indirect indexé. La table de vérité de OR au niveau bit est la suivante : Cette logique est appliquée entre chaque bit de même rang de l'accu- mulateur et de l'argument fourni. Remarque : Pour l'instruction OR, sauf indication contraire, les indicateurs sont modi- fiés de la façon suivante : C - 0, N - 0, H = 0, 2, P et S affectés selon le résultat du OR. • Adressage immédiat : OR VAL8 OU logique entre l'accumulateur et VAL8. Le résultat est dans A. • Adressage registre 8 bits : OR X où X peut être. A, B, C, D, E, H ou L. OU logique entre l'accumulateur et le registre spécifié. Le résultat est dans A. • Adressage indirect : OR (HL) OU logique entre l'accumulateur et l'octet pointé par HL. Le résultat est dans A. • Adressage indirect indexé : OR (IX+ d) OR (lY + d) OU logique entre l'accumulateur et l'octet pointé par IX + d ou !Y+d. d est un déplacement dont la valeur est comprise entre - 127 et 127. Le résultat est dans A. XOR OU EXCLUSIF sur l'accumulateur. L'adressage peut être immédiat, registre 8 bits, indirect, ou indirect indexé. La table de vérité de XOR au niveau bit est la suivante : Remarques : a) Si a et b sont des^/ariables binaires, on a : a XOR b - a b + a b, c'est-à-dire que a XOR b = 1 sia = 0etb=1 ou si a = 1 et b = 0. Cette logique est appliquée entre chaque bit de même rang de l'accu- mulateur et de l'argument fourni. b) Pour l'instruction XOR, sauf indication contraire, les indicateurs sont modifiés de la façon suivante : C = 0, N = 0, H = 0, Z, P et S affectés selon le résultat du XOR. • Adressage immédiat : XOR VAL8 OU EXCLUSIF entre l'accumulateur et VAL8. Le résultat est dans A. • Adressage registre 8 bits : XOR X où X peut être A, B, C, D, E, H ou L. OU EXCLUSIF entre l'accumulateur et le registre spécifié. Le résultat est dans A. • Adressage indirect : XOR (HL) OU EXCLUSIF entre l'accumulateur et l'octet pointé par HL. Le résultat est dans A. • Adressage indirect indexé : XOR(IX+d) XOR (IY+d) OU EXCLUSIF entre l'accumulateur et l'octet pointé par IX + d ou IY + d. d est un déplacement dont la valeur est comprise entre - 127 et 127. Le résultat est dans A. CPL Complément Accumulator : Complément à 1 de A. L'adressage est implicite sur A NEG Negate Accumulator : Complément à 2 de A. L'adressage est implicite sur A. B. COMPARAISONS ET TESTS Comparaison de l'accumulateur à une valeur exprimée sur 8 bits. L'adressage peut être immédiat, registre 8 bits, indirect 8 bits ou indirect indexé 8 bits. Indicateurs : N= 1, C, 2, V, S et H modifiés. • Adressage immédiat : CP VAL8 Compare l'accumulateur et VAL8 sans modifier l'accumulateur. • Adressage registre 8 bits : CP X où X peut Ôtre A, B, C, D, E, H oa t. Compare l'accumulateur et le registre indiqué sans modifier l'accumu- lateur. • Adressage indirect : CP (HL) Compare l'accumulateur et l'octet pointé par HL sans modifier l'accumulateur. • Adressage indirect indexé : CP(IX + d) CP(IY + d) Compare l'accumulateur et l'octet pointé par IX + d ou IY+d sans modifier l'accumulateur. d est un déplacement dont la valeur doit être comprise entre -127 et 127. CPI ComPare and Incrément Compare le contenu de HL et l'accumulateur. Positionne le registre Z en conséquence (Z=1 si (HL) = A et Z = 0 si (HL)<>A). Incrémente HL et décrémente BC. Si BC = 0, l'indicateur P/V = 0. P/V= 1 pour les autres valeurs de BC. Supposons que BC = 10 H ;HL = 3020H ; (HL) = F1H ; et A = F1H Les instructions LD A,F1H CPI produiront l'effet suivant : Z = 1 car (HL) = A HL = 3021H, BC = 0FH CPD ComPare and Décrément Compare le contenu de HL et l'accumulateur. Positionne le registre Z en conséquence (Z=1 si (HL) = A et Z = 0 si IHLloA). Décrémente HL et décrémente BC. Si BC = 0, l'indicateur P/V = 0. P/V=1 pour les autres valeurs de BC. Supposons que BC = 10 H HL = 3020H (HL) = F1H et A = 10H les instructions LD A, 10 H CPD produiront l'effet suivant : Z = 0 car (HL) * A HL = 301F H et BC = 0 FH Application Amstrad CPC: Recherche d'un octet dans une zone mémoire, à partir de &7000, et sur une longueur de 40 octets. 1 ORG 9000H 2 LOAD 9000H 3 9000 013200 LD BC,50 4 9003 210050 LD HL,5000H ;@de départ 5 9006 3E12 LD A,12H ;octet recherche 6 BOU: EQU $ 7 9008 EDA1 CPI 8 900A 2803 JR Z,TROUVE ;z=-1~.oct trouve 9 900C EA0890 JP PE.BOU ;P/V=1-»BC<>0 10 TROUVE: EQU $ 11 ;a ce niveau, si Z= 1, HL = @ +1 12 ;de l'octet recherche 13 ;si Z = 0, l'octet n'est pas trouve 14 ENDC. ROTATIONS ET DÉCALAGESOn distingue les décalages : – circulaires à gauche et à droite ; – circulaires à gauche et à droite à travers le bit de retenue ; – arithmétiques à gauche et à droite;" – logiques à droite ; – circulaires en binaire codé décimal à gauche et à droite. 1) Décatages circulaires : L'adressage peut être registre 8 bits, indirect ou indirect indexé. • Adressage registre 8 bits : RLC X Rotate Left Circular : Rotation circulaire à gauche où X peut être A, B, C, D, E, H ou L. Les bits du registre concerné sont décalés vers la gauche selon le dessin ci-dessous : Les indicateurs H et N sont à 0, S, Z, C et P sont modifiés. RRC X Rotate Right Circular : Rotation circulaire à droite où X peut être A, B, C, D, E, H ou L. Les bits du registre concerné sont décalés vers la droite selon le dessin ci-dessous : Les indicateurs H et N sont à 0, S, Z, C et P sont modifiés. RLCA Rotate Left Circular Accumulator : Rotation circulaire à gauche de l'accumulateur. Les bits du registre A sont décalés vers la gauche comme pour RLC A. Les indicateurs H et N sont à 0 ; S, Z et P sont inchangés et C est modifié. RRCA Rotate Right Circular Accumulator : Rotation circulaire à droite de l'accumulateur. Les bits du registre A sont décalés vers la droite comme pour RRC A. Les indicateurs H et N sont à 0 ; S, Z et P sont inchangés et C est modifié. • Adressage indirect : RLC (HL) Rotate Left Circular : Rotation circulaire à gauche de la mémoire pointée par HL comme pour RLC A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés RRC (HL) Rotate Right Circular : Rotation circulaire à droite de la mémoire pointée par HL comme pour RRC A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. • Adressage indirect indexé : RLC (IX+ d) Rotate Left Circular : Rotation circulaire à gauche de la mémoire pointée par IX+ d comme pour RLC A. d est un déplacement compris entre -127 et 127. Les indicateurs H et N sont à 0 ; S, 2, C et P sont modifiés. RRC (IX+ d) Rotate Right Circular : Rotation circulaire à droite de la mémoire pointée par IX+ d comme pour RRC A. d est un déplacement compris entre -127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. 2) Décalages circulaires à travers le bit de retenue : L'adressage peut être registre 8 bits, indirect ou indirect indexé. • Adressage registre 8 bits : RL X Rotate Left : Rotation circulaire à gauche à travers le bit de retenue. où X peut être A, B, C, D, E, H ou L. Les bits du registre concerné sont décalés vers la gauche selon le dessin ci-dessous. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. RR X Rotate Right : Rotation circulaire à droite à travers le bit de retenue. où X peut être A, B, C, D, E, H ou L, Les bits du registre concerné sont décalés vers la droite selon le dessin ci-dessous. Les indicateurs H et N sont à 0 ; S, 2, C et P sont modifiés. RLA Rotate Left Accumulator : Rotation circulaire à gauche de l'accumula- teur à travers le bit de retenue. Les bits du registre A sont décalés vers la gauche comme pour RL A. Les indicateurs H et N sont à 0 ; S, Z et P sont inchangés et C est modifié. RRA Rotate Right Accumulator : Rotation circulaire à droite de l'accumula- teur à travers le bit de retenue. Les bits du registre A sont décalés vers la droite comme pour RR A. Le indicateurs H et N sont à 0 ; S, Z et P sont inchangés et C est modifié. • Adressage indirect : RL (HL) Rotate Left : Rotation circulaire à gauche de la mémoire pointée par HL comme pour RL A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. RR (HL) Rotate Right : Rotation circulaire à droite de la mémoire pointée par HL comme pour RR A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. RL (IX+d) Rotate Left : Rotation circulaire à gauche de la mémoire pointée par IX+d comme pour RL A. d est un déplacement compris entre - 127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. RR (IX + d) Rotate Right : Rotation circulaire à droite de la mémoire pointée par IX + d comme pour RR A. d est un déplacement compris entre - 127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. 3) Décalages arithmétiques : L'adressage peut être registre 8 bits, indirect ou indirect indexé. • Adressage registre 8 bits : SLA X Shift Left Arithmetic : Décalage arithmétique à gauche, où X peut être A, B, C, D, E, H ou L Les bits du registre concerné sont décalés vers la gauche selon le dessin ci-dessous. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. SRA X Shift Right Arithmetic : Décalage arithmétique à droite Où X peut être A, B, C, D, E, H ou L. Les bits du registre concerné sont décalés vers la droite selon le dessin ci-dessous. Les indicateurs H et N sont à 0 ; S, 2, C et P sont modifiés. • Adressage indirect : SLA (HL) Shift Left Arithmetic : Décalage arithmétique à gauche de la mémoire pointée par HL comme pour SLA A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. SRA (HL) Shift Right Arithmetic : Décalage arithmétique à droite de la mémoire pointée par HL comme pour SLA A. Les indicateurs H et N sont à 0 ; S, 2, C et P sont modifiés. • Adressage indirect indexé : SLA(IX + d) Shift Left Arithmetic : Décalage arithmétique à gauche de la mémoire pointée par IX+ d comme pour SLA A. d est un déplacement compris entre -127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. SRA (IX+ d) Shift Right Arithmetic : Décalage arithmétique à droite de la mémoire pointée par IX + d comme pour SLA A. d est un déplacement compris entre -127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. 4) Décalages logiques à droite : L'adressage peut être registre 8 bits, indirect ou indirect indexé. • Adressage registre 8 btts SRL X Shift Right Logical : Décalage logique à droite, où X peut être A, B, C, D, E, H ou L. Les bits du registre concerné sont décalés vers la droite selon le dessin ci-dessous. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. • Adressage indirect : SRL (HL) Shift Right Logical : Décalage logique à droite de la mémoire pointée par HL comme pour SRL A. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. • Adressage indirect indexé : SRL (IX+ d) Shift Right Logical : Décalage logique à droite de la mémoire pointée par IX + d comme pour SRL A. d est un déplacement compris entre -127 et 127. Les indicateurs H et N sont à 0 ; S, Z, C et P sont modifiés. 5) Décalages circulaires en binaire codé décimal : • Adressage indirect sur 8 bits : RLD Rotate Left Digit : Rotation SCD à gauctie entre l'accumulateur et l'octet pointé par HL selon le dessin page suivante. 1 ORG 9000H 2 LOAD 9000H 3 9000 210080 LD HL,8000H 4 9003 3612 LD (HL),12H ; premier argument 5 9005 3E56 LD A,56H ;; 2e argument 6 9007 ED6F RLD 7 ;a ce niveau A =51H 8 ; HL=26H 9 ENDRRDRotate Right Digit : Rotation BCD à droite entre l'accumulateur et l'octet pointé par HL selon le dessin ci-dessous : Exemple : 1 ORG 9000H 2 LOAD 9000H 3 9000 210080 LD HL,8000H 4 9003 3612 LD (HL),12H ; premier argument 5 9005 3E56 LD A,56H ;; 2e argument 6 9007 ED67 RRD 7 ;a ce niveau A =52H 8 ; HL=61H 9 ENDD. OPÉRATIONS SUR LE BIT DE RETENUE CSCF Set Carry Flag : Met à 1 le bit indicateur C. CCF Complément Carry Flag : Inverse l'état du bit indicateur C.
CPCrulez[Content Management System] v8.73-desktop/c Page créée en 588 millisecondes et consultée 1840 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|