Revenir au plan du site
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