When the processor is running, it needs a place where it can temporarily store information. The information could for example be the result of an addition, or the input from a user. This is the purpose of registers, they store a small piece of information for a short amount of time. Different registers serve different purposes. For example, the program counter is responsible for storing the current instruction address, and the output register is where the result is stored and displayed to the user.
My processor has 4 registers: A, B, OUT and PC. These were implemented using 4-bit binary counters. While there are specific register IC:s, I found it easier to use counters since I needed that functionality for the program counter anyway. The counter can also be used as a regular register by deactivating the count enable pin.
For the output register, I wanted to be able to display two base-10 digits. This is because the processor operates on 4 bits and can thus output values from 0-15. By simply using a BDC (Binary Decimal Converter) the output would be in hexadecimal if the output is larger than 9, which is not as human-readable as a base-10 number. The trick is to convert the binary number into a Binary Coded Decimal (BCD) number. A BCD number is encoded just like a binary number, except it rotates at the number 9 just like a decimal number would. This makes it suitable for outputting to 7-segment displays.