-
Notifications
You must be signed in to change notification settings - Fork 1
/
tests.asm
57 lines (57 loc) · 2.36 KB
/
tests.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
; Test cases - Machine code used in src/rom.v
;
;
; Test ALU
ADD R0,R0,R0 ; [000] = 0000000000000000
ADI R1,0x02 ; [002] = 1000000100000010
ADI R2,0x01 ; [004] = 1000001000000001
ADD R3,R2,R1 ; [006] = 0000001100100001
SUB R3,R3,R0 ; [008] = 0001001100110000
AND R2,R2,R3 ; [010] = 0010001000100011
ORR R2,R3,R2 ; [012] = 0011001000110010
NOT R4,R4,R0 ; [014] = 0100010001000000
XOR R4,R4,R4 ; [016] = 0101010001000100
LSR R2,R2,R0 ; [018] = 0110001000100000
LSL R2,R2,R0 ; [020] = 0111001000100000
XOR R1,R1,R1 ; [022] = 0101000100010001
XOR R2,R2,R2 ; [024] = 0101001000100010
XOR R3,R3,R3 ; [026] = 0101001100110011
XOR R4,R4,R4 ; [028] = 0101010001000100
;
; Test SWP
ADI R1,11001100 ; [030] = 1000000111001100
ADI R2,10101010 ; [032] = 1000001010101010
SWP R3,R1,R2 ; [034] = 1001001100010010
XOR R1,R1,R1 ; [036] = 0101000100010001
XOR R2,R2,R2 ; [038] = 0101001000100010
XOR R3,R3,R3 ; [040] = 0101001100110011
;
; Test Memory
ADI R1,0x02 ; [042] = 1000000100000010 (value)
ADI R2,0x08 ; [044] = 1000001000001000 (address)
STW R0,R2,R1 ; [046] = 1011000000100001 (store R1 at address R2)
XOR R1,R1,R1 ; [048] = 0101000100010001
LDW R1,R2,R0 ; [050] = 1010000100100000 (load R1 from address R2)
ADD R0,R1,R0 ; [052] = 0000000000010000
XOR R1,R1,R1 ; [054] = 0101000100010001
XOR R2,R2,R2 ; [056] = 0101001000100010
;
; Test Branch (relative addressing)
ADI R1,0x03 ; [058] = 1000000100000011 (skip next 3 instructions if Z)
BRZ R0,R0,R1 ; [060] = 1100000000000001 (0 - 0 == 0)
ADD R0,R0,R0 ; [062] = 0000000000000000 (will be skipped)
ADD R0,R0,R0 ; [064] = 0000000000000000 (will be skipped)
ADD R0,R0,R0 ; [066] = 0000000000000000 (will be skipped)
ADI R1,0x07 ; [068] = 1000000100000111 (branch lands here)
XOR R1,R1,R1 ; [070] = 0101000100010001
;
; Test Jump (absolute addressing)
ADI R1,0x52 ; [072] = 1000001001010010 (address 082)
JAL R1,R2,R0 ; [074] = 1101000100100000 (link to R1, jump to R2)
ADD R0,R0,R0 ; [076] = 0000000000000000 (will be skipped)
ADD R0,R0,R0 ; [078] = 0000000000000000 (will be skipped)
ADD R0,R0,R0 ; [080] = 0000000000000000 (will be skipped)
ADD R1,R1,R0 ; [082] = 0000000100010000 (jump lands here)
XOR R1,R1,R1 ; [084] = 0101000100010001
XOR R2,R2,R2 ; [086] = 0101001000100010
;