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

📄 testall.c

📁 i8051 vhdl 文档
💻 C
📖 第 1 页 / 共 3 页
字号:
// Program tests all instructions except:
// ACALL, LCALL, MOVX(1-4), NOP, RET,and RETI


void main() {

	#pragma asm

////////////////   INST 2 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_2:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_2
		MOV  PSW,#0

// ADD A,Rn (2)
		MOV  A,#10
		MOV  R0,#10
		ADD  A,R0
		SUBB A,#20
		JZ   DONE_2
		MOV  P1,#2
		LJMP FAILED
	DONE_2:


////////////////   INST 3 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_3:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_3
		MOV  PSW,#0

// ADD A,direct (3)
		MOV  A,#10
		MOV  100,#10
		ADD  A,100
		SUBB A,#20
		JZ   DONE_3
		MOV  P1,#3
		LJMP FAILED
	DONE_3:


////////////////   INST 4 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_4:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_4
		MOV  PSW,#0

// ADD A,@Ri (4)
		MOV  A,#10
		MOV  R0,#100
		MOV  100,#10
		ADD  A,@R0
		SUBB A,#20
		JZ   DONE_4
		MOV  P1,#4
		LJMP FAILED
	DONE_4:


////////////////   INST 5 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_5:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_5
		MOV  PSW,#0

// ADD A,#data (5)
		MOV  A,#10
		ADD  A,#5
		SUBB A,#15
		JZ   DONE_5
		MOV  P1,#5
		LJMP FAILED
	DONE_5:

////////////////   INST 6 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_6:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_6
		MOV  PSW,#0

// ADDC A,Rn (6)
		MOV  A,#10
		MOV  R0,#10
		CPL  C
		ADDC A,R0
		SUBB A,#21
		JZ   DONE_6
		MOV  P1,#6
		LJMP FAILED
	DONE_6:


////////////////   INST 7 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_7:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_7
		MOV  PSW,#0

// ADDC A,direct (7)
		MOV  A,#10
		MOV  100,#10
		CPL  C
		ADDC A,100
		SUBB A,#21
		JZ   DONE_7
		MOV  P1,#7
		LJMP FAILED
	DONE_7:


////////////////   INST 8 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_8:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_8
		MOV  PSW,#0

// ADDC A,@Ri (8)
		MOV  A,#10
		MOV  R0,#100
		MOV  100,#10
		CPL  C
		ADDC A,@R0
		SUBB A,#21
		JZ   DONE_8
		MOV  P1,#8
		LJMP FAILED
	DONE_8:


////////////////   INST 9 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_9:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_9
		MOV  PSW,#0

// ADDC A,#data (9)
		MOV  A,#10
		CPL  C
		ADDC A,#5
		SUBB A,#16
		JZ   DONE_9
		MOV  P1,#9
		LJMP FAILED
	DONE_9:

////////////////  INST 10 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_10:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_10
		MOV  PSW,#0

// AJMP (10)
		AJMP DONE_10
		MOV  P1,#10
		LJMP FAILED
	DONE_10:

////////////////  INST 11 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_11:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_11
		MOV  PSW,#0

// ANL A,Rn (11)
		MOV  R0,#255
		MOV  A,#170
		ANL  A,R0
		SUBB A,#170
		JZ   DONE_11
		MOV  P1,#11
		LJMP FAILED
	DONE_11:

////////////////  INST 12 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_12:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_12
		MOV  PSW,#0

// ANL A,direct (12)
		MOV  127,#0
		MOV  A,#255
		ANL  A,127
		JZ   DONE_12
		MOV  P1,#12
		LJMP FAILED
	DONE_12:

////////////////  INST 13 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_13:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_13
		MOV  PSW,#0

// ANL A,@Ri (13)
		MOV  R0,#127
		MOV  127,#1
		MOV  A,#254
		ANL  A,@R0
		JZ   DONE_13
		MOV  P1,#13
		LJMP FAILED
	DONE_13:

////////////////  INST 14 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_14:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_14
		MOV  PSW,#0

// ANL A,#data (14)
		MOV  A,#255
		ANL  A,#255
		SUBB A,#255
		JZ   DONE_14
		MOV  P1,#14
		LJMP FAILED
	DONE_14:

////////////////  INST 15 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_15:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_15
		MOV  PSW,#0

// ANL direct,A (15)
		MOV  50,#255
		MOV  A,#0
		ANL  50,A
		MOV  A,50
		JZ   DONE_15
		MOV  P1,#15
		LJMP FAILED
	DONE_15:

////////////////  INST 16 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_16:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_16
		MOV  PSW,#0

// ANL direct,#data (16)
		MOV  25,#128
		ANL  25,#255
		MOV  A,25
		SUBB A,#128
		JZ   DONE_16
		MOV  P1,#16
		LJMP FAILED
	DONE_16:

////////////////  INST 17 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_17:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_17
		MOV  PSW,#0

// ANL C,bit (17)
		MOV  A,#128
		CPL  C
		ANL  C,ACC.7
		SUBB A,#127
		JZ   DONE_17
		MOV  P1,#17
		LJMP FAILED
	DONE_17:

////////////////  INST 18 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_18:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_18
		MOV  PSW,#0

// ANL C,/bit (18)
		MOV  A,#128
		CPL  C
		ANL  C,/ACC.7
		SUBB A,#128
		JZ   DONE_18
		MOV  P1,#18
		LJMP FAILED
	DONE_18:

////////////////  INST 19 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_19:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_19
		MOV  PSW,#0

// CJNE A,direct,rel (19)
		MOV  A,#128
		MOV  100,#128
		CJNE A,100,ERROR_19
		MOV  A,#127
		CJNE A,100,CHECK_C_19
	ERROR_19:
		MOV  P1,#19
		LJMP FAILED
	CHECK_C_19:		;Checks that carry was set
		JC   DONE_19
		MOV  P1,#19
		LJMP FAILED
	DONE_19:

		
////////////////  INST 20 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_20:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_20
		MOV  PSW,#0
		
// CJNE A,#data,rel (20)
		MOV  A,#128
		CJNE A,#128,ERROR_20
		MOV  A,#127
		CJNE A,#128,CHECK_C_20
	ERROR_20:
		MOV  P1,#20
		LJMP FAILED
	CHECK_C_20:		;Checks that carry was set
		JC   DONE_20
		MOV  P1,#20
		LJMP FAILED
	DONE_20:


////////////////  INST 21 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_21:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_21
		MOV  PSW,#0

// CJNE Rn,#data,rel (21)
		MOV  R1,#128
		CJNE R1,#128,ERROR_21
		MOV  R1,#127
		CJNE R1,#128,CHECK_C_21
	ERROR_21:
		MOV  P1,#21
		LJMP FAILED
	CHECK_C_21:		;Checks that carry was set
		JC   DONE_21
		MOV  P1,#21
		LJMP FAILED
	DONE_21:

////////////////  INST 22 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_22:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_22
		MOV  PSW,#0

// CJNE @Ri,#data,rel (22)
		MOV  R1,#100
		MOV  100,#128
		CJNE @R1,#128,ERROR_22
		MOV  100,#127
		CJNE @R1,#128,CHECK_C_22
	ERROR_22:
		MOV  P1,#22
		LJMP FAILED
	CHECK_C_22:		;Checks that carry was set
		JC   DONE_22
		MOV  P1,#22
		LJMP FAILED
	DONE_22:


////////////////  INST 23 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_23:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_23
		MOV  PSW,#0

// CLR A (23)
		MOV  A,#128
		CLR  A
		JZ   DONE_23
		MOV  P1,#23
		LJMP FAILED
	DONE_23:


////////////////  INST 24 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_24:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_24
		MOV  PSW,#0

// CLR C (24)
		CPL  C
		CLR  C
		JNC   DONE_24
		MOV  P1,#24
		LJMP FAILED
	DONE_24:

////////////////  INST 25 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_25:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_25
		MOV  PSW,#0

// CLR bit (25)
		MOV  A,#64
		CLR  ACC.6
		JZ   DONE_25
		MOV  P1,#25
		LJMP FAILED
	DONE_25:

////////////////  INST 26 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_26:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_26
		MOV  PSW,#0

// CPL A (26)
		MOV  A,#255
		CPL  A
		JZ   DONE_26
		MOV  P1,#26
		LJMP FAILED
	DONE_26:


////////////////  INST 27 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_27:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_27
		MOV  PSW,#0

// CPL C (27)
		CPL  C
		JC   DONE_27
		MOV  P1,#27
		LJMP FAILED
	DONE_27:


////////////////  INST 28 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_28:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_28
		MOV  PSW,#0

// CPL bit (28)
		MOV  A,#32
		CPL  ACC.5
		JZ   DONE_28
		MOV  P1,#28
		LJMP FAILED
	DONE_28:


////////////////  INST 29 ///////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_29:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_29
		MOV  PSW,#0

// DA A (29)
		MOV  A,#80H
		ADD  A,#99H
		DA   A
		SUBB A,#78H	;Will clr ACC if C set
		JZ   DONE_29
		MOV  P1,#29
		LJMP FAILED		
	DONE_29:


/////////////////  INST 30 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_30:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_30
		MOV  PSW,#0

// DEC A (30)
		MOV  A,#10
		DEC  A
		SUBB A,#9
		JZ   DONE_30
		MOV  P1,#30
		LJMP FAILED
	DONE_30:  

/////////////////  INST 31 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_31:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_31
		MOV  PSW,#0

// DEC Rn (31)
		MOV  R0,#10
		DEC  R0
		MOV  A,R0
		SUBB A,#9
		JZ   DONE_31
		MOV  P1,#31
		LJMP FAILED
	DONE_31:  

/////////////////  INST 32 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_32:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_32
		MOV  PSW,#0

// DEC direct (32)
		MOV  127,#10
		DEC  127
		MOV  A,127
		SUBB A,#9
		JZ   DONE_32
		MOV  P1,#32
		LJMP FAILED
	DONE_32:
  
/////////////////  INST 33 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_33:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_33
		MOV  PSW,#0

// DEC @Ri (33)
		MOV  R0,#127
		MOV  127,#10
		DEC  @R0
		MOV  A,@R0
		SUBB A,#9
		JZ   DONE_33
		MOV  P1,#33
		LJMP FAILED
	DONE_33:  


/////////////////  INST 34 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_34:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_34
		MOV  PSW,#0

// DIV AB (34)
		MOV  A,#251
		MOV  B,#18
		DIV  AB
		SUBB A,#13
		JZ   CHECK_B_34
		MOV  P1,#34
	CHECK_B_34:
		MOV  A,B
		SUBB A,#17
		JZ   DONE_34
		MOV  P1,#34
		LJMP FAILED
	DONE_34:


/////////////////  INST 35 //////////////////////

	// Clear RAM
		MOV  R0,#128
	RAM_CLR_35:
		DEC  R0
		MOV  @R0,#0
		MOV  A,R0
		JNZ  RAM_CLR_35
		MOV  PSW,#0
		
// DJNZ Rn,rel (35)
		MOV  R0,#10
		DJNZ R0,JUMP_35		;Should jump
		MOV  P1,#35
		LJMP FAILED
	JUMP_35:
		MOV  R0,#1
		DJNZ R0,NOT_JUMP_35	;Should not jump
		AJMP DONE_35
	NOT_JUMP_35:
		MOV  P1,#35
		LJMP FAILED
	DONE_35:  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -