Odkazy:
Jednoduchý pětibitový procesor. Má tyto registry:
Tabulka 29.25. Registry procesoru FJE5
| název | šířka [bit] | popis |
|---|---|---|
| A | 5 | akumulátor |
| I | 5 | index registr, obsahuje 5 vyšších bitů 10-ti bitové adresy |
| SP | 10 | ukazatel na zásobník |
| PC | 10 | ukazatel na instrukce |
Tabulka 29.26. Instrukce procesoru EFJ5
| mnemonic | kód | popis |
|---|---|---|
| NOP | 00000 | PC+1→PC |
| XAI | 00001 | A ↔ I; PC+1→PC; //vymění se obsahy registrů A a I |
| LDA n | 00010 nnnnn | n→A; PC+2→PC; //hodnota n se uloží do střadače A |
| LDI n | 00011 nnnnn | n→I; PC+2→PC; |
| LDAI bias | 00100 nnnnn | 32*I+n→A; PC+2→PC |
| LDAD bias | 00101 bbbbb | mem[mem[{I,b}]]→A; PC+2→PC |
| STAI bias | 00110 bbbbb | A→mem[{I,b}]; PC+2→PC; // Store A indirectly |
| STAD bias | 00111 bbbbb | A→mem[mem[{I,b}]]; PC+2→PC; // Store A double indirectly |
| PUSH | 01000 | A→mem[SP-1]; I→mem[SP-2]; SP-2→SP; PC+1→PC; // Push A and I on Stack |
| POP | 01001 | mem[SP]→I; mem[SP+1]→A; SP+2→SP; PC+1→PC; // Pop A and I from Stack |
| CALL addr | 01010 hhhhh lllll | PC→mem[SP]; SP-2→SP; hl→PC; // Call a subroutine |
| RET | 01011 | {mem[SP],mem[SP+1]}→PC; SP+2→SP; // Return from subroutine |
| LDS adr | 01100 hhhhh lllll | hl→SP; PC+3→PC; // Load SP |
| JP addr | 01101 hhhhh lllll | hl→PC |
| JPZ addr | 01110 hhhhh lllll | if A=0 then hl→PC else PC+3→PC; |
| JPNZ addr | 01111 hhhh llll | if A!=0 then hl→PC else PC+3→PC; |
| ADD bias | 10000 bbbbb | A+mem[I,bias]→A; PC+2→PC; |
| SUB bias | 10010 bbbbb | A - mem[I,bias]→A; PC+2→PC |
| AND bias | 10100 bbbbb | A and mem[I,bias]→A; PC+2→PC |
| OR bias | 10110 bbbbb | A or mem[I,bias]→A; PC+2→PC |
| XOR bias | 11000 bbbbb | A xor mem[I,bias]→A; PC+2→PC |
| SARA | 11010 | A>>1→A; PC++; //Shift Arithmetically Right A |
| SLRA | 11100 | A>>>1→A; PC++; //Shift Logically Right A |
| SLA | 11110 | A<<1→A; PC++; // Shift Left A |
| HALT | 11111 | Zastaví vykonávání programu. |
