如题:
Q10D6: CLR A ;10D6 E4
MOVC A,@A+DPTR ;10D7 93
INC DPTR ;10D8 A3
MOV R0,A ;10D9 F8
Q10DA: CLR A ;10DA E4
MOVC A,@A+DPTR ;10DB 93
INC DPTR ;10DC A3
JC Q10E2 ;10DD 40 03
MOV @R0,A ;10DF F6
SJMP Q10E3 ;10E0 80 01
Q10E2: MOVX @R0,A ;10E2 F2
Q10E3: INC R0 ;10E3 08
DJNZ R7,Q10DA ;10E4 DF F4
SJMP Q1109 ;10E6 80 21
Q10E8: CLR A ;10E8 E4
MOVC A,@A+DPTR ;10E9 93
INC DPTR ;10EA A3
MOV R0,A ;10EB F8
ANL A,#07H ;10EC 54 07
ADD A,#0CH ;10EE 24 0C
XCH A,R0 ;10F0 C8
CLR C ;10F1 C3
RLC A ;10F2 33
SWAP A ;10F3 C4
ANL A,#0FH ;10F4 54 0F
ORL A,#20H ;10F6 44 20
XCH A,R0 ;10F8 C8
MOVC A,@A+PC ;10F9 83
JC Q1100 ;10FA 40 04
CPL A ;10FC F4
ANL A,@R0 ;10FD 56
SJMP Q1101 ;10FE 80 01
Q1100: ORL A,@R0 ;1100 46
Q1101: MOV @R0,A ;1101 F6
DJNZ R7,Q10E8 ;1102 DF E4
SJMP Q1109 ;1104 80 03
Q1106: MOV DPTR,#000EH ;1106 90 00 0E //数据指针寄存器DPTR=000EH
Q1109: CLR A ;1109 E4
MOV R6,#01H ;110A 7E 01
MOVC A,@A+DPTR ;110C 93
JZ Q10D3 ;110D 60 C4
INC DPTR ;110F A3
MOV R7,A ;1110 FF
ANL A,#3FH ;1111 54 3F
JNB ACC.5,Q111F ;1113 30 E5 09
ANL A,#1FH ;1116 54 1F
MOV R6,A ;1118 FE
CLR A ;1119 E4
MOVC A,@A+DPTR ;111A 93
INC DPTR ;111B A3
JZ Q111F ;111C 60 01
INC R6 ;111E 0E
Q111F: XCH A,R7 ;111F CF
ANL A,#0C0H ;1120 54 C0
ADD A,ACC ;1122 25 E0
JZ Q10D6 ;1124 60 B0
JC Q10E8 ;1126 40 C0
CLR A ;1128 E4
MOVC A,@A+DPTR ;1129 93
INC DPTR ;112A A3
MOV R2,A ;112B FA
CLR A ;112C E4
MOVC A,@A+DPTR ;112D 93
INC DPTR ;112E A3
MOV R0,A ;112F F8
Q1130: CLR A ;1130 E4
MOVC A,@A+DPTR ;1131 93
INC DPTR ;1132 A3
XCH A,R0 ;1133 C8
XCH A,DPL ;1134 C5 82
XCH A,R0 ;1136 C8
XCH A,R2 ;1137 CA
XCH A,DPH ;1138 C5 83
XCH A,R2 ;113A CA
MOVX @DPTR,A ;113B F0
INC DPTR ;113C A3
XCH A,R0 ;113D C8
XCH A,DPL ;113E C5 82
XCH A,R0 ;1140 C8
XCH A,R2 ;1141 CA
XCH A,DPH ;1142 C5 83
XCH A,R2 ;1144 CA
DJNZ R7,Q1130 ;1145 DF E9
DJNZ R6,Q1130 ;1147 DE E7
SJMP Q1109 ;1149 80 BE
Q114B: MOV A,R7 ;114B EF
ADD A,0BH ;114C 25 0B
MOV R7,A ;114E FF
MOV A,R6 ;114F EE
ADDC A,0AH ;1150 35 0A
MOV R6,A ;1152 FE
MOV A,R5 ;1153 ED
ADDC A,09H ;1154 35 09
MOV R5,A ;1156 FD
MOV A,R4 ;1157 EC
ADDC A,08H ;1158 35 08
MOV R4,A ;115A FC
LJMP Q11D8 ;115B 02 11 D8
MOVC A,@A+DPTR ;10E9 93
INC DPTR ;10EA A3
MOV R0,A ;10EB F8
ANL A,#07H ;10EC 54 07
ADD A,#0CH ;10EE 24 0C
XCH A,R0 ;10F0 C8
CLR C ;10F1 C3
RLC A ;10F2 33
SWAP A ;10F3 C4
ANL A,#0FH ;10F4 54 0F
ORL A,#20H ;10F6 44 20
XCH A,R0 ;10F8 C8
MOVC A,@A+PC ;10F9 83
JC Q1100 ;10FA 40 04
CPL A ;10FC F4
ANL A,@R0 ;10FD 56
SJMP Q1101 ;10FE 80 01
Q1100: ORL A,@R0 ;1100 46
Q1101: MOV @R0,A ;1101 F6
DJNZ R7,Q10E8 ;1102 DF E4
SJMP Q1109 ;1104 80 03
======================================================================================
功能:
ROM中数据块送往IRAM中的BDATA区;目标为IRAM中的BDATA区中的某个/某些位;操作为对这个/这些位进行置位或清零;数据块由传入的DPTR取得,数据块长度由传入的R7取得,其中R7的取值范围为1~256,也就是说如果为零,则最后的效果为256(实际这里最大取得128);数据块中的一个字节对应BDATA区中的一个位,该字节的最高位表示是要将目标位置位(为1时)还是清零(为0时),该字节的低七位指定目标位的地址,在程序中使用这七位中的高4位来定位目标位所在的目标字节的地址、使用这七位中的低3位来定位目标位在目标字节中位 位置(通过查询一个位图,该位图紧跟在这段代码最后一句SJMP的后面,共8个字节,依次为0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80)。
MOV R6,#01H ;110A 7E 01
MOVC A,@A+DPTR ;110C 93
JZ Q10D3 ;110D 60 C4
INC DPTR ;110F A3
MOV R7,A ;1110 FF
ANL A,#3FH ;1111 54 3F
JNB ACC.5,Q111F ;1113 30 E5 09
ANL A,#1FH ;1116 54 1F
MOV R6,A ;1118 FE
CLR A ;1119 E4
MOVC A,@A+DPTR ;111A 93
INC DPTR ;111B A3
JZ Q111F ;111C 60 01
INC R6 ;111E 0E
Q111F: XCH A,R7 ;111F CF
ANL A,#0C0H ;1120 54 C0
ADD A,ACC ;1122 25 E0
JZ Q10D6 ;1124 60 B0
JC Q10E8 ;1126 40 C0
======================================================================================
功能:
带结束检测的数据段作用分析;如果传入的DPTR所指向的数据(ROM中)为0,则说明结束;不为0,则该字节后其后的一字节数据说明再之后一段数据的长度以及将要送入哪个RAM区域;这两个字节可以称之为数据头,数据头第一字节的高两位表明后面的数据将被送入哪个RAM区域,X0(00或10)时由Q10D6程序段处理送入PDATA区或IDATA区(00为IDATA区,10为PDATA区)、11时由Q10E8程序段处理送入BDATA区、01时执行下面紧跟着的代码(再取数据区中的两个字节送入R2R0后执行Q1130程序段,将后面的数据送入XDATA区);这些程序段完成后均返回Q1109标号处,可以处理连续存放的多个数据段,最后的0x00表示整个数据段的结束;程序的入口为Q1109标号的前一句:“Q1106: MOV DPTR,#000EH ;1106 90 00 0E //数据指针寄存器DPTR=000EH”,表示整个数据段的起始地址为ROM中的0x000E单元。
一周热门 更多>