CODINGCLASSEURS WEKA ★ Comment exploiterr 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înes (!)Coding 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é

BITb,(IX + d)
BITb,(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é.
AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

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

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

• Adressage registre 8 bits

RES b,X                                            ;   ;l

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 :

RESb.(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.
AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

• Adressage indirect indexé :

RESb,(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.
AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

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.
AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

• Adressage indirect indexé :

SETb,(IX + d)

SETb.(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.

AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

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                    ;   ;oj           ; LOAD 9000H

3  9000 013000             ; LD           ;BC.30H         ;jlongueur

4  9003 210070             ; LD           ;HL,7000H     ;@source

5  9006 110080             ; LD           ;DE.8000H     ;@destination

6  9009 EDBO                  ; LDIR                           ;  ;copie

7                                   ;   ;END
AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

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

cpirm? '?-?m .a

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          i

2                                ;   ;LOAD          90O0H

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


AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr AMSTRAD CPC | CODING : BOOK - Les classeurs Weka 4237 | http://cpcrulez.fr

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             ; ^AU-          0RG           ; 9OO0H             ; j

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

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 098 millisecondes et consultée 1029 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.