From 670bbd59fae7071159cbd596e44731f182b485f0 Mon Sep 17 00:00:00 2001 From: Hugo Villeneuve Date: Fri, 3 Jan 2014 02:33:32 -0500 Subject: [PATCH] Add tests for ADD and ADDC instructions --- tests/Makefile.am | 2 ++ tests/add.asm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 tests/add.asm diff --git a/tests/Makefile.am b/tests/Makefile.am index 6c3da20..0fec7ea 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -9,6 +9,7 @@ SUFFIXES = .hex .asm .sh .SECONDARY: ASM_SRC = \ + add.asm \ mul1.asm mul2.asm \ div.asm \ orl.asm anl.asm \ @@ -18,6 +19,7 @@ ASM_SRC = \ if RUN_TESTS TESTS = \ + add.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 index 0000000..cbb6eb2 --- /dev/null +++ b/tests/add.asm @@ -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 -- 2.20.1