A GitHub pages blog
Command name | Micocodes | Byte Code | Operand Description | LOC in byte code. | |||
---|---|---|---|---|---|---|---|
LOADA | Loads memory address at second byte into A register | 0001x0000 | Memory address up to 1 byte | 2 lines of code | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RO | AI | CE | Store memory value in A reg. - RAM will now point to the operand we care about as opposed to the address. | |||
OUTA | Loads A register into output register and displays it | 0010x0000 | 1 line of code (no operand) | ||||
1 | MI | CO | Fetch line of code | NA | |||
2 | RO | INI | CE | Store instruction, increment to next line | |||
3 | AO | OI | A out, output in | ||||
ADDTOA | Adds Value at Location operand to whatever is in A register currently | 0011x0000 | memory address up to 1 byte | 2 lines of code | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RO | BI | CE | store value at operand in B Reg | |||
6 | SUMO | AI | ADD | Store sum in A reg. | |||
SUBTRACTFROM_A | Subtracts Value at Location operand from whatever is in A register currently | 0100x0000 | memory address up to 1 byte | 2 lines of code | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RO | BI | CE | store value at operand in Instruction Reg | |||
6 | SUMO | AI | SUB | Store sum in A reg. | |||
STOREA | Stores A register value in memory at address | 0101x0000 | Memory address up to 1 byte | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RI | AO | CE | Store A register value in Ram where MAR currently points. | |||
LOADAIMMEDIATE | Store operand in A reg. | 0110x0000 | Value up to one byte. | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | AI | CE | Store Value from RAM directly in A reg. | |||
JUMP | Store operand in ProgamCounter | 0111x0000 | Address up to one byte. | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line. | ||||
4 | RO | JE | JL | JG | Set counter to value being pulled from RAM. | ||
JUMPIFEQUAL | Store operand in ProgamCounter if A == B register | 1000x0000 | Address up to one byte. | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | CE | Increment the counter incase we do not jump | |||||
5 | RO | JE | Set counter to value being pulled from RAM. | ||||
JUMPIFLESS | Store operand in ProgamCounter if A < B register | 1001x0000 | Address up to one byte. | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | CE | Increment the counter incase we do not jump | |||||
5 | RO | JL | Set counter to value being pulled from RAM. | ||||
JUMPIFGREATER | Store operand in ProgamCounter if A > B register | 1010x0000 | Address up to one byte. | ||||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | CE | Increment the counter incase we do not jump | |||||
5 | RO | JG | Set counter to value being pulled from RAM. | ||||
LOADB | Loads memory address at second byte into B register | 1011x0000 | Memory address up to 1 byte | 2 lines of code | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RO | BI | CE | Store memory value in B reg. - RAM will now point to the operand we care about as opposed to the address. | |||
LOADBIMMEDIATE | Store operand in B reg. | 1100x0000 | Value up to one byte. | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | BI | CE | Store Value from RAM directly in B reg. | |||
STOREB | Stores B register value in memory at address | 1101x0000 | Memory address up to 1 byte | 2 | |||
1 | MI | CO | Fetch line of code | ||||
2 | RO | INI | CE | Store instruction, increment to operand line | |||
3 | MI | CO | Get next line | ||||
4 | RO | MI | Lookup value at operand address. | ||||
5 | RI | BO | CE | Store B register value in Ram where MAR currently points. | |||
UPDATEFLAGSREG | Updates the flags register with the latest values from the a and b registers ( A<B, A<B, A>B, etc) | 1110x0000 | none | 1 | |||
1 | MI | CO | Fetch line of code. | ||||
2 | RO | INI | CE | Store instruction, increment to operand line. | |||
3 | FLAGIN | Update flags register. |