CODINGApprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★ Jeu d'instructions du Z80 ★

Opérations mathématiques (INC, DEC, ADD, SUB, ADC, SBC)
Instructions mathématiques de base

INC
Cette instruction incrémente le registre spécifié en opérande de 1.

INC reg8 ; n'importe quel registre 8 bits sauf I, R et F
INC reg16; n'importe quel registre 16 btis sauf AF
INC (HL)
INC (IX+d)
INC (IY+d)

Effet de l'incrémentation 8 bits sur les flags :

  • Le flag C n'est pas modifié!
  • H=1, N=0
  • P/V parité des bits du résultat
  • Z est mis à 1 si le résultat est zéro
  • S est mis à 1 si le résultat est négatif
Effet de l'incrémentation 16 bits sur les flags :
  • Aucun flag n'est modifié!
DEC
Cette instruction décrémente le registre spécifié en opérande de 1.

DEC reg8 ; n'importe quel registre 8 bits sauf I, R et F
DEC reg16; n'importe quel registre 16 btis sauf AF
DEC (HL)
DEC (IX+d)
DEC (IY+d)

Effet de la décrémentation 8 bits sur les flags :

  • Le flag C n'est pas modifié!
  • H=1, N=1
  • P/V parité des bits du résultat
  • Z est mis à 1 si le résultat est zéro
  • S est mis à 1 si le résultat est négatif
Effet de la décrémentation 16 bits sur les flags :
  • Aucun flag n'est modifié!
ADD
Cette instruction réalise une addition dont le résultat est stocké dans la première des deux opérandes, ou à défaut A en 8 bits. Les combinaisons possibles sont les suivantes :

ADD A,im8 : ADD im8
ADD A,reg8 : ADD reg8
ADD A,(HL) : ADD (HL)
ADD A,(IX+d) : ADD (IX+d)
ADD A,(IY+d) : ADD (IY+d)
ADD HL,BC
ADD HL,DE
ADD HL,HL
ADD HL,SP
ADD IX,BC
ADD IX,DE
ADD IX,IX
ADD IX,SP
ADD IY,BC
ADD IY,DE
ADD IY,IY
ADD IY,SP

Effet sur les flags en addition 8 bits :

  • flag N est mis à zéro
  • P/V est interprété comme dépassement de donnée
  • flag Z mis à 1 si le résultat est zéro
  • flag C mis à 1 si le résultat déborde
  • flag S mis à 1 si le résultat est négatif
Effet sur les flags en addition 16 bits :
  • flag H est indéfini
  • P/V, S et Z ne sont pas modifiés
  • flag C mis à 1 si le résultat déborde
Attention: Comme l'addition se fait en interprétant les nombres négatifs comme des nombres positifs, la notion de débordement est toute relative. Ainsi, soustraire un nombre plus petit à un autre (en additionnant -100 à 101 par exemple) va positionner la retenue tandis qu'additionner -100 à 99 ne la positionnera pas. Quand on transpose les valeurs négatives en nombres positifs, le positionnement des flags fait sens.

SUB
Cette instruction réalise une soustraction dont le résultat est stocké dans la première opérande. Le registre destination est toujours A. Les combinaisons possibles sont les suivantes :

SUB A,im8 : SUB im8
SUB A,reg8 : SUB reg8
SUB A,(HL) : SUB (HL)
SUB A,(IX+d) : SUB (IX+d)
SUB A,(IY+d) : SUB (IY+d)

Effet sur les flags en addition 8 bits :

  • flag N est mis à 1
  • P/V est interprété comme dépassement de donnée
  • flag C mis à 1 si le résultat déborde
  • flag Z mis à 1 si le résultat est zéro
  • flag S mis à 1 si le résultat est négatif
Note : Il n'y a pas d'instruction SUB en 16 bits.
ADC
Cette instruction réalise une addition avec ajout de la retenue contenue dans le flag C. Le résultat est stocké dans la première opérande qui est soit A, soit HL. Les combinaisons possibles sont les suivantes :

ADC A,im8 : ADC im8
ADC A,reg8 : ADC reg8
ADC A,(HL) : ADC (HL)
ADC A,(IX+d) : ADC (IX+d)
ADC A,(IY+d) : ADC (IY+d)
ADC HL,BC
ADC HL,DE
ADC HL,HL
ADC HL,SP

Effet sur les flags :

  • flag N est mis à zéro
  • P/V est interprété comme dépassement de donnée
  • flag Z mis à 1 si le résultat est zéro
  • flag C mis à 1 si le résultat déborde
  • flag S mis à 1 si le résultat est négatif
SBC
Cette instruction réalise une soustraction dont le résultat est stocké dans la première opérande. Le registre destination est toujours A. Les combinaisons possibles sont les suivantes :

SBC A,im8 : SBC im8
SBC A,reg8 : SBC reg8
SBC A,(HL) : SBC (HL)
SBC A,(IX+d) : SBC (IX+d)
SBC A,(IY+d) : SBC (IY+d)
SBC HL,BC
SBC HL,DE
SBC HL,HL
SBC HL,SP

Effet sur les flags :

  • flag N est mis à 1
  • P/V est interprété comme dépassement de donnée
  • flag C mis à 1 si le résultat déborde
  • flag Z mis à 1 si le résultat est zéro
  • flag S mis à 1 si le résultat est négatif

Roudoudou

★ ANNÉE: 2025
★ AUTEUR: Roudoudou

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
Page créée en 489 millisecondes et consultée 10 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.