Section courante

A propos

Section administrative du site

Codes d'opération

Les codes d'opération en langage assembleur constituent la partie principale des programmes en langage assembleur et forment le champ d'opération de l'instruction. En général, ASM accepte tous les mnémoniques standard du micro-ordinateur Intel 8080, étant détaillés dans le manuel de programmation du langage d'assemblage Intel 8080. Les étiquettes sont facultatives sur chaque ligne d'entrée. Les opérateurs individuels sont brièvement répertoriés dans les sections suivantes par souci d'exhaustivité, bien que les manuels Intel doivent être référencés pour les détails exacts de l'opérateur. Dans les tableaux suivants, les valeurs de bit ont la signification suivante :

Symbole Description
e3 Représente une valeur de 3 bits dans l'intervalle de 0 à 7 pouvant être l'un des registres prédéfinis A, B, C, D, E, H, L, M, SP ou PSW.
e8 Représente une valeur de 8 bits dans l'intervalle de 0 à 255.
e16 Représente une valeur 16 bits dans l'intervalle de 0 à 65535.

Ces expressions peuvent être formées à partir d'une combinaison arbitraire d'opérandes et d'opérateurs. Dans certains cas, les opérandes sont limités à des valeurs particulières dans l'intervalle autorisée, comme l'instruction PUSH. Ces cas sont notés au fur et à mesure qu'ils sont rencontrés.

Dans les sections suivante, chaque code d'opération est répertorié dans sa forme la plus générale, accompagné d'un exemple spécifique, d'une brève explication et de restrictions spéciales.

Sauts, appels et retours

Les instructions de saut, d'appel et de retour autorisent plusieurs formes différentes testant les drapeaux de condition définis dans l'unité centrale du micro-ordinateur 8080. Les formulaires sont présentés dans le tableau suivant :

Instruction Valeur de bits Exemple Description
JMP e16 JMP L1 Saute inconditionnellement à l'étiquette
JNZ e16 JNZ L2 Saute si la condition n'est pas zéro pour l'étiquette
JZ e16 JZ 100H Saute si la condition est zéro pour l'étiquette
JNC e16 JNC L1+4 Saut s'il n'y a pas de retenue à l'étiquette
JC e16 JC L3 Saute s'il y a une retenue de défini pour l'étiquette
JPO e16 JPO $+8 Saute si la parité est impaire pour l'étiquette
JPE e16 JPE L4 Saute si la parité est paire pour l'étiquette
JP e16 JP GAMMA Saute si le résultat est positif pour l'étiquette
JM e16 JM A1 Saute si moins pour l'étiquette
CALL e16 CALL S1 Appel le sous-programme sans condition
CNZ e16 CNZ S2 Appel le sous-programme sur une condition non zéro
CZ e16 CZ 100H Appel le sous-programme à l'état zéro
CNC e16 CNC SI+4 Appel le sous-programme si aucune retenue n'est définie
CC e16 CC S3 Appel le sous-programme si la retenue est défini
CPO e16 CPO $+8 Appel le sous-programme si la parité est impaire
CPE e16 CPE $4 Appel le sous-programme si parité paire
CP e16 CP GAMMA Appel le sous-programme si le résultat est positif.
CM e16 CM b1$c2 Appel le sous-programme si le drapeau est moins
RST e3 RST 0 Redémarrage programmé, équivalent à CALL 8*e3, sauf appel d'un octet.
RET     Retour du sous-programme
RNZ     Renvoie si un drapeau différent de zéro est défini
RZ     Renvoie si le drapeau zéro est défini
RNC     Retour si pas de retenue
RC     Renvoie si le drapeau de retenue est défini
RPO     Renvoie si la parité est impaire
RPE     Renvoie si la parité est paire
RP     Retour si résultat est positif
RM     Renvoie si le drapeau moins est défini

Instructions d'opérande immédiates

Plusieurs instructions sont disponibles chargeant des registres simple ou double précision ou des cellules mémoire simple précision avec des valeurs constantes, ainsi que des instructions effectuant des opérations arithmétiques ou logiques immédiates sur l'accumulateur (registre A). Le tableau suivant décrit les instructions d'opérande immédiat :

Instruction Valeur de bits Exemple Description
MVI e3,e8 MVI B,255 Déplacer les données immédiates vers le registre A, B, C, D, E, H, L ou M (mémoire)
ADI e8 ADI 1 Ajouter un opérande immédiat à A sans retenue
ACI e8 ACI 0FFH Ajouter un opérande immédiat à A avec retenue
SUI e8 SUI L + 3 Soustraire de A sans retenue inférieure
SBI e8 SBI L AND 11B Soustraire de A avec retenue inférieur
ANI e8 ANI $ AND 7FH Et logique A avec données immédiates
XRI e8 XRI 1111$0000B Ou exclusif A avec données immédiates
ORI e8 ORI L AND 1+1 Ou logique A avec données immédiates
CPI e8 CPI 'a' Compare A avec données immédiates, identique à SUI sauf que le registre A n'a pas été modifié.
LXI e3,e16 LXI B, 100H Charge immédiate étendue pour enregistrer la paire. e3 doit être équivalent à B, D, H ou SP.

Instructions d'incrémentation et de décrémentation

Le 8080 fournit des instructions pour incrémenter ou décrémenter les registres à simple et double précision. Les instructions sont décrites dans le tableau suivant :

Instruction Valeur de bits Exemple Description
INR e3 INR E Registre d'incrémentation simple précision. e3 produit l'un des A, B, C, D, E, H, L, M.
DCR e3 DCR A Registre de décrémentation simple précision. e3 produit l'un des A, B, C, D, E, H, L, M.
INX e3 INX SP Paire de registres d'incrémentation à double précision. e3 doit être équivalent à B, D, H ou SP.
DCX e3 DCX B Paire de registres de décrémentation à double précision. e3 doit être équivalent à B, D, H ou SP.

Instructions de déplacement des données

Les instructions déplaçant les données de la mémoire vers le microprocesseur et du microprocesseur vers la mémoire sont données dans le tableau suivant :

Instruction Valeur de bits Exemple Description
MOV e3,e3 MOV A,B Déplace les données vers l'élément le plus à gauche depuis l'élément le plus à droite. e3 produit l'un des A, B, C, D, E, H, L ou M. MOV M,M n'est pas autorisé.
LDAX e3 LDAX B Charge le registre A à partir de l'adresse calculée. e3 doit produire B ou D.
STAX e3 STAX D Enregistre le registre A dans l'adresse calculée. e3 doit produire B ou D.
LHLD e16 LHLD L1 Charge HL directement depuis l'emplacement e16. Charge à double précision sur H et L.
SHLD e16 SHLD L5+x Entrepose HL directement à l'emplacement e16. Entreposage à double précision de H et L dans la mémoire.
LDA e16 LDA Gamma Charge le registre A à partir de l'adresse e16.
STA e16 STA X3-5 Enregistre le registre A en mémoire en e16.
POP e3 POP PSW Charge la paire de registres à partir de la pile, définissez SP. e3 doit produire l'un des B, D, H ou PSW.
PUSH e3 PUSH B Entrepose la paire de registres dans la pile, définissez SP. e3 doit produire sur B, D, H ou PSW.
IN e8 IN 0 Charge le registre A avec les données du port e8.
OUT e8 OUT 255 Envoi les données du registre A au port e8.
XTHL     Échange les données du haut de la pile avec HL.
PCHL     Remplir le compteur de programme avec les données de HL.
SPHL     Remplir le pointeur de pile avec les données de HL.
XCHG     Échange la paire DE avec la paire HL.

Opérations d'unité logique arithmétique

Les instructions agissant sur l'accumulateur simple précision pour effectuer des opérations arithmétiques et logiques sont données dans le tableau suivant :

Instruction Valeur de bits Exemple Description
ADD e3 ADD B Ajoute le registre donné par e3 à l'accumulateur sans report. e3 doit produire l'un des A, B, C, D, E, H ou L.
ADC e3 ADC L Ajoute le registre à A avec retenue, e3 comme ci-dessus.
SUB e3 SUB H Soustrait reg e3 de A sans retenue, e3 est défini comme ci-dessus.
SBB e3 SBB 2 Soustrait le registre e3 de A avec report, e3 défini comme ci-dessus.
ANA e3 ANA 1+1 Et Logique de registre avec A, e3 comme ci-dessus.
XRA e3 XRA A Ou exclusif avec A, e3 comme ci-dessus.
ORA e3 ORA B Ou logique avec A, e3 défini comme ci-dessus.
CMP e3 CMP H Compare le registre avec A, e3 comme ci-dessus.
DAA     Registre de réglage décimal A basé sur la dernière opération d'unité logique arithmétique.
CMA     Complément les bits du registre A.
STC     Réglez le drapeau de retenue sur 1.
CMC     Complément le drapeau de retenue.
RLC     Fait pivoter les bits vers la gauche, (ré)réglez la retenue effet secondaire. Le bit d'ordre supérieur A devient une retenue.
RRC     Faites pivoter les bits vers la droite, (ré)réglez la retenue comme effet secondaire. Le bit de poids faible A devient une retenue.
RAL     Tourne le registre de retenue/A vers la gauche. La retenue est impliqué dans la rotation.
RAR     Fait pivoter le registre de retenue/A vers la droite. La retenue est impliqué dans la rotation.
DAD e3 DAD B Ajoute une paire de registres double précision e3 à HL. e3 doit produire B, D, H ou SP.

Consignes de contrôle

Les quatre instructions restantes, classées comme instructions de contrôle, sont les suivantes :

Nom Description
HLT Arrête le processeur 8080.
DI Désactive le système d'interruption.
EI Active le système d'interruption.
NOP Signifie pas d'opération.


Dernière mise à jour : Lundi, le 16 janvier 2023