Voici un tableau de référence des différents
instructions du microprocesseur 4004:
| ADD |
A = A + indexreg + FlagCY |
Cette instruction permet d'additionner une opérande au registre A (Accumulateur). |
| ADM |
A = A + mem[-mem-addr-] + FlagCY |
Cette instruction permet d'additionner la cellule mémoire du registre A (accumulateur). |
| BBL |
Retire un de la pile PC; A = immediate4 |
Cette instruction permet de retirer de la pile une valeur et la copie dans le registre A (accumulateur). |
| CLB |
A = 0; FlagCY = 0 |
Cette instruction permet de copier la valeur 0 dans le registre A (accumulateur) et l'indicateur de retenue (CY). |
| CLC |
FlagCY = 0 |
Cette instruction permet de copier la valeur 0 dans l'indicateur de retenue (CY). |
| CMA |
A = NOT A |
Cette instruction permet d'effectuer le complément du registre A (accumulateur). |
| CMC |
FlagCY = NOT FlagCY |
Cette instruction permet d'inverser la valeur de l'indicateur de retenue (CY). |
| DAA |
|
Cette instruction corrige après coup les retenues lors de la manipulation de valeur DCB. |
| DAC |
A = A - 1 |
Cette instruction permet de décrémenter le registre A (accumulateur) de 1. |
| DCL |
-mem-addr-(bit9..8) = A(bit2..0) |
Cette instruction permet de fixer la mémoire pour une ligne de commande. |
| FIM |
indexregpair = progmem[PC+] (immediate8) |
Cette instruction permet de copier dans une paire de registre d'index la valeur contenu dans une adresse mémoire de programme avec l'ajout d'une valeur immédiate à cette adresse. |
| FIN |
indexregpair = progmem[PC(bit11..8),indexreg0,indexreg1] |
Cette instruction permet de copier dans une paire de registre d'index la valeur contenu dans une adresse mémoire de programme avec l'ajout des valeurs des registres d'index 0 et 1 à cette adresse. |
| IAC |
A = A + 1 |
Cette instruction permet d'incrémenter le registre A (accumulateur) de 1. |
| INC |
indexreg = indexreg + 1 |
Cette instruction permet d'incrémenter le registre d'index de 1. |
| ISZ |
indexreg = indexreg + 1;
Si indexreg != 0 PC = PC(bit11..8),progmem[PC+] |
Cette instruction permet d'incrémenter un registre d'index et effectue un saut du pointeur de programme si l'index contient la valeur 0. |
| JIN |
PC = PC(bit11..8),indexreg,indexreg+1 |
Cette instruction permet d'effectuer un saut du pointeur de programme à partir de l'adresse contenu dans la paire de registre d'index spécifié. |
| JCN |
Si condition PC = PC(bit11..8),progmem[PC+] (address8) |
Cette instruction permet d'effectuer un saut du pointeur de programme en fonction d'une condition à partir de l'adresse contenu dans la paire de registre d'index spécifié. |
| JMS |
La pile PC avance de 1; PC = aaaa(bit11..8),progmem[PC+] |
Cette instruction permet d'effectuer un saut du pointeur de programme à un sous-programme à partir de l'adresse spécifié. |
| JUN |
PC = aaaa(bit11..8),progmem[PC+] (address12, 4 oct digit) |
Cette instruction permet d'effectuer un saut du pointeur de programme à l'adresse spécifié. |
| KBP |
A = table(A) |
Cette instruction permet d'extraire une des valeurs du tampon clavier et le copie dans le registre A (accumulateur). |
| LD |
A = indexreg |
Cette instruction permet de copier une adresse de mémoire contenu dans un index dans le registre A (accumulateur). |
| LDM |
A = immediate4 |
Cette instruction permet de copier une adresse de mémoire directe dans le registre A (accumulateur). |
| NOP |
do nothing |
Cette instruction ne fait rien. |
| RAL |
A <<= A |
Cette instruction permet d'effectuer la rotation des bits du registre A (accumulateur) et le bit de l'indicateur de retenue vers la gauche. |
| RAR |
A =>> A |
Cette instruction permet d'effectuer la rotation des bits du registre A (accumulateur) et le bit de l'indicateur de retenue vers la droite. |
| RD0 |
A = status0mem[-mem-addr-(bit9..4)] |
Cette instruction permet d'écrire la valeur de l'adresse de mémoire d'état 0 dans le registre A (accumulateur). |
| RD1 |
A = status1mem[-mem-addr-(bit9..4)] |
Cette instruction permet d'écrire la valeur de l'adresse de mémoire d'état 1 dans le registre A (accumulateur). |
| RD2 |
A = status2mem[-mem-addr-(bit9..4)] |
Cette instruction permet d'écrire la valeur de l'adresse de mémoire d'état 2 dans le registre A (accumulateur). |
| RD3 |
A = status3mem[-mem-addr-(bit9..4)] |
Cette instruction permet d'écrire la valeur de l'adresse de mémoire d'état 3 dans le registre A (accumulateur). |
| RDM |
A = mem[-mem-addr-] |
Cette instruction permet d'écrire la valeur de la cellule mémoire dans le registre A (accumulateur). |
| RDR |
A = ROM-input-port[-mem-addr-(bit7..4)] |
Cette instruction permet d'écrire la valeur d'un port avec l'adresse du port contenu une cellule mémoire morte (ROM) dans le registre A (accumulateur). |
| SBM |
A = A - mem[-mem-addr-] - FlagCY |
Cette instruction permet de soustraire la cellule mémoire du registre A (accumulateur). |
| SRC |
-mem-addr-(bit7..0) = indexreg,indexreg+1 |
Cette instruction permet d'envoyer un registre de contrôle. |
| STC |
FlagCY = 1 |
Cette instruction permet de copier la valeur 1 dans l'indicateur de retenue (CY). |
| SUB |
A = A - indexreg - FlagCY |
Cette instruction permet de soustraire l'opérande source au registre A (accumulateur). |
| TCC |
A = 0,0,0,FlagCY; FlagCY=0 |
Cette instruction permet de copier la valeur de l'indicateur de retenue dans le registre A (accumulateur) et met la valeur 0 dans l'indicateur de retenue (CY). |
| TCS |
A = 9 + FlagCY; FlagCY=0 |
Cette instruction permet de soustraire la valeur de l'indicateur de retenue au registre A (accumulateur) et met la valeur 0 dans l'indicateur de retenue (CY). |
| WMP |
RAM-output-port[-mem-addr-(bit9..4)] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans un port avec l'adresse du port contenu une cellule mémoire. |
| WPM |
progmem[-mem-addr-(bit7..0)](bit7..4-or-bit3..0) |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans une adresse de cellule mémoire de programme. |
| WR0 |
status0mem[-mem-addr-(bit9..4)] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans l'adresse de mémoire d'état 0. |
| WR1 |
status1mem[-mem-addr-(bit9..4)] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans l'adresse de mémoire d'état 1. |
| WR2 |
status2mem[-mem-addr-(bit9..4)] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans l'adresse de mémoire d'état 2. |
| WR3 |
status3mem[-mem-addr-(bit9..4)] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans l'adresse de mémoire d'état 3. |
| WRM |
mem[-mem-addr-] = A |
Cette instruction permet d'écrire la valeur du registre A (accumulateur) dans une cellule mémoire. |
| WRP |
ROM-output-port[-mem-addr-(bit7..4)] = A |
Cette instruction permet d'écrire la valeur du registre accumulateur dans un port avec l'adresse du port contenu une cellule mémoire morte (ROM). |
| XCH |
A = indexreg; indexreg = A |
Cette instruction permet d'échanger une adresse de mémoire contenu dans un index avec le registre A. |