⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testall.asm

📁 8051的Verilog
💻 ASM
📖 第 1 页 / 共 3 页
字号:
; 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 + -