URL
https://opencores.org/ocsvn/8051/8051/trunk
Subversion Repositories 8051
[/] [8051/] [trunk/] [asm/] [testall.asm] - Rev 24
Go to most recent revision | Compare with Previous | Blame | View Log
; 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
add a,r0
jc fail2
subb a,#127
jnz fail2
add a,r2
jc fail2
subb a,#137
jnz fail2
add a,r3
jc fail2
subb a,#138
jnz fail2
add a,r5
jc fail2
subb a,#255
jnz fail2
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
add a,100
jc fail3
subb a,#137
jnz fail3
mov 100,#128
add a,100
jc fail3
subb a,#138
jnz fail3
mov 100,#245
add a,100
jc fail3
subb a,#255
jnz fail3
mov 100,#250
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
add a,@r1
jc fail4
subb a,#140
jnz fail4
mov r1,#102
mov 102,#200
add a,@r1
jnc fail4
clr c
subb a,#240
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
add a,#127
jc fail5
subb a,#137
jnz fail5
add a,#128
jc fail5
subb a,#138
jnz fail5
add a,#245
jc fail5
subb a,#255
jnz fail5
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
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
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
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
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
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
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
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
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
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
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
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
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
jnz fail11
subb a,#166
jnz fail11
mov r0,#190
mov a,#84
inc a
setb c
anl a,r0
jz fail11
jnc fail11
clr c
subb a,#0
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
jnz fail12
subb a,#166
jnz fail12
mov 127,#190
mov a,#84
inc a
setb c
anl a,127
jz fail12
jnc fail12
clr c
subb a,#0
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
jnz fail13
subb a,#166
jnz fail13
mov 127,#190
mov a,#84
inc a
setb c
anl a,@r0
jz fail13
jnc fail13
clr c
subb a,#0
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
jnz fail14
subb a,#166
jnz fail14
mov a,#190
mov a,#84
inc a
setb c
anl a,@r0
jz fail14
jnc fail14
clr c
subb a,#0
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
jnz fail15
subb a,#166
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,#0
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
jnz fail16
subb a,#166
jnz fail16
mov 127,#190
mov a,#84
inc a
setb c
anl 127,#85
mov a,127
jz fail16
jnc fail16
clr c
subb a,#0
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
jnc fail18
mov a,#128
setb c
anl c,/acc.7
jc fail18
ljmp done18
fail18:
mov P1,#17
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
ljmp fail21
CHECK_C_21: ;Checks that carry was set
jnc fail21
mov r1,#101
cjne r1,#100,CHECK_NC_21
ljmp fail21
CHECK_NC_21: ;Checks that carry was not set
jc fail21
ljmp done21
fail21:
mov P1,#21
ljmp failed
done21:
;;;;;;;;;;;;;;;; INST 22 ;;;;;;;;;;;;;;;;;;;;;;;
;; cjne @Ri,#data,rel (22)
mov 125,#99
mov 126,#100
mov 127,#101
mov r1,#125
cjne @r1,#100,fail22
jc fail22
mov r1,#126
cjne @r1,#100,CHECK_C_22
ljmp fail22
CHECK_C_22: ;Checks that carry was set
jnc fail22
mov r1,#127
cjne @r1,#100,CHECK_NC_22
ljmp fail22
CHECK_NC_22: ;Checks that carry was not set
jc fail22
ljmp done22
fail22:
mov P1,#22
ljmp failed
done22:
;;;;;;;;;;;;;;;; INST 23 ;;;;;;;;;;;;;;;;;;;;;;;
;; clr a (23)
mov a,#86
clr a
jnz fail23
mov a,#86
clr a
mov r0,a
mov a,r0
jnz fail23
ljmp done23
fail23:
mov P1,#23
ljmp failed
done23:
;;;;;;;;;;;;;;;; INST 24 ;;;;;;;;;;;;;;;;;;;;;;;
;; clr c (24)
setb c
clr c
jc fail24
clr c
jc fail24
ljmp done24
fail24:
mov P1,#24
ljmp failed
done24:
;;;;;;;;;;;;;;;; INST 25 ;;;;;;;;;;;;;;;;;;;;;;;
;; clr bit (25)
setb a.7
clr a.7
jc fail25
clr a.7
jc fail25
ljmp done25
fail25:
mov P1,#25
ljmp failed
done25:
;;;;;;;;;;;;;;;; INST 26 ;;;;;;;;;;;;;;;;;;;;;;;
;; cpl a (26)
mov a,#255
cpl a
jnz fail26
mov a,#85
cpl a
clr c
subb a,#190
jnz fail26
ljmp done26
fail26:
mov P1,#26
ljmp failed
done26:
;;;;;;;;;;;;;;;; INST 27 ;;;;;;;;;;;;;;;;;;;;;;;
;; cpl c (27)
setb c
cpl c
jc fail27
clr c
cpl c
jnc fail27
ljmp done27
fail27:
mov P1,#27
ljmp failed
done27:
;;;;;;;;;;;;;;;; INST 28 ;;;;;;;;;;;;;;;;;;;;;;;
;; cpl bit (28)
clr a
setb a.5
cpl a.5
jnz fail28
clr a.5
cpl a.5
jz fail28
ljmp done28
fail28:
mov P1,#28
ljmp failed
done28:
;;;;;;;;;;;;;;;; INST 29 ;;;;;;;;;;;;;;;;;;;;;;;
;; DA a (29)
mov a,#0x80
add a,#0x99
da a
subb a,#0x78 ;Will clr acc if c set
jz done29
mov P1,#29
ljmp failed
done29:
;;;;;;;;;;;;;;;;; INST 30 ;;;;;;;;;;;;;;;;;;;;;;
;; dec a (30)
mov a,#10
setb c
dec a
jnc fail30
clr c
subb a,#9
jnz fail30
mov a,#0
clr c
dec a
jc fail30
subb a,#255
jnz fail30
ljmp done30
fail30:
mov P1,#30
ljmp failed
done30:
;;;;;;;;;;;;;;;;; INST 31 ;;;;;;;;;;;;;;;;;;;;;;
;; dec Rn (31)
mov r2,#10
setb c
dec r2
jnc fail31
clr c
mov a,r2
subb a,#9
jnz fail31
mov r2,#0
clr c
dec r2
jc fail31
mov a,r2
subb a,#255
jnz fail31
ljmp done31
fail31:
mov P1,#31
ljmp failed
done31:
;;;;;;;;;;;;;;;;; INST 32 ;;;;;;;;;;;;;;;;;;;;;;
;; dec direct (32)
mov 127,#10
setb c
dec 127
jnc fail32
clr c
mov a,127
subb a,#9
jnz fail32
mov 127,#0
clr c
dec 127
jc fail32
mov a,127
subb a,#255
jnz fail32
ljmp done32
fail32:
mov P1,#32
ljmp failed
done32:
;;;;;;;;;;;;;;;;; INST 33 ;;;;;;;;;;;;;;;;;;;;;;
;; dec @Ri (33)
mov r0,#127
mov @r0,#10
setb c
dec @r0
jnc fail33
clr c
mov a,@r0
subb a,#9
jnz fail33
mov @r0,#0
clr c
dec @r0
jc fail33
mov a,@r0
subb a,#255
jnz fail33
ljmp done33
fail33:
mov P1,#33
ljmp failed
done33:
;;;;;;;;;;;;;;;;; INST 34 ;;;;;;;;;;;;;;;;;;;;;;
;; div AB (34)
mov a,#251
mov B,#18
div AB
jc fail34
mov c,OV
jc fail34
subb a,#13
jnz fail34
mov a,B
subb a,#17
ljmp fail34
mov a,#180
mov B,#15
div AB
jc fail34
mov c,OV
jc fail34
subb a,#12
jnz fail34
mov a,B
subb a,#0
ljmp fail34
mov a,#0
mov B,#15
div AB
jc fail34
mov c,OV
jc fail34
subb a,#0
jnz fail34
mov a,B
subb a,#0
mov a,#0
mov B,#0
div AB
jc fail34
mov c,OV
jnc fail34
mov a,#170
mov B,#0
div AB
jc fail34
mov c,OV
jnc fail34
ljmp fail34
fail34:
mov P1,#34
ljmp failed
done34:
;;;;;;;;;;;;;;;;; INST 35 ;;;;;;;;;;;;;;;;;;;;;;
;; djnz Rn,rel (35)
mov r0,#10
djnz r0,JUMP_35 ;Should jump
mov P1,#35
ljmp failed
JUMP_35:
mov r0,#0
djnz r0,JUMP_35B ;Should jump
mov P1,#35
ljmp failed
JUMP_35B:
mov r0,#1
djnz r0,NOT_JUMP_35 ;Should not jump
ajmp done35
NOT_JUMP_35:
mov P1,#35
ljmp failed
done35:
;;;;;;;;;;;;;;;;; INST 36 ;;;;;;;;;;;;;;;;;;;;;;
;; djnz direct,rel (36)
mov 127,#10
djnz 127,JUMP_36 ;Should jump
mov P1,#36
ljmp failed
JUMP_36:
mov 127,#0
djnz 127,JUMP_36B ;Should jump
mov P1,#36
ljmp failed
JUMP_36B:
mov 127,#1
djnz 127,NOT_JUMP_36 ;Should not jump
ajmp done36
NOT_JUMP_36:
mov P1,#36
ljmp failed
done36:
;;;;;;;;;;;;;;;;; INST 37 ;;;;;;;;;;;;;;;;;;;;;;
;; inc a (37)
mov a,#10
clr c
inc a
jc fail37
subb a,#11
jnz fail37
mov a,#255
setb c
inc a
jnc fail37
subb a,#0
jnz fail37
ljmp done37
fail37:
mov P1,#37
ljmp failed
done37:
;;;;;;;;;;;;;;;;; INST 38 ;;;;;;;;;;;;;;;;;;;;;;
;; inc Rn (38)
mov r3,#10
clr c
inc r3
jc fail38
mov a,r3
subb a,#11
jnz fail38
mov r4,#255
setb c
inc r4
jnc fail38
mov a,r4
subb a,#0
jnz fail38
ljmp done38
fail38:
mov P1,#38
ljmp failed
done38:
;;;;;;;;;;;;;;;;; INST 39 ;;;;;;;;;;;;;;;;;;;;;;
;; inc direct (39)
mov 127,#10
clr c
inc 127
jc fail39
mov a,127
subb a,#11
jnz fail39
mov 127,#255
setb c
inc 127
jnc fail39
mov a,127
subb a,#0
jnz fail39
ljmp done39
fail39:
mov P1,#39
ljmp failed
done39:
;;;;;;;;;;;;;;;;; INST 40 ;;;;;;;;;;;;;;;;;;;;;;
;; inc @Ri (40)
mov r1,#126
mov @r1,#10
clr c
inc @r1
jc fail40
mov a,@r1
subb a,#11
jnz fail40
mov @r1,#255
setb c
inc @r1
jnc fail40
mov a,@r1
subb a,#0
jnz fail40
ljmp done40
fail40:
mov P1,#40
ljmp failed
done40:
;;;;;;;;;;;;;;;;; INST 41 ;;;;;;;;;;;;;;;;;;;;;;
;; inc dptr (41)
mov dptr,#0x12ff
inc dptr
mov a,DPH
subb a,#0x13
jz DPH_OK_41
mov P1,#41
ljmp failed
DPH_OK_41:
mov a,DPL
jz done41
mov P1,#41
ljmp failed
done41:
;;;;;;;;;;;;;;;;; INST 42 ;;;;;;;;;;;;;;;;;;;;;;
;; JB bit,rel (42)
mov a,#16
jb acc.3,fail42
jb acc.4,done42
fail42:
mov P1,#42
ljmp failed
done42:
;;;;;;;;;;;;;;;;; INST 43 ;;;;;;;;;;;;;;;;;;;;;;
;; jbc bit,rel (43)
mov a,#8
jbc acc.3,CHECK_BIT_43
mov P1,#43
ljmp failed
CHECK_BIT_43:
jz done43
mov P1,#43
ljmp failed
done43:
;;;;;;;;;;;;;;;;; INST 44 ;;;;;;;;;;;;;;;;;;;;;;
;; jc rel (44)
clr c
jc fail44
cpl c
jc done44
fail44:
mov P1,#44
ljmp failed
done44:
;;;;;;;;;;;;;;;;; INST 45 ;;;;;;;;;;;;;;;;;;;;;;
;; jmp @a+dptr (45)
mov a,#4
mov dptr,#JMP_TBL
jmp @a+dptr
JMP_TBL:
ajmp JUMP_0
ajmp JUMP_2
ajmp JUMP_4
ajmp JUMP_6
JUMP_0:
JUMP_2:
JUMP_6:
mov P1,#43
ljmp failed
JUMP_4:
;;;;;;;;;;;;;;;;; INST 46 ;;;;;;;;;;;;;;;;;;;;;;
;; jnb bit,rel (46)
mov a,#16
jnb acc.4,fail42
jnb acc.5,done42
fail46:
mov P1,#46
ljmp failed
done46:
;;;;;;;;;;;;;;;;; INST 47 ;;;;;;;;;;;;;;;;;;;;;;
;; jnc rel (47)
setb c
jnc fail47
cpl c
jnc done47
fail47:
mov P1,#47
ljmp failed
done47:
;;;;;;;;;;;;;;;;; INST 48 ;;;;;;;;;;;;;;;;;;;;;;
;; jnz rel (48)
mov r1,#0
mov a,0
inc r1
jnz fail48
mov a,#1
dec r1
jnz done48
fail48:
mov P1,#48
ljmp failed
done48:
;;;;;;;;;;;;;;;;; INST 49 ;;;;;;;;;;;;;;;;;;;;;;
;; jz rel (49)
mov r1,1
mov a,#2
dec r1
jz fail49
mov a,#0
inc r1
jz done49
fail49:
mov P1,#49
ljmp failed
done49:
;;;;;;;;;;;;;;;; INST 50 ;;;;;;;;;;;;;;;;;;;;;;
;; lcall addr11
mov a,#85
lcall testret
inc a
jc fail50
subb a,#87
jz done50
fail50:
mov P1,1
ljmp failed
done50:
;;;;;;;;;;;;;;;;; INST 51 ;;;;;;;;;;;;;;;;;;;;;;
;; ljmp (51)
ljmp done51
mov P1,#51
ljmp failed
done51:
;;;;;;;;;;;;;;;;; INST 52 ;;;;;;;;;;;;;;;;;;;;;;
;; mov a,Rn (52)
mov r0,#10
clr a
setb c
mov a,r0
jnc fail52
subb a,#10
jz done52
fail52:
mov P1,#52
ljmp failed
done52:
;;;;;;;;;;;;;;;;; INST 53 ;;;;;;;;;;;;;;;;;;;;;;
;; mov a,direct (53)
mov 127,#10
clr a
setb c
mov a,127
jnc fail53
subb a,#10
jz done53
fail53:
mov P1,#53
ljmp failed
done53:
;;;;;;;;;;;;;;;;; INST 54 ;;;;;;;;;;;;;;;;;;;;;;
;; mov a,@Ri (54)
mov r0,#127
mov 127,#10
clr a
setb c
mov a,@r0
jnc fail54
subb a,#10
jz done54
fail54:
mov P1,#54
ljmp failed
done54:
;;;;;;;;;;;;;;;;; INST 55 ;;;;;;;;;;;;;;;;;;;;;;
;; mov a,#data (55)
clr a
setb c
mov a,#10
jnc fail55
subb a,#10
jz done55
fail55:
mov P1,#55
ljmp failed
done55:
;;;;;;;;;;;;;;;;; INST 56 ;;;;;;;;;;;;;;;;;;;;;;
;; mov Rn,a (56)
mov a,#10
mov r0,#0
setb c
mov r0,a
jnc fail56
clr a
mov a,r0
subb a,#10
jz done56
fail56:
mov P1,#56
ljmp failed
done56:
;;;;;;;;;;;;;;;;; INST 57 ;;;;;;;;;;;;;;;;;;;;;;
;; mov Rn,direct (57)
mov 127,#10
mov r0,#0
setb c
mov r0,127
jnc fail57
mov a,r0
subb a,#10
jz done57
fail57:
mov P1,#57
ljmp failed
done57:
;;;;;;;;;;;;;;;;; INST 58 ;;;;;;;;;;;;;;;;;;;;;;
;; mov Rn,#data (58)
mov r0,#0
clr a
setb c
mov r0,#10
jnc fail58
mov a,r0
subb a,#10
jz done58
fail58:
mov P1,#58
ljmp failed
done58:
;;;;;;;;;;;;;;;;; INST 59 ;;;;;;;;;;;;;;;;;;;;;;
;; mov direct,a (59)
mov a,#10
clr 127
setb c
mov 127,a
jnc fail59
clr a
mov a,127
subb a,#10
jz done59
fail59:
mov P1,#59
ljmp failed
done59:
;;;;;;;;;;;;;;;;; INST 60 ;;;;;;;;;;;;;;;;;;;;;;
;; mov direct,Rn (60)
mov r0,#10
clr 127
setb c
clr a
mov 127,r0
jnz fail60
jnc fail60
mov a,127
subb a,#10
jz done60
fail60:
mov P1,#60
ljmp failed
done60:
;;;;;;;;;;;;;;;;; INST 61 ;;;;;;;;;;;;;;;;;;;;;;
;; mov direct,direct (61)
mov 127,#10
clr 126
clr a
setb c
mov 126,127
jnz fail61
jnc fail61
mov a,126
subb a,#10
jz done61
fail61:
mov P1,#61
ljmp failed
done61:
;;;;;;;;;;;;;;;;; INST 62 ;;;;;;;;;;;;;;;;;;;;;;
;; mov direct,@Ri (62)
mov 127,#10
mov r0,#127
clr 126
clr a
setb c
mov 126,@r0
jnz fail62
jnc fail62
mov a,126
subb a,#10
jz done62
fail62:
mov P1,#62
ljmp failed
done62:
;;;;;;;;;;;;;;;;; INST 63 ;;;;;;;;;;;;;;;;;;;;;;
;; mov direct,#data (63)
clr 127
clr a
setb c
mov 127,#10
jnz fail63
jnc fail63
mov a,127
subb a,#10
jz done63
fail63:
mov P1,#63
ljmp failed
done63:
;;;;;;;;;;;;;;;;; INST 64 ;;;;;;;;;;;;;;;;;;;;;;
;; mov @Ri,a (64)
mov a,#10
mov r0,#127
mov @r0,#0
setb c
mov @r0,a
jnc fail64
clr a
mov a,127
subb a,#10
jz done64
fail64:
mov P1,#64
ljmp failed
done64:
;;;;;;;;;;;;;;;;; INST 65 ;;;;;;;;;;;;;;;;;;;;;;
;; mov @Ri,direct (65)
mov 127,#10
mov r0,#126
mov @r0,#0
clr a
setb c
mov @r0,127
jnc fail65
jnz fail65
mov a,126
subb a,#10
jz done65
fail65:
mov P1,#65
ljmp failed
done65:
;;;;;;;;;;;;;;;;; INST 66 ;;;;;;;;;;;;;;;;;;;;;;
;; mov @Ri,#data (66)
mov r0,#127
mov @r0,#0
clr a
setb c
mov @r0,#10
jnz fail66
jnc fail66
mov a,127
subb a,#10
jz done66
fail66:
mov P1,#66
ljmp failed
done66:
;;;;;;;;;;;;;;;;; INST 67 ;;;;;;;;;;;;;;;;;;;;;;
;; mov c,bit (67)
mov a,#1
clr c
mov c,acc.0
jnc fail67
setb c
mov c,acc.1
jc done67
fail67:
mov P1,#67
ljmp failed
done67:
;;;;;;;;;;;;;;;;; INST 68 ;;;;;;;;;;;;;;;;;;;;;;
;; mov bit,c (68)
setb c
mov acc.0,c
cpl c
subb a,#1
jz done68
mov P1,#68
ljmp failed
done68:
;;;;;;;;;;;;;;;;; INST 69 ;;;;;;;;;;;;;;;;;;;;;;
;; mov dptr,#data (69)
mov dptr,#0x1234
mov a,DPH
subb a,#0x12
jnz fail69
mov a,DPL
subb a,#0x34
jz done69
fail69:
mov P1,#69
ljmp failed
done69:
;;;;;;;;;;;;;;;;; INST 70 ;;;;;;;;;;;;;;;;;;;;;;
;; movc a,@a+dptr (70)
clr a
mov dptr,#DB_TBL
movc a,@a+dptr
subb a,#0x66
jnz fail70
mov a,#1
movc a,@a+dptr
subb a,#0x77
jz done70
jnz fail70
DB_TBL:
.db 0x66
.db 0x77
fail70:
mov P1,#70
ljmp failed
done70:
;;;;;;;;;;;;;;;;; INST 71 ;;;;;;;;;;;;;;;;;;;;;;
;; movc a,@a+PC (71)
mov a,#13
movc a,@a+pc
subb a,#0x66
jnz fail71
mov a,#7
movc a,@a+pc
subb a,#0x77
jz done71
jnz fail71
.db 0x66
.db 0x77
fail71:
mov P1,#71
ljmp failed
done71:
;;;;;;;;;;;;;;;; INST 76 ;;;;;;;;;;;;;;;;;;;;;;;
;; mul AB (76)
mov a,#80
mov B,#160
mul AB ; = 0x3200
jnc fail76
jnz fail76
mov a,B
subb a,#0x32
jnz fail76
mov a,#111
mov B,#87
mul AB ; = 0x25b9
jnc fail76
clr c
subb a,#0xb9
jnz fail76
mov a,B
subb a,#0x25
jnz fail76
mov a,#11
mov B,#17
mul AB ; = 0x00B9
jc fail76
clr c
subb a,#0xbb
jnz fail76
mov a,B
jnz fail76
ljmp done76
fail76:
mov P1,#76
ljmp failed
done76:
;;;;;;;;;;;;;;;; INST 77 ;;;;;;;;;;;;;;;;;;;;;;;
;; nop
mov a,#85
setb c
nop
jnc fail77
subb a,#84
jnz fail77
mov a,#123
clr c
nop
jc fail77
subb a,#123
jz done77
fail77:
mov P1,#77
ljmp failed
done77:
;;;;;;;;;;;;;;;; INST 78 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl a,Rn (78)
mov a,#0x90
mov r0,#0x09
setb c
orl a,r0
jnc fail78
clr c
subb a,#0x99
jnz fail78
mov a,#0x48
mov r0,#0x19
clr c
orl a,r0
jc fail78
subb a,#0x59
jz done78
fail78:
mov P1,#78
ljmp failed
done78:
;;;;;;;;;;;;;;;; INST 79 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl a,direct (79)
mov a,#0x90
mov 127,#0x09
setb c
orl a,127
jnc fail79
clr c
subb a,#0x99
jnz fail79
mov a,#0x48
mov 127,#0x19
clr c
orl a,127
jc fail79
subb a,#0x59
jz done79
fail79:
mov P1,#79
ljmp failed
done79:
;;;;;;;;;;;;;;;; INST 80 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl a,@Ri (80)
mov a,#0x90
mov r1,#127
mov @r1,#0x9
setb c
orl a,@r1
jnc fail80
clr c
subb a,#0x99
jnz fail80
mov a,#0x48
mov @r1,#0x19
clr c
orl a,@r1
jc fail80
subb a,#0x59
jz done80
fail80:
mov P1,#80
ljmp failed
done80:
;;;;;;;;;;;;;;;; INST 81 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl a,#data (81)
mov a,#0x90
setb c
orl a,#0x9
jnc fail81
clr c
subb a,#0x99
jnz fail81
mov a,#0x48
clr c
orl a,#0x19
jc fail81
subb a,#0x59
jz done81
fail81:
mov P1,#81
ljmp failed
done81:
;;;;;;;;;;;;;;;; INST 82 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl direct,a (82)
mov a,#0x90
mov 127,#0x9
setb c
orl 127,a
jnc fail82
clr c
subb a,#0x90
jnz fail82
mov a,127
clr c
subb a,#0x99
jnz fail82
mov a,#0x48
mov 127,#0x19
clr c
orl 127,a
jc fail82
subb a,#0x48
jnz fail82
mov a,127
clr c
subb a,#0x59
jz done82
fail82:
mov P1,#82
ljmp failed
done82:
;;;;;;;;;;;;;;;; INST 83 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl direct,#data (83)
mov a,#0x91
mov 127,#0x9
setb c
orl 127,#0x90
jnc fail83
clr c
subb a,#0x91
jnz fail83
mov a,127
clr c
subb a,#0x99
jnz fail83
mov a,#0x49
mov 127,#0x19
clr c
orl 127,#0x48
jc fail83
subb a,#0x49
jnz fail83
mov a,127
clr c
subb a,#0x59
jz done83
fail83:
mov P1,#83
ljmp failed
done83:
;;;;;;;;;;;;;;;; INST 84 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl c,bit (84)
mov a,#1
orl c,acc.1
jc fail84
orl c,acc.0
jnc fail84
orl c,acc.1
jc done84
fail84:
mov P1,#84
ljmp failed
done84:
;;;;;;;;;;;;;;;; INST 85 ;;;;;;;;;;;;;;;;;;;;;;;
;; orl c,;bit (85)
mov a,#1
orl c,/acc.0
jc fail85
orl c,/acc.1
jnc fail85
orl c,/acc.0
jc done85
fail85:
mov P1,#85
ljmp failed
done85:
;;;;;;;;;;;;;;;; INST 86,87 ;;;;;;;;;;;;;;;;;;;;;;;
;; push direct (87)
mov dptr,#0x0123
mov 127,#8
push DPL
push DPH
push 127
mov a,8
subb a,#0x23
jnz fail87
mov a,9
subb a,#1
jnz fail87
mov a,10
subb a,#8
jz done87
fail87:
mov P1,#87
ljmp failed
done87:
;; pop direct (86)
pop SP
pop 100
mov a,100
subb a,#0x23
jz done86
mov P1,#86
ljmp failed
done86:
;;;;;;;;;;;;;;;; INST 88 ;;;;;;;;;;;;;;;;;;;;;;;
ljmp done88
clr a
testret: ;; subroutine called from acall and lcall
inc a
ret
clr a
done88:
;;;;;;;;;;;;;;;; INST 90 ;;;;;;;;;;;;;;;;;;;;;;;
;; rl a (90)
mov a,#129
rl a
subb a,#3
jz done90
mov P1,#90
ljmp failed
done90:
;;;;;;;;;;;;;;;; INST 91 ;;;;;;;;;;;;;;;;;;;;;;;
;; rlc a (91)
setb c
mov a,#129
rlc a
subb a,#2 ;a(3)-c(1)-1
jnz fail91
clr c
mov a,#129
rlc a
subb a,#1 ;a(2)-c(1)-1
jz done91
fail91:
mov P1,#91
ljmp failed
done91:
;;;;;;;;;;;;;;;; INST 92 ;;;;;;;;;;;;;;;;;;;;;;;
;; rr a (92)
mov a,#129
rr a
subb a,#192
jz done92
mov P1,#92
ljmp failed
done92:
;;;;;;;;;;;;;;;; INST 93 ;;;;;;;;;;;;;;;;;;;;;;;
;; rrc a (93)
setb c
mov a,#3
rrc a
subb a,#128 ;a(129)-c(1)-0
jnz fail93
clr c
mov a,#3
rrc a
subb a,#0 ;a(1)-c(1)-0
jz done93
fail93:
mov P1,#93
ljmp failed
done93:
;;;;;;;;;;;;;;;; INST 94 ;;;;;;;;;;;;;;;;;;;;;;;
;; setb c (94)
clr c
setb c
mov a,#1
subb a,#0 ;a(1)-c(1)-0
jz done94
mov P1,#94
ljmp failed
done94:
;;;;;;;;;;;;;;;; INST 95 ;;;;;;;;;;;;;;;;;;;;;;;
;; setb bit (95)
clr a
setb acc.7
subb a,#128
jz done95
mov P1,#95
ljmp failed
done95:
;;;;;;;;;;;;;;;; INST 96 ;;;;;;;;;;;;;;;;;;;;;;;
;; sjmp (96)
sjmp done96
mov P1,#96
ljmp failed
done96:
;;;;;;;;;;;;;;;; INST 97 ;;;;;;;;;;;;;;;;;;;;;;;
;; subb a,Rn (97)
setb c
mov a,#100
mov r0,#10
subb a,r0 ; 100 - 10 - 1 = 89
jc fail97
add a,167 ; 167 + 89 = 0
jnz fail97
clr c
mov a,#10
mov r0,#100
subb a,r0 ; 10 - 100 - 0 = 166
jnc fail97
add a,90 ; 166 + 90 = 0
jz done97
fail97:
mov P1,#97
ljmp failed
done97:
;;;;;;;;;;;;;;;; INST 98 ;;;;;;;;;;;;;;;;;;;;;;;
;; subb a,direct (98)
setb c
mov a,#100
mov 127,#10
subb a,127 ; 100 - 10 - 1 = 89
jc fail98
add a,167 ; 167 + 89 = 0
jnz fail98
clr c
mov a,#10
mov 127,#100
subb a,127 ; 10 - 100 - 0 = 166
jnc fail98
add a,90 ; 166 + 90 = 0
jz done98
fail98:
mov P1,#98
ljmp failed
done98:
;;;;;;;;;;;;;;;; INST 99 ;;;;;;;;;;;;;;;;;;;;;;;
;; subb a,@Ri (99)
setb c
mov r0,#126
mov a,#100
mov @r0,#10
subb a,@r0 ; 100 - 10 - 1 = 89
jc fail99
add a,167 ; 167 + 89 = 0
jnz fail99
clr c
mov a,#10
mov @r0,#100
subb a,@r0 ; 10 - 100 - 0 = 166
jnc fail99
add a,90 ; 166 + 90 = 0
jz done99
fail99:
mov P1,#99
ljmp failed
done99:
;;;;;;;;;;;;;;;; INST 100 ;;;;;;;;;;;;;;;;;;;;;;;
;; subb a,#data (100)
setb c
mov a,#100
subb a,#10 ; 100 - 10 - 1 = 89
jc fail100
add a,167 ; 167 + 89 = 0
jnz fail100
clr c
mov a,#10
subb a,#100 ; 10 - 100 - 0 = 166
jnc fail100
add a,90 ; 166 + 90 = 0
jz done100
fail100:
mov P1,#100
ljmp failed
done100:
;;;;;;;;;;;;;;;; INST 101 ;;;;;;;;;;;;;;;;;;;;;;;
;; swap a (101)
clr c
mov a,#0x23
swap a
jc fail101
subb a,#0x32
jnz fail101
mov a,#0xC3
setb c
swap a
jnc fail101
subb a,#0x3C
jz done101
fail101:
mov P1,#101
ljmp failed
done101:
;;;;;;;;;;;;;;;; INST 102 ;;;;;;;;;;;;;;;;;;;;;;;
;; xch a,Rn (102)
mov a,#10
mov r0,#97
xch a,r0
subb a,#97
jnz fail102
mov a,r0
subb a,#10
jz done102
fail102:
mov P1,#102
ljmp failed
done102:
;;;;;;;;;;;;;;;; INST 103 ;;;;;;;;;;;;;;;;;;;;;;;
;; xch a,direct (103)
mov a,#10
mov 127,#99
xch a,127
subb a,#99
jnz fail103
mov a,127
subb a,#10
jz done103
fail103:
mov P1,#103
ljmp failed
done103:
;;;;;;;;;;;;;;;; INST 104 ;;;;;;;;;;;;;;;;;;;;;;;
;; xch a,@Ri (104)
mov a,#10
mov r0,#127
mov 127,#99
xch a,@r0
subb a,#99
jnz fail104
mov a,127
subb a,#10
jz done104
fail104:
mov P1,#104
ljmp failed
done104:
;;;;;;;;;;;;;;;; INST 105 ;;;;;;;;;;;;;;;;;;;;;;;
;; xchd a,@Ri (105)
mov a,#0x44
mov r0,#127
mov 127,#0x55
xchd a,@r0
subb a,#0x45
jnz fail105
mov a,127
subb a,#0x54
jz done105
fail105:
mov P1,#105
ljmp failed
done105:
;;;;;;;;;;;;;;;; INST 106 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl a,Rn (106)
mov a,#0x35
mov r0,#0xC3
xrl a,r0
subb a,#0xF6
jz done106
mov P1,#106
ljmp failed
done106:
;;;;;;;;;;;;;;;; INST 107 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl a,direct (107)
mov a,#0xC3
mov 127,#0x35
xrl a,127
subb a,#0xF6
jz done107
mov P1,#107
ljmp failed
done107:
;;;;;;;;;;;;;;;; INST 108 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl a,@Ri (108)
mov a,#0x35
mov r0,#127
mov 127,#0xC3
xrl a,@r0
subb a,#0xF6
jz done108
mov P1,#108
ljmp failed
done108:
;;;;;;;;;;;;;;;; INST 109 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl a,#data (109)
mov a,#0x35
xrl a,#0xC3
subb a,#0xF6
jz done109
mov P1,#109
ljmp failed
done109:
;;;;;;;;;;;;;;;; INST 110 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl direct,a (110)
mov a,#0x35
mov 127,#0xC3
xrl 127,a
clr a
mov a,127
subb a,#0xF6
jz done110
mov P1,#110
ljmp failed
done110:
;;;;;;;;;;;;;;;; INST 111 ;;;;;;;;;;;;;;;;;;;;;;;
;; xrl direct,#data (111)
mov 127,#0x35
xrl 127,#0xC3
mov a,127
subb a,#0xF6
jz done111
mov P1,#111
ljmp failed
done111:
;;;;;;;;;;;;;;;;; DONE ;;;;;;;;;;;;;;;;;;;;;;
mov P1,#127 ; All instructions passed
failed:
Go to most recent revision | Compare with Previous | Blame | View Log