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. |