Add tests for ADD and ADDC instructions
authorHugo Villeneuve <hugo@hugovil.com>
Fri, 3 Jan 2014 07:33:32 +0000 (02:33 -0500)
committerHugo Villeneuve <hugo@hugovil.com>
Fri, 3 Jan 2014 07:33:32 +0000 (02:33 -0500)
tests/Makefile.am
tests/add.asm [new file with mode: 0644]

index 6c3da20..0fec7ea 100644 (file)
@@ -9,6 +9,7 @@ SUFFIXES = .hex .asm .sh
 .SECONDARY:
 
 ASM_SRC = \
 .SECONDARY:
 
 ASM_SRC = \
+    add.asm \
     mul1.asm mul2.asm \
     div.asm \
     orl.asm anl.asm \
     mul1.asm mul2.asm \
     div.asm \
     orl.asm anl.asm \
@@ -18,6 +19,7 @@ ASM_SRC = \
 if RUN_TESTS
 
 TESTS = \
 if RUN_TESTS
 
 TESTS = \
+    add.sh \
     mul1.sh mul2.sh \
     div.sh \
     orl.sh anl.sh \
     mul1.sh mul2.sh \
     div.sh \
     orl.sh anl.sh \
diff --git a/tests/add.asm b/tests/add.asm
new file mode 100644 (file)
index 0000000..cbb6eb2
--- /dev/null
@@ -0,0 +1,44 @@
+; Test program to verify correct emu8051 operation
+;
+; Test desc: ADD
+; Test output: PC = $FFF0
+; Test output: SP = $07
+; Test output: A = $20
+; Test output: B = $00
+; Test output: PSW = $01
+; Test output: R0 = $0F
+; Test output: R1 = $11
+; Test output: R2 = $10
+; Test output: R3 = $1F
+; Test output: R4 = $20
+
+        ORG     0000h           ; Reset vector
+
+        ;; ADDC
+
+        CLR     C
+        MOV     A, #0FFh
+        ADDC    A, #10h         ; CY=1, A=$0F
+        MOV     R0, A
+
+        MOV     A, #00h
+        ADDC    A, #10h         ; CY=0, A=$11
+        MOV     R1, A
+
+        SETB    C
+        MOV     A, #0FFh
+        ADDC    A, #10h         ; CY=1, A=$10
+        MOV     R2, A
+
+        ;; ADD
+
+        MOV     A, #0FFh
+        ADD     A, #20h         ; CY=1, A=$1F
+        MOV     R3, A
+
+        MOV     A, #00h
+        ADD     A, #20h         ; CY=0, A=$20
+        MOV     R4, A
+
+        LJMP    0FFF0h
+        END