Instruction Set:
0: NOP - No operation
1: LI - Load immediate value (next memory value)
2: DU - Duplicate top of data stack
3: DR - Drop top of data stack
4: SW - Swap top two values on data stack
5: PU - Move value from data stack to address stack
6: PO - Move value from address stack to data stack
7: JU - Jump to address
8: CA - Call subroutine
9: CC - Conditional call
10: CJ - Conditional jump
11: RE - Return from subroutine
12: EQ - Equal comparison
13: NE - Not equal comparison
14: LT - Less than comparison
15: GT - Greater than comparison
16: FE - Fetch from memory
17: ST - Store to memory
18: AD - Add
19: SU - Subtract
20: MU - Multiply
21: DI - Divide
22: AN - Bitwise AND
23: OR - Bitwise OR
24: XO - Bitwise XOR
25: SL - Shift left
26: SR - Shift right
27: CP - Compare memory regions
28: CY - Copy memory regions
29: IO - Input/Output operations