Computer Multiply Code Demo
0 Stars     201 Views    

Author: Sanderokian Stfetoneri

Forked from: Sanderokian Stfetoneri/Test Computer

Project access type: Public

Description:

A Computer. Kind of.

The 256-Series, my new collection of simulated computers: https://circuitverse.org/users/4699/projects/256-series

This version is setup to demonstrate a program that multiplies two numbers together. This version has been specifically modified to make demonstrating the program easier. This was done by making operand A for the first two instructions depend on user input, which allows the user to easily test the program with different values. 

The code is as follows:

00: LOAD Input A into Address 00

01: LOAD Input B into Address 01

02: LOAD 1F into Address 02

03: XOR Addresses 01 and 02

04: LOAD XOR Result into Address 01

05: LOAD 01 into Address 02

06: ADD Addresses 01 and 02

07: LOAD ADD Result into 01

08: LOAD 00 into Address 03

09: LOAD 00 into Address 04

0A: ADD 01 and 04

0B: IF ADD Result = 00, Go To 12, ELSE GOTO 0C

0C: ADD Addresses 00 and 03

0D: LOAD ADD Result into Address 03

0E: ADD Addresses 02 and 04

0F: LOAD ADD Result into Address 04

10: ADD Addresses 01 and 04

11: GOTO 0B

12: RETURN Address 03

Features:

32-Bits of 5-bit RAM,

32 Lines for Instructions,

ADD, AND and XOR Functions.

Go To Functionality

Can do IF = Statements

OP Codes:

0000 = Nothing

0001 VVVVV AAAAA = LOAD VVVVV into address AAAAA

0010 AAAAA 00000 = LOAD Add result into address AAAAA

0011 DDDDD VVVVV = ADD DDDDD and VVVVV together

0100 AAAAA BBBBB = ADD address AAAAA and address BBBBB together

0101 DDDDD VVVVV = AND DDDDD and VVVVV together

0110 AAAAA BBBBB = AND address AAAAA and address BBBBB together

0111 DDDDD VVVVV = XOR DDDDD and VVVVV together

1000 AAAAA BBBBB = XOR address AAAAA and BBBBB together

1001 AAAAA 00000 = LOAD AND result into address AAAAA

1010 AAAAA 00000 = LOAD XOR result into address AAAAA

1011 AAAAA 00000 = GOTO address AAAAA (in instruction memory) 

1100 AAAAA BBBBB = If add result = 0 (ignoring carry), GOTO address AAAAA else go to address BBBBB (in instruction memory)

1101 VVVVV 00000 = Return VVVVV (Stops the program)

1110 AAAAA 00000 = Return the value at address AAAAA (Stops the program)

1111 = Nothing

Created: May 21, 2019

Updated: Aug 18, 2021

Copied to Clipboard!

Comments

You must login before you can post a comment.