4/6 - Travail en Assembleur 8080 sous CP/M 2.2 ou CP/M Plus4/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 CPCrulez[Content Management System] v8.7-desktop/c Page créée en 803 millisecondes et consultée 1693 foisL'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. |
|