??? 08/11/07 11:35 Read: times |
#143101 - Assembler codes Responding to: ???'s previous message |
I know 51 asm but it is a few years when I am programming only in C. It is very difficult to write code about 50kB in asm and it is also difficult to find solution in listing from compiler.
Here is the first code in C: Line 105: for (c = 0; (c <calib_table_def[calib_table].curves_count) && (c < CALIB_MAX_CURVES_COUNT); c++) { Line 106: for ( p = 1; (p < calib_points_count[calib_table].curve[c]-1) && (p < CALIB_MAX_CURVES_POINTS_COUNT-1); p++) { Line 107: if ( calib_x < calib_tables[calib_table].curve[c].point[p].x) break; Line 108: } Here is asm listing: -------------------- ; SOURCE LINE # 105 0236 E4 CLR A 0237 900000 R MOV DPTR,#c 023A F0 MOVX @DPTR,A 023B ?FOR4: 023B E500 R MOV A,calib_table 023D 25E0 ADD A,ACC 023F 25E0 ADD A,ACC 0241 2400 R ADD A,#LOW calib_table_def+003H 0243 F8 MOV R0,A 0244 F582 MOV DPL,A 0246 E4 CLR A 0247 3400 R ADDC A,#HIGH calib_table_def+003H 0249 F583 MOV DPH,A 024B E4 CLR A 024C 93 MOVC A,@A+DPTR 024D FB MOV R3,A 024E F5F0 MOV B,A 0250 900000 R MOV DPTR,#c 0253 E0 MOVX A,@DPTR 0254 FA MOV R2,A 0255 B5F000 CJNE A,B,?LAB33 0258 ?LAB33: 0258 4003 JC $ + 5 025A 020000 R LJMP ?NXT64 025D B40F00 CJNE A,#00FH,?LAB35 0260 ?LAB35: 0260 4003 JC $ + 5 0262 020000 R LJMP ?NXT64 ; SOURCE LINE # 106 0265 7401 MOV A,#001H 0267 900000 R MOV DPTR,#p 026A F0 MOVX @DPTR,A 026B ?FOR5: 026B 900000 R MOV DPTR,#c 026E E0 MOVX A,@DPTR 026F FB MOV R3,A 0270 E500 R MOV A,calib_table 0272 75F00F MOV B,#00FH 0275 A4 MUL AB 0276 FD MOV R5,A 0277 2400 R ADD A,#LOW calib_points_count 0279 F8 MOV R0,A 027A F582 MOV DPL,A 027C E4 CLR A 027D 3400 R ADDC A,#HIGH calib_points_count 027F F583 MOV DPH,A 0281 EB MOV A,R3 0282 2582 ADD A,DPL 0284 FC MOV R4,A 0285 F582 MOV DPL,A 0287 E4 CLR A 0288 3583 ADDC A,DPH 028A F583 MOV DPH,A 028C E4 CLR A 028D 93 MOVC A,@A+DPTR 028E 24FF ADD A,#0FFH 0290 FB MOV R3,A 0291 E4 CLR A 0292 34FF ADDC A,#0FFH 0294 FA MOV R2,A 0295 F5F0 MOV B,A 0297 900000 R MOV DPTR,#p 029A E0 MOVX A,@DPTR 029B FF MOV R7,A 029C 7E00 MOV R6,#000H 029E B2F7 CPL B.7 02A0 7480 MOV A,#080H 02A2 B5F006 CJNE A,B,?LAB38 02A5 8BF0 MOV B,R3 02A7 EF MOV A,R7 02A8 B5F000 CJNE A,B,?LAB38 02AB ?LAB38: 02AB 5053 JNC ?NXT66 02AD E0 MOVX A,@DPTR 02AE B41300 CJNE A,#013H,?LAB40 02B1 ?LAB40: 02B1 504D JNC ?NXT66 ; SOURCE LINE # 107 02B3 C000 R PUSH calib_x 02B5 C000 R PUSH calib_x+01H 02B7 C000 R PUSH calib_x+02H 02B9 C000 R PUSH calib_x+03H 02BB 900000 R MOV DPTR,#p 02BE E0 MOVX A,@DPTR 02BF 75F010 MOV B,#010H 02C2 A4 MUL AB 02C3 C0F0 PUSH B 02C5 C0E0 PUSH ACC 02C7 A3 INC DPTR 02C8 E0 MOVX A,@DPTR 02C9 FD MOV R5,A 02CA 8500F0 R MOV B,calib_table 02CD 900000 R MOV DPTR,#calib_tables 02D0 7E12 MOV R6,#012H 02D2 7FC0 MOV R7,#0C0H 02D4 120000 R LCALL ?C_CBADDMUL 02D7 8DF0 MOV B,R5 02D9 7E01 MOV R6,#001H 02DB 7F40 MOV R7,#040H 02DD 120000 R LCALL ?C_CBADDMUL 02E0 D0E0 POP ACC 02E2 2582 ADD A,DPL 02E4 F582 MOV DPL,A 02E6 D0E0 POP ACC 02E8 3583 ADDC A,DPH 02EA F583 MOV DPH,A 02EC 120000 R LCALL MV4_CD2RG?C 02EF 120000 R LCALL ?COMPIEEE 02F2 BFFF02 CJNE R7,#0FFH,?NXT67 02F5 8009 SJMP ?NXT66 02F7 ?NXT67: ; SOURCE LINE # 106 02F7 900000 R MOV DPTR,#p 02FA E0 MOVX A,@DPTR 02FB 04 INC A 02FC F0 MOVX @DPTR,A 02FD 020000 R LJMP ?FOR5 0300 ?NXT66: ; SOURCE LINE # 110 0300 AC00 R MOV R4,calib_x 0302 AD00 R MOV R5,calib_x+01H 0304 AE00 R MOV R6,calib_x+02H 0306 AF00 R MOV R7,calib_x+03H 0308 900000 R MOV DPTR,#x_value 030B 120000 R LCALL MV4_RG2XD?C ---------------------------------------------------------------- Here is second C code: Line 63: for (c=0;c < calib_table_def[CALIB_TABLE_2].curves_count; c++) { Line 64: if(c >= CALIB_MAX_CURVES_COUNT) break; Line 65: Line 66: for(p=1;p<calib_points_count[CALIB_TABLE_2].curve[c]-1;p++) { Line 67: if(p >= CALIB_MAX_CURVES_POINTS_COUNT-1) break; Line 68: if(calib_x<calib_tables[CALIB_TABLE_2].curve[c].point[p].x) break; Line 69: } - Here are different line numbers due to delete some comments above function. Asm listing of this part of code: --------------------------------- ; SOURCE LINE # 63 0179 E4 CLR A 017A 900000 R MOV DPTR,#c 017D F0 MOVX @DPTR,A 017E ?FOR4: 017E 900000 R MOV DPTR,#calib_table_def+0BH 0181 E4 CLR A 0182 93 MOVC A,@A+DPTR 0183 F5F0 MOV B,A 0185 900000 R MOV DPTR,#c 0188 E0 MOVX A,@DPTR 0189 B5F000 CJNE A,B,?LAB28 018C ?LAB28: 018C 4003 JC $ + 5 018E 020000 R LJMP ?NXT60 ; SOURCE LINE # 64 0191 B40F00 CJNE A,#00FH,?LAB30 0194 ?LAB30: 0194 4003 JC ?NXT62 0196 020000 R LJMP ?NXT60 0199 ?NXT62: ; SOURCE LINE # 66 0199 7401 MOV A,#001H 019B 900000 R MOV DPTR,#p 019E F0 MOVX @DPTR,A 019F ?FOR5: 019F 900000 R MOV DPTR,#c 01A2 E0 MOVX A,@DPTR 01A3 2400 R ADD A,#LOW calib_points_count+01EH 01A5 F582 MOV DPL,A 01A7 E4 CLR A 01A8 3400 R ADDC A,#HIGH calib_points_count+01EH 01AA F583 MOV DPH,A 01AC E4 CLR A 01AD 93 MOVC A,@A+DPTR 01AE 24FF ADD A,#0FFH 01B0 FB MOV R3,A 01B1 E4 CLR A 01B2 34FF ADDC A,#0FFH 01B4 FA MOV R2,A 01B5 900000 R MOV DPTR,#p 01B8 E0 MOVX A,@DPTR 01B9 FD MOV R5,A 01BA 8AF0 MOV B,R2 01BC B2F7 CPL B.7 01BE 7480 MOV A,#080H 01C0 B5F006 CJNE A,B,?LAB32 01C3 8BF0 MOV B,R3 01C5 ED MOV A,R5 01C6 B5F000 CJNE A,B,?LAB32 01C9 ?LAB32: 01C9 5047 JNC ?NXT63 ; SOURCE LINE # 67 01CB E0 MOVX A,@DPTR 01CC B41300 CJNE A,#013H,?LAB34 01CF ?LAB34: 01CF 4002 JC ?NXT65 01D1 803F SJMP ?NXT63 01D3 ?NXT65: ; SOURCE LINE # 68 01D3 900000 R MOV DPTR,#calib_x 01D6 120000 R LCALL MV4_XD2SN?C 01D9 900000 R MOV DPTR,#p 01DC E0 MOVX A,@DPTR 01DD 75F010 MOV B,#010H 01E0 A4 MUL AB 01E1 C0F0 PUSH B 01E3 C0E0 PUSH ACC 01E5 A3 INC DPTR 01E6 E0 MOVX A,@DPTR 01E7 F5F0 MOV B,A 01E9 900000 R MOV DPTR,#calib_tables+02580H 01EC 7E01 MOV R6,#001H 01EE 7F40 MOV R7,#040H 01F0 120000 R LCALL ?C_CBADDMUL 01F3 D0E0 POP ACC 01F5 2582 ADD A,DPL 01F7 F582 MOV DPL,A 01F9 D0E0 POP ACC 01FB 3583 ADDC A,DPH 01FD F583 MOV DPH,A 01FF 120000 R LCALL MV4_CD2RG?C 0202 120000 R LCALL ?COMPIEEE 0205 BFFF02 CJNE R7,#0FFH,?NXT64 0208 8008 SJMP ?NXT63 020A ?NXT64: ; SOURCE LINE # 66 020A 900000 R MOV DPTR,#p 020D E0 MOVX A,@DPTR 020E 04 INC A 020F F0 MOVX @DPTR,A 0210 808D SJMP ?FOR5 0212 ?NXT63: ; SOURCE LINE # 71 0212 900000 R MOV DPTR,#calib_x 0215 120000 R LCALL MV4_XD2RG?C 0218 900000 R MOV DPTR,#x_value 021B 120000 R LCALL MV4_RG2XD?C I am sorry for a huge message but it wasn't possible to pack source codes :) |