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

4/6.1.1 - Les instructions du 8080 en détailCoding Classeurs Weka
4/6 - Travail en Assembleur 8080 sous CP/M 2.2 ou CP/M Plus

4/6.1.1 - Les instructions du 8080 en détail

Dans un souci d'uniformisation, chacune des instructions du 8080 est présentée selon le même modèle, à savoir :

  • Code Op
  • Explication détaillée de l'instruction
  • Pseudo-code
  • Indicateurs modifiés par l'instruction
  • Instruction équivalente en Z80
  • L'instruction équivalente Z80 est donnée pour faciliter l'apprentissage du 8080 aux programmeurs Z80.

ACI nn
Addition de l'accumulateur, de la retenue et de la constante nn
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADC A,nn

APC M
Addition de la mémoire d'adresse HL, de l'accumulateur et de la retenue
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADC A,(HL)

ADC r
Addition de l'accumulateur, du registre spécifié et de la retenue
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADC A,r

ADD M
Addition de la mémoire d'adresse HL et de l'accumulateur
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD A,(HL)

ADD r
Addition de l'accumulateur et du registre r
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD A,r

ADI nn
Addition de l'accumulateur et de la constante nn
A <– A + nn
Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD A,nn

ANA
ET logique entre l'accumulateur et la mémoire d'adresse HL
A Indicateurs modifiés : P, S, Z, C, N, H
Equivalent Z80 : AND (HL)

ANA r
ET logique entre l'accumulateur et le registre r
A Indicateurs modifiés : P, S, Z, C, N, H
Equivalent Z80 : AND r

ANI nn
ET logique entre l'accumulateur et la constante nn
A Indicateurs modifiés : P, S, Z, C, N, H
Equivalent Z80 : AND nn

CALL nnnn
Appel inconditionnel du sous-programme d'adresse nnnn
PC <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : CALL nnnn

CC nnnn
Appel du sous-programme d'adresse nnnn si
C = 1 If C=1 then PC - nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : CALL C,nnnn

CM nnnn
Appel du sous-programme d'adresse nnnn si S= 1
If S=1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL M,nnnn

CNC nnnn
Appel du sous-programme d'adresse nnnn si C = 0
If C = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL NC,nnnn

CNZ nnnn
Appel du sous-programme d'adresse nnnn si Z = 0
If Z = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL NZ,nnnn

CP nnnn
Appel du sous-programme d'adresse nnnn si S = 0
If S = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL P,nnnn

CPE nnnn
Appel du sous-programme d'adresse nnnn si P=1
If P=1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL PE,nnnn

CPO nnnn
Appel du sous-programme d'adresse nnnn si P = 0
If P = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL PO,nnnn

CZ nnnn
Appel du sous-programme d'adresse nnnn si Z= 1
If Z=1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : CALL Z,nnnn

CMA
Complément à un de l'accumulateur
A Indicateurs modifiés : H, N
Equivalent Z80 : CPL

CMC
Complémentation de l'indicateur de retenue
If C=1 then C = 0 else C=1
Indicateurs modifiés : C, N
Equivalent Z80 : CCF

CMP M
Compare l'accumulateur et la mémoire d'adresse HL
A - (HL)
Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : CP (HL)

CMP r
Compare l'accumulateur et le registre r
A - r
Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : CP r

CPI nn
Compare l'accumulateur et la constante nn
A - nn
Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : CP nn

DAA
Ajustement décimal de l'accumulateur
Indicateurs modifiés : C, H, 0, S, Z
Equivalent Z80 : DAA

DAD B
Additionne les registres HL et BC
HL Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD HL,BC

DAD D
Additionne les registres HL et DE
HL Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD HL,DE

DAD H
Additionne les registres HL et HL
HL Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD HL,HL

DAD SP
Additionne les registes HL et SP
HL Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : ADD HL,SP

DCR M
Décrémente la mémoire d'adresse HL (HL) - (HL) - 1
Indicateurs modifiés : H, 0, S, Z, N
Equivalent Z80 : DEC (HL)

DCR r
Décrémente le registre r
(r) Indicateurs modifiés : H, 0, S, Z, N
Equivalent Z80 : DEC r

DCX B
Décrémente le registre BC
BC Indicateurs modifiés : Aucun
Equivalent Z80 : DEC BC

DCX D
Décrémente le regitre DE
DE Indicateurs modifiés : Aucun
Equivalent Z80 : DEC DE

PCX H
Décrémente le registre HL
HL Indicateurs modifiés : Aucun
Equivalent Z80 : DEC HL

PCX SP
Décrémente le registre SP
SP Indicateurs modifiés : Aucun
Equivalent Z80 : DEC SP

DI
Dévalide les interruptions
Indicateurs modifiés : Aucun
Equivalent Z80 : DI
Autorise les interruptions
Indicateurs modifiés : Aucun
Equivalent Z80 : EI

HLT
Suspend l'activité du CPU jusqu'à la prochaine interruption ou jusqu'au

RESET
Indicateurs modifiés : Aucun
Equivalent Z80 : HALT

IN nn
Lit le port nn et place la valeur lue dans l'accumulateur
A <– Port(nn)
Indicateurs modifiés : Aucun
Equivalent Z80 : IN A,(nn)

INR M
Incrémente la mémoire d'adresse HL
HL Indicateurs modifiés : H, 0, S, Z, N
Equivalent Z80 : INC (HL)

IMR r
Incrémente le registre r
(r) Indicateurs modifiés : H, 0, S, Z, N
Equivalent Z80 : INC r

INX B
Incrémente le registre BC
BC Indicateurs modifiés : Aucun
Equivalent Z80 : INC BC

INX D
Incrémente le registre DE
DE Indicateurs modifiés : Aucun
Equivalent Z80 : INC DE

INX H
Incrémente le registre HL
HL Indicateurs modifiés : Aucun
Equivalent Z80 : INC HL

INX SP
Incrémente le registre SP
SP Indicateurs modifiés : Aucun
Equivalent Z80 : INC SP

JMP nnnn
Saut inconditionnel à l'adresse nnnn
PC <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP nnnn

JC nnnn
Saut à l'adresse nnnn si C= 1
If C=1 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP C,nnnn

JM nnnn
Saut à l'adresse nnnn si S= 1
If S=1 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP M,nnnn

JIMC nnnn
Saut à l'adresse nnnn si C = 0
If S = 0 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP NC,nnnn

JNZ nnnn
Saut à l'adresse nnnn si Z = 0
If Z = 0 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP NZ,nnnn

JP nnnn
Saut à l'adresse nnnn si S = 0
If S = 0 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP P,nnnn

JPE nnnn
Saut à l'adresse nnnn si P= 1
If P= 1 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP PE,nnnn

JPO nnnn
Saut à l'adresse nnnn si P = 0
If P = 0 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP PO,nnnn

JZ nnnn
Saut à l'adresse nnnn si Z= 1
If Z = 0 then PC = nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : JP Z,nnnn

LDA nnnn
Charge l'accumulateur avec le contenu de l'adresse nnnn
A <– (nnnn)
Indicateurs modifiés : Aucun
Equivalent Z80 : LD A,(nnnn)

LDAX B
Charge l'accumulateur avec le contenu de l'adresse qui se trouve dans le registre BC
A Indicateurs modifiés : Aucun
Equivalent Z80 : LD A,(BC)

LDAX D
Charge l'accumulateur avec le contenu de l'adresse qui se trouve dans le registre DE
A Indicateurs modifiés : Aucun
Equivalent Z80 : LD A,(DE!

LHLD nnnn
Charge le registre L avec le contenu de l'adresse nnnn et le registre H avec le contenu de l'adresse nnnn+ 1
L <– (nnnn) et H <– (nnnn + 1)
Indicateurs modifiés : Aucun
Equivalent Z80 : LD HL,(nnnn)

LXI B,nnnn
Charge le registre BC avec la constante nnnn
BC <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : LD BC,nnnn

LXI D,nnnn
Charge le registre DE avec la constante nnnn
DE <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : LD DE,nnnn

LXI H,nnnn
Charge le registre HL avec la constante nnnn
HL <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : LD HL,nnnn

LXI SP,nnnn
Charge le registre SP avec la constante nnnn
SP <– nnnn
Indicateurs modifiés : Aucun
Equivalent Z80 : LD SP,nnnn

MOV M,r
Stocke le contenu du registre r dans la mémoire d'adresse HL
(HL) Indicateurs modifiés : Aucun
Equivalent Z80 : LD (HL),r

MOV r,M
Stocke dans le registre r le contenu de la mémoire d'adresse HL
(r) Indicateurs modifiés : Aucun
Equivalent Z80 : LD r,(HL)

MOV r,r'
Stocke le contenu du registre r' dans le registre r
(r) Indicateurs modifiés : Aucun
Equivalent Z80 : LD r,r'

MVI M,nn
Charge la constante nn dans la mémoire d'adresse HL
(HL) Indicateurs modifiés : Aucun
Equivalent Z80 : LD (HL),nn

MVI r,nn
Charge la constante nn dans le registre r
(r) <– nn
Indicateurs modifiés : Aucun
Equivalent Z80 : LD r,nn

NOP
Aucune opération
Indicateurs modifiés : Aucun
Equivalent Z80 : NOP

ORA M
OU logique entre l'accumulateur et la mémoire d'adresse HL
A Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : OR (HL)

ORA r
OU logique entre l'accumulateur et le registre r
A Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : OR r

ORI nn
OU logique entre l'accumulateur et la constante nn
A Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : OR nn

PUT nn
Le contenu de l'accumulateur est placé sur le port d'adresse nn
Port(nn) Indicateurs modifiés : Aucun
Equivalent Z80 : OUT (nn),A

PCHL
Charge le compteur de programme (PC) avec la valeur contenue dans le registre HL
PC Indicateurs modifiés : Aucun
Equivalent Z80 : JP (HL)

POP B
Charge le registre BC avec les deux octets supérieurs de la pile
BC Indicateurs modifiés : Aucun
Equivalent Z80 : POP BC

POP D
Charge le registre DE avec les deux octets supérieurs de la pile
DE Indicateurs modifiés : Aucun
Equivalent Z80 : POP DE

POP H
Charge le registre HL avec les deux octets supérieurs de la pile
HL Indicateurs modifiés : Aucun
Equivalent Z80 : POP HL

POP PSW
Charge les indicateurs avec l'octet au sommet de la pile et l'accumulateur avec l'octet suivant
F Indicateurs modifiés : Tous
Equivalent Z80 : POP AF

PUSH B
Empile le contenu du registre BC
(SP) Indicateurs modifiés : Aucun
Equivalent Z80 : PUSH BC

PUSH D
Empile le contenu du registre DE
(SP) Indicateurs modifiés : Aucun
Equivalent Z80 : PUSH DE

PUSH H
Empile le contenu du registre HL
(SP) Indicateurs modifiés : Aucun
Equivalent Z80 : PUSH HL

PUSH PSW
Empile le contenu des indicateurs et de l'accumulateur
(SP) Indicateurs modifiés : Aucun
Equivalent Z80 : PUSH AF

RAL
Rotation vers la gauche de l'accumulateur

Indicateurs modifiés : C, H, N
Equivalent Z80 : RLA

RAR
Rotation vers la droite de l'accumulateur

Indicateurs modifiés : C, H, N
Equivalent Z80 : RRA

RET
Retour de sous-programme PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET

RC
Retour de sous-programme si C= 1
If C= 1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET C

RM
Retour de sous-programme si S= 1
If S= 1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET M

RNC
Retour de sous-programme si C = 0
If C = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET NC

RNZ
Retour de sous-programme si Z = 0
If Z = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET NZ

RP
Retour de sous-programme si S = 0
If S = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET P

RPE
Retour de sous-programme si P= 1
If P=1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET PE

RPO
Retour de sous-programme si P = 0
If P = 0 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET PO

RZ
Retour de sous-programme si Z= 1
If Z= 1 then PC Indicateurs modifiés : Aucun
Equivalent Z80 : RET Z

RLC
Rotation vers la gauche de l'accumulateur

Indicateurs modifiés : C, H, N
Equivalent Z80 : RLCA

RRC

Rotation vers la droite de l'accumulateur
Indicateurs modifiés : C, H, N
Equivalent Z80 : RRCA

RST 0 à RST 7
Débranchement aux sous-programmes d'adresse (respectivement) #00, #08, #10, #18, #20, #28, #30, #38
Indicateurs modifiés : Aucun
Equivalent Z80 : RST 00H à RST 38H

SBB MT
Soustrait de l'accumulateur l'octet d'adresse HL et la retenue
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SBC A,(HL)

SBB r
Soustrait de l'accumulateur le registre r et la retenue
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SBC A,r

SBI nn
Soustrait de l'accumulateur la constante nn et la retenue
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SBC A,nn

SHLD nnnn
Stocke à l'adresse nnnn le contenu du registre L et à l'adresse nnnn + 1 le contenu du registre H (nnnn) – L et (nnnn + 1) –H
Indicateurs modifiés : Aucun
Equivalent Z80 : LD (nnnn),HL

SPHL
Stocke le contenu du registre HL dans SP
SP Indicateurs modifiés : Aucun
Equivalent Z80 : LD SP,HL

STA nnnn
Stocke l'accumulateur dans la mémoire d'adresse nnnn
(nnnn) <– A
Indicateurs modifiés : Aucun
Equivalent Z80 : LD (nnnn),A

STAX B
Stocke l'accumulateur dans la mémoire d'adresse BC
(BC) Indicateurs modifiés : Aucun
Equivalent Z80 : LD (BC),A

STAX D
Stocke l'accumulateur dans la mémoire d'adresse DE
(DE) Indicateurs modifiés : Aucun
Equivalent Z80 : LD (DE),A

STC
Met à un l'indicateur de retenue
C Indicateurs modifiés : C, H, N
Equivalent Z80 : SCF

SUB M
Soustrait de l'accumulateur l'octet d'adresse HL
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SUB (HL)

SUB r
Soustrait de l'accumulateur le contenu du registre r
A Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SUB r

SUI nn
Soustrait de l'accumulateur la constante nn
A <– A - nn
Indicateurs modifiés : C, H, 0, S, Z, N
Equivalent Z80 : SUB nn

XCHG
Echange le contenu des registres DE et HL
Temp Indicateurs modifiés : Aucun
Equivalent Z80 : EX DE,HL

XRA M
OU exclusif entre l'accumulateur et la mémoire d'adresse HL
A - A XOR (HL)
Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : XOR (HL)

XRA r
OU exclusif entre l'accumulateur et le registre r
A Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : XOR r

XRI nn
OU exclusif entre l'accumulateur et la constante nn
A Indicateurs modifiés : P, S, Z, C, H, N
Equivalent Z80 : XOR nn

XTHL
Echange d'une part le contenu de SP et le registre L, et d'autre part le contenu de SP+ 1 et le registre H;
(Temp1) (SP) L Indicateurs modifiés : Aucun
Equivalent Z80 : EX (SP),HL

★ NOTE: 13e Complément

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.7-desktop/c
Page créée en 803 millisecondes et consultée 1693 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.