CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/2.3.7 - Les mots-clés de l'assembleur Z80 et leur utilisation : Manipulation de bits et de chaînesCoding Classeurs Weka
4/2 - Assembleur Z80 : Définitions et rappels de base

4/2.3 - Les mots-clés de l'assembleur Z80 et leur utilisation

VII. Manipulation de bits et de chaînes

A. INSTRUCTIONS SUR BITS

Les opérations possibles sont les suivantes :

  • test d'un bit ;
  • mise à 0 d'un bit :
  • mise à 1 d'un bit.
1 ) Test de la valeur d'un bit :

L'adressage peut être registre 8 bits, indirect ou indirect indexé.

  • Adressage registre 8 bits :
BIT b,X

Test BIT b of register X : Teste le bit b du registre X où b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort) et X peut être un des registres suivants : A, B, C, D, E, H, L.

Indicateurs : N = 0, H=1, C inchangé, Z modifié.

  • Adressage indirect :
BIT b,(HL)

Test BIT b of location (HU : Teste le bit b de la mémoire pointée par HL.

b peut prendre les valeurs de 0 à 7 (0 est le poids faible et 7 le poids fort).

Indicateurs :

  • Adressage indirect indexé :
BIT b,(IX + d)
BIT b,(IY + d)

Test BIT b of location (IX+ d) or (lY + dï : Teste le bit b de la mémoire pointée par IX + d ou lY + d. b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort), d est un déplacement compris entre -127 et 127.

Indicateurs : N = 0, H = 1, C inchangé, Z modifié.

2) Mise à zéro d'un bit :

L'adressage peut être registre 8 bits, indirect ou indirect indexé.

  • Adressage registre 8 bits
RES b,X

RESet bit b of register X : Met à 0 le bit b du registre X où b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort) et X peut être un des registres suivants : A, B, C, D, E, H, L.
Indicateurs : inchangés.

  • Adressage indirect :
RES b,(HL)

RESet bit b of location (HL) : Met à 0 le bit b de la mémoire pointée par
HL b peut prendre les valeurs 0 à 7 (0 est le poids faible et 71e poids fort).

Indicateurs : inchangés.

  • Adressage indirect indexé :
RES b,(IX+d)
RES b,(IY
+d)

RESet bit b of location (IX + d) or (IY + d) : Met à 0 le bit b de la mémoire pointée par IX + d ou lY + d. b peut prendre tes valeurs 0 à 7 (0 est le poids faible et 7 le poids fort), d est un déplacement compris entre - 127 et 127.

Indicateurs : inchangés.

3) Mise à 1 d'un bit :

L'adressage peut être registre 8 bits, indirect ou indirect indexé.

  • Adressage registre 8 bits :
SET b,X

SET bit b of register X : Met à 1 le bit b du registre X ou b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort) et X peut être un des registres suivants : A, B, C, D, E, H, L.

Indicateurs ; inchangés.

  • Adressage indirect :
SET b,(HL)

SET bit b of location (HL) : Met à 1 le bit b de la mémoire pointée par HL. b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort).

Indicateurs : inchangés.

• Adressage indirect indexé :

SET b,(IX + d)
SET b,(IY + d)

SET bit b of location (IX+d) or (IY+d) : Met à 1 le bit b de la mémoire pointée par IX + d ou IY+d. b peut prendre les valeurs 0 à 7 (0 est le poids faible et 7 le poids fort), d est un déplacement compris entre - 127 et 127.

Indicateurs : inchangés.

B. INSTRUCTIONS SUR CHAINES

LDIR

LoaD, Incrément And Repeat.

Copie une zone mémoire de longueur BC et commençant à l'adresse HL à partir de l'adresse DE.

HL pointe sur le début de la zone à copier.

Indicateurs : N, P et H = 0, les autres ne sont pas modifiés.

Copions la zone mémoire commençant en 7000H, de longueur 30H, à partir de 8000H.

1 ORG 9000H
2 LOAD 9000H
3 9000 013000 LD BC,30H ; longueur
4 9003 210070 LD HL,7000H ;@source
5 9006 110080 LD DE,8000H ;@destination
6 9009 EDB0 LDIR ;copie
7 END

LDDR

LoaD, Décrément and Repeat.

Copie une zone mémoire de longueur BC et commençant à l'adresse HL à partir de l'adresse DE.

HL pointe sur la fin de la zone à copier.

Indicateurs : N, P et H = 0, les autres ne sont pas modifiés.

Copions la zone mémoire finissant en 7040, de longueur 41H en 8000H.

1 ORG 9000H
2 LOAD 9000H
3 9000 014100 LD BC,41H ;longueur
4 9003 214070 LD HL,7040H ;@fin source
5 9006 110080 LD DE,8000H ; ©destination
6 9009 EDB8 LDDR ;copie
7 END

CPIR

ComPare Incrément and Repeat.

Compare le contenu de HL à l'accumulateur.

Incrémente HL, décrémente BC et répète le test jusqu'à ce que BC = 0 ou que A=(HL). Si A = (HL), l'indicateur Z est mis à 1. Sinon, BC arrive à 0 et l'indicateur V passe à 0.

Indicateurs : N = 1, C inchangé. S, H, V et 2 modifiés.

Recherchons l'octet 24H dans une zone mémoire commençant en 8000H et de longueur 40H.

1 ORG ; 9000H
2 LOAD 9000H
3 9000 3E24 ; LD A,24H ;Octet recherche
4 9002 210080 LD HL,8000H ;@debut recherche
5 9005 014000 LD BC,40H ;longueur recherche
6 9008 EDB1 ; CPIR ; Recherche
7 END

CPDR

ComPare Décrément and Repeat.

Compare le contenu de HL à l'accumulateur

Décrémente HL, décrémente BC et répète le test jusqu'à ce que BC = 0 ou que A = (HL). Si A = (HL), l'indicateur Z est mis à 1. Sinon, BC arrive à 0 et l'indicateur V passe à 0.

Indicateur : N = 1, C inchangé, S, H, V et Z modifiés.

Recherchons l'octet 24H dans une zone mémoire finissant en 8040H et de longueur 41 H.

1 ORG 9000H
2 LOAD 9000H
3 9000 3E24 LD A,24H ;Octet recherche
4 9002 214080 LD HL,8040H ; ©fin recherche
5 9005 014100 LD BC,41H ;Longueur recherche
6 9008 EDB9 CPDR ;Recherche
7 END

Page précédente : 4/2.3.6 - Les mots-clés de l'assembleur Z80 et leur utilisation : Opérations logiques
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 132 millisecondes et consultée 1991 fois

L'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.