📄 testall.c
字号:
// 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 + -