📄 testall.asm
字号:
; Program tests all instructions except:
; MOVX(1-4) and RETI
; Clear RAM
mov r0,#128
ram_clr:
dec r0
mov @r0,#0
mov a,r0
jnz ram_clr
mov PSW,#0
;;;;;;;;;;;;;;;;; INST 1 ;;;;;;;;;;;;;;;;;;;;;;;
;; acall addr11
mov a,#85
acall testret
inc a
jc fail1
subb a,#87
jz done1
fail1:
mov P1,1
ljmp failed
done1:
;;;;;;;;;;;;;;;; INST 2 ;;;;;;;;;;;;;;;;;;;;;;;
;; add a,Rn (2) -- test if ALU and flag setting works
mov a,#10
mov r0,#117
mov r1,#10
mov r2,#127
mov r3,#128
mov r5,#245
mov r7,#250
mov a,#10
add a,r0
jc fail2
subb a,#127
jnz fail2
mov a,#10
add a,r2
jc fail2
subb a,#137
jnz fail2
mov a,#10
add a,r3
jc fail2
subb a,#138
jnz fail2
mov a,#10
add a,r5
jc fail2
subb a,#255
jnz fail2
mov a,#10
add a,r7
jnc fail2
clr c
subb a,#4
jnz fail2
mov a,#117
add a,r1
jc fail2
subb a,#127
jnz fail2
mov a,#127
add a,r1
jc fail2
subb a,#137
jnz fail2
mov a,#128
add a,r1
jc fail2
subb a,#138
jnz fail2
mov a,#245
add a,r1
jc fail2
subb a,#255
jnz fail2
mov a,#250
add a,r1
jnc fail2
clr c
subb a,#4
jnz fail2
ljmp done2
fail2:
mov P1,#2
ljmp failed
done2:
;;;;;;;;;;;;;;;; INST 3 ;;;;;;;;;;;;;;;;;;;;;;;
;; add a,direct (3) -- test if ALU and flag setting works
mov 100,#117
mov a,#10
add a,100
jc fail3
subb a,#127
jnz fail3
mov 100,#127
mov a,#10
add a,100
jc fail3
subb a,#137
jnz fail3
mov 100,#128
mov a,#10
add a,100
jc fail3
subb a,#138
jnz fail3
mov 100,#245
mov a,#10
add a,100
jc fail3
subb a,#255
jnz fail3
mov 100,#250
mov a,#10
add a,100
jnc fail3
clr c
subb a,#4
jnz fail3
mov a,#117
mov 100,#10
add a,100
jc fail3
subb a,#127
jnz fail3
mov a,#127
mov 100,#10
add a,100
jc fail3
subb a,#137
jnz fail3
mov a,#128
add a,100
jc fail3
subb a,#138
jnz fail3
mov a,#245
add a,100
jc fail3
subb a,#255
jnz fail3
mov a,#250
add a,100
jnc fail3
clr c
subb a,#4
jnz fail3
ljmp done3
fail3:
jz done3
mov P1,#3
ljmp failed
done3:
;;;;;;;;;;;;;;;; INST 4 ;;;;;;;;;;;;;;;;;;;;;;;
;; add a,@Ri (4) -- indexed and simple CY
mov a,#40
mov r0,#100
mov 100,#10
mov r1,#101
mov 101,#100
add a,@r0
jc fail4
subb a,#50
jnz fail4
mov a,#40
add a,@r1
jc fail4
subb a,#140
jnz fail4
mov a,#10
mov r1,#102
mov 102,#250
add a,@r1
jnc fail4
clr c
subb a,#4
jnz fail4
ljmp done4
fail4:
mov P1,#4
ljmp failed
done4:
;;;;;;;;;;;;;;;; INST 5 ;;;;;;;;;;;;;;;;;;;;;;;
;; add a,#data (5)
mov a,#10
add a,#117
jc fail5
subb a,#127
jnz fail5
mov a,#10
add a,#127
jc fail5
subb a,#137
jnz fail5
mov a,#10
add a,#128
jc fail5
subb a,#138
jnz fail5
mov a,#10
add a,#245
jc fail5
subb a,#255
jnz fail5
mov a,#10
add a,#250
jnc fail5
clr c
subb a,#4
jnz fail5
mov a,#117
add a,#10
jc fail5
subb a,#127
jnz fail5
mov a,#127
add a,#10
jc fail5
subb a,#137
jnz fail5
mov a,#128
add a,#10
jc fail5
subb a,#138
jnz fail5
mov a,#245
add a,#10
jc fail5
subb a,#255
jnz fail5
mov a,#250
add a,#10
jnc fail5
clr c
subb a,#4
jnz fail5
ljmp done5
fail5:
jz done5
mov P1,#5
ljmp failed
mov P1,#5
ljmp failed
done5:
;;;;;;;;;;;;;;;; INST 6 ;;;;;;;;;;;;;;;;;;;;;;;
;; addc a,Rn (6)
mov a,#10
mov r0,#10
clr c
addc a,r0
jc fail6
subb a,#20
jnz fail6
mov a,#10
setb c
addc a,r0
jc fail6
subb a,#21
jnz fail6
mov a,#100
clr c
addc a,r0
jc fail6
subb a,#110
jnz fail6
mov a,#100
setb c
addc a,r0
jc fail6
subb a,#111
jnz fail6
mov a,#250
clr c
addc a,r0
jnc fail6
clr c
subb a,#4
jnz fail6
mov a,#250
setb c
addc a,r0
jnc fail6
clr c
subb a,#5
jnz fail6
ljmp done6
fail6:
mov P1,#6
ljmp failed
done6:
;;;;;;;;;;;;;;;; INST 7 ;;;;;;;;;;;;;;;;;;;;;;;
;; addc a,direct (7)
mov a,#10
mov 100,#10
clr c
addc a,100
jc fail7
subb a,#20
jnz fail7
mov a,#10
setb c
addc a,100
jc fail7
subb a,#21
jnz fail7
mov a,#100
clr c
addc a,100
jc fail7
subb a,#110
jnz fail7
mov a,#100
setb c
addc a,100
jc fail7
subb a,#111
jnz fail7
mov a,#250
clr c
addc a,100
jnc fail7
clr c
subb a,#4
jnz fail7
mov a,#250
setb c
addc a,100
jnc fail7
clr c
subb a,#5
jnz fail7
ljmp done7
fail7:
mov P1,#7
ljmp failed
done7:
;;;;;;;;;;;;;;;; INST 8 ;;;;;;;;;;;;;;;;;;;;;;;
;; addc a,@Ri (8)
mov a,#10
mov r0,#100
mov 100,#11
clr c
addc a,@r0
jc fail8
subb a,#21
jnz fail8
mov a,#10
setb c
addc a,@r0
jc fail8
subb a,#22
jnz fail8
mov a,#100
clr c
addc a,@r0
jc fail8
subb a,#111
jnz fail8
mov a,#100
setb c
addc a,@r0
jc fail8
subb a,#112
jnz fail8
mov a,#250
clr c
addc a,@r0
jnc fail8
clr c
subb a,#5
jnz fail8
mov a,#250
setb c
addc a,@r0
jnc fail8
clr c
subb a,#6
jnz fail8
ljmp done8
fail8:
mov P1,#8
ljmp failed
done8:
;;;;;;;;;;;;;;;; INST 9 ;;;;;;;;;;;;;;;;;;;;;;;
;; addc a,#data (9)
mov a,#14
clr c
addc a,#14
jc fail9
subb a,#28
jnz fail9
mov a,#14
setb c
addc a,#15
jc fail9
subb a,#30
jnz fail9
mov a,#110
clr c
addc a,#20
jc fail9
subb a,#130
jnz fail9
mov a,#110
setb c
addc a,#20
jc fail9
subb a,#131
jnz fail9
mov a,#250
clr c
addc a,#11
jnc fail9
clr c
subb a,#5
jnz fail9
mov a,#250
setb c
addc a,#11
jnc fail9
clr c
subb a,#6
jnz fail9
ljmp done9
fail9:
mov P1,#9
ljmp failed
done9:
;;;;;;;;;;;;;;;; INST 10 ;;;;;;;;;;;;;;;;;;;;;;;
;; ajmp (10)
setb c
ajmp done10
fail10:
mov P1,#10
ljmp failed
done10:clr c
jc fail10
;;;;;;;;;;;;;;;; INST 11 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl a,Rn (11)
mov r0,#250
clr c
clr a
mov a,#171
anl a,r0
jc fail11
jz fail11
subb a,#170
jnz fail11
mov r0,#190
mov a,#84
inc a
setb c
anl a,r0
jz fail11
jnc fail11
clr c
subb a,#20
jnz fail11
ljmp done11
fail11:
mov P1,#11
ljmp failed
done11:
;;;;;;;;;;;;;;;; INST 12 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl a,direct (12)
mov 127,#250
clr c
clr a
mov a,#171
anl a,127
jc fail12
jz fail12
subb a,#170
jnz fail12
mov 127,#190
mov a,#84
inc a
setb c
anl a,127
jz fail12
jnc fail12
clr c
subb a,#20
jnz fail12
ljmp done12
fail12:
mov P1,#12
ljmp failed
done12:
;;;;;;;;;;;;;;;; INST 13 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl a,@Ri (13)
mov r0,127
clr c
clr a
mov 127,#171
mov a,#250
anl a,@r0
jc fail13
jz fail13
subb a,#170
jnz fail13
mov 127,#190
mov a,#84
inc a
setb c
anl a,@r0
jz fail13
jnc fail13
clr c
subb a,#20
jnz fail13
ljmp done13
fail13:
anl a,@r0
jz done13
mov P1,#13
ljmp failed
done13:
;;;;;;;;;;;;;;;; INST 14 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl a,#data (14)
clr c
clr a
mov a,#250
anl a,#171
jc fail14
jz fail14
subb a,#170
jnz fail14
mov a,#190
mov a,#84
inc a
setb c
anl a,@r0
jz fail14
jnc fail14
clr c
subb a,#20
jnz fail14
ljmp done14
fail14:
subb a,#255
jz done14
mov P1,#14
ljmp failed
done14:
;;;;;;;;;;;;;;;; INST 15 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl direct,a (15)
mov 127,#250
clr c
clr a
mov a,#171
anl 127,a
jc fail15
mov a,127
jz fail15
subb a,#170
jnz fail15
mov 127,#190
mov a,#84
inc a
setb c
anl 127,a
mov a,127
jz fail15
jnc fail15
clr c
subb a,#20
jnz fail15
ljmp done15
fail15:
mov P1,#15
ljmp failed
done15:
;;;;;;;;;;;;;;;; INST 16 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl direct,#data (16)
mov 127,#250
clr c
clr a
anl 127,#171
jc fail16
mov a,127
jz fail16
subb a,#170
jnz fail16
mov 127,#190
setb c
anl 127,#85
mov a,127
jz fail16
jnc fail16
clr c
subb a,#20
jnz fail16
ljmp done16
fail16:
mov P1,#16
ljmp failed
done16:
;;;;;;;;;;;;;;;; INST 17 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl c,bit (17)
mov a,#128
clr c
anl c,acc.7
jc fail17
mov a,#128
setb c
anl c,acc.7
jnc fail17
ljmp done17
fail17:
mov P1,#17
ljmp failed
done17:
;;;;;;;;;;;;;;;; INST 18 ;;;;;;;;;;;;;;;;;;;;;;;
;; anl c,/bit (18)
mov a,#128
clr c
anl c,/acc.7
jc fail18
mov a,#128
setb c
anl c,/acc.7
jc fail18
mov a,#128
setb c
anl c,/acc.5
jnc fail18
ljmp done18
fail18:
mov P1,#18
ljmp failed
done18:
;;;;;;;;;;;;;;;; INST 19 ;;;;;;;;;;;;;;;;;;;;;;;
;; cjne a,direct,rel (19)
mov a,#228
mov 100,#228
cjne a,100,fail19
jc fail19
mov a,#227
cjne a,100,CHECK_C_19
ljmp fail19
CHECK_C_19: ;Checks that carry was set
jnc fail19
mov a,#229
cjne a,100,CHECK_NC_19
ljmp fail19
CHECK_NC_19: ;Checks that carry was not set
jc fail19
ljmp done19
fail19:
mov P1,#19
ljmp failed
done19:
;;;;;;;;;;;;;;;; INST 20 ;;;;;;;;;;;;;;;;;;;;;;;
;; cjne a,#data,rel (20)
mov a,#100
cjne a,#100,fail20
jc fail20
mov a,#99
cjne a,#100,CHECK_C_20
ljmp fail20
CHECK_C_20: ;Checks that carry was set
jnc fail20
mov a,#101
cjne a,#100,CHECK_NC_20
ljmp fail20
CHECK_NC_20: ;Checks that carry was not set
jc fail20
ljmp done20
fail20:
mov P1,#20
ljmp failed
done20:
;;;;;;;;;;;;;;;; INST 21 ;;;;;;;;;;;;;;;;;;;;;;;
;; cjne Rn,#data,rel (21)
mov r1,#100
cjne r1,#100,fail21
jc fail21
mov r1,#99
cjne r1,#100,CHECK_C_21
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -