1602.lst
来自「10K到5MHz的频率测量」· LST 代码 · 共 1,887 行 · 第 1/4 页
LST
1,887 行
289 9250 0080 STS f+3,R5
28B 9240 007F STS f+2,R4
(0096) if(hignf)
28D 9020 0070 LDS R2,hignf
28F 2022 TST R2
290 F131 BEQ 0x02B7
(0097) {
(0098) f+=hignf*65536;
291 2433 CLR R3
292 2444 CLR R4
293 2455 CLR R5
294 E040 LDI R20,0
295 E050 LDI R21,0
296 E061 LDI R22,1
297 E070 LDI R23,0
298 925A ST R5,-Y
299 924A ST R4,-Y
29A 923A ST R3,-Y
29B 922A ST R2,-Y
29C 018A MOVW R16,R20
29D 019B MOVW R18,R22
29E 940E 03E4 CALL empy32s
2A0 9040 007F LDS R4,f+2
2A2 9050 0080 LDS R5,f+3
2A4 9020 007D LDS R2,f
2A6 9030 007E LDS R3,f+1
2A8 0E20 ADD R2,R16
2A9 1E31 ADC R3,R17
2AA 1E42 ADC R4,R18
2AB 1E53 ADC R5,R19
2AC 9230 007E STS f+1,R3
2AE 9220 007D STS f,R2
2B0 9250 0080 STS f+3,R5
2B2 9240 007F STS f+2,R4
(0099) hignf=0;
2B4 2422 CLR R2
2B5 9220 0070 STS hignf,R2
(0100) }
(0101) FF=(float)f;
2B7 9120 007F LDS R18,f+2
2B9 9130 0080 LDS R19,f+3
2BB 9100 007D LDS R16,f
2BD 9110 007E LDS R17,f+1
2BF 940E 04B1 CALL ulong2fp
2C1 9310 0082 STS FF+1,R17
2C3 9300 0081 STS FF,R16
2C5 9330 0084 STS FF+3,R19
2C7 9320 0083 STS FF+2,R18
(0102) for(i=13;i>6;i--)
2C9 E08D LDI R24,0xD
2CA 9380 0074 STS i,R24
2CC C039 RJMP 0x0306
(0103) {
(0104) WriteNum(2,i,f%10);
2CD E04A LDI R20,0xA
2CE E050 LDI R21,0
2CF E060 LDI R22,0
2D0 E070 LDI R23,0
2D1 9120 007F LDS R18,f+2
2D3 9130 0080 LDS R19,f+3
2D5 9100 007D LDS R16,f
2D7 9110 007E LDS R17,f+1
2D9 937A ST R23,-Y
2DA 936A ST R22,-Y
2DB 935A ST R21,-Y
2DC 934A ST R20,-Y
2DD 940E 037C CALL mod32u
2DF 8319 STD Y+1,R17
2E0 8308 STD Y+0,R16
2E1 9120 0074 LDS R18,i
2E3 2733 CLR R19
2E4 E002 LDI R16,2
2E5 E010 LDI R17,0
2E6 DE74 RCALL _WriteNum
(0105) f/=10;
2E7 E04A LDI R20,0xA
2E8 E050 LDI R21,0
2E9 E060 LDI R22,0
2EA E070 LDI R23,0
2EB 9120 007F LDS R18,f+2
2ED 9130 0080 LDS R19,f+3
2EF 9100 007D LDS R16,f
2F1 9110 007E LDS R17,f+1
2F3 937A ST R23,-Y
2F4 936A ST R22,-Y
2F5 935A ST R21,-Y
2F6 934A ST R20,-Y
2F7 940E 037A CALL div32u
2F9 9310 007E STS f+1,R17
2FB 9300 007D STS f,R16
2FD 9330 0080 STS f+3,R19
2FF 9320 007F STS f+2,R18
301 9180 0074 LDS R24,i
303 5081 SUBI R24,1
304 9380 0074 STS i,R24
306 E086 LDI R24,6
307 9020 0074 LDS R2,i
309 1582 CP R24,R2
30A F210 BCS 0x02CD
(0106) }
(0107) TT=1/FF;
30B E508 LDI R16,0x58
30C E010 LDI R17,0
30D 940E 0466 CALL lpm32
30F E881 LDI R24,0x81
310 E090 LDI R25,0
311 939A ST R25,-Y
312 938A ST R24,-Y
313 940E 04C6 CALL fpdiv1
315 9310 0086 STS TT+1,R17
317 9300 0085 STS TT,R16
319 9330 0088 STS TT+3,R19
31B 9320 0087 STS TT+2,R18
(0108) T_int=(ulint)(TT*1000000000);
31D E504 LDI R16,0x54
31E E010 LDI R17,0
31F 940E 0466 CALL lpm32
321 E885 LDI R24,0x85
322 E090 LDI R25,0
323 939A ST R25,-Y
324 938A ST R24,-Y
325 940E 064E CALL fpmule1
327 940E 047A CALL fpint
329 9310 0076 STS T_int+1,R17
32B 9300 0075 STS T_int,R16
32D 9330 0078 STS T_int+3,R19
32F 9320 0077 STS T_int+2,R18
(0109) for(i=14;i>5;i--)
331 E08E LDI R24,0xE
332 9380 0074 STS i,R24
334 C039 RJMP 0x036E
(0110) {
(0111) WriteNum(1,i,T_int%10);
335 E04A LDI R20,0xA
336 E050 LDI R21,0
337 E060 LDI R22,0
338 E070 LDI R23,0
339 9120 0077 LDS R18,T_int+2
33B 9130 0078 LDS R19,T_int+3
33D 9100 0075 LDS R16,T_int
33F 9110 0076 LDS R17,T_int+1
341 937A ST R23,-Y
342 936A ST R22,-Y
343 935A ST R21,-Y
344 934A ST R20,-Y
345 940E 037C CALL mod32u
347 8319 STD Y+1,R17
348 8308 STD Y+0,R16
349 9120 0074 LDS R18,i
34B 2733 CLR R19
34C E001 LDI R16,1
34D E010 LDI R17,0
34E DE0C RCALL _WriteNum
(0112) T_int/=10;
34F E04A LDI R20,0xA
350 E050 LDI R21,0
351 E060 LDI R22,0
352 E070 LDI R23,0
353 9120 0077 LDS R18,T_int+2
355 9130 0078 LDS R19,T_int+3
357 9100 0075 LDS R16,T_int
359 9110 0076 LDS R17,T_int+1
35B 937A ST R23,-Y
35C 936A ST R22,-Y
35D 935A ST R21,-Y
35E 934A ST R20,-Y
35F 940E 037A CALL div32u
361 9310 0076 STS T_int+1,R17
363 9300 0075 STS T_int,R16
365 9330 0078 STS T_int+3,R19
367 9320 0077 STS T_int+2,R18
369 9180 0074 LDS R24,i
36B 5081 SUBI R24,1
36C 9380 0074 STS i,R24
36E E085 LDI R24,5
36F 9020 0074 LDS R2,i
371 1582 CP R24,R2
372 F210 BCS 0x0335
(0113) }
(0114) t=0;
373 2422 CLR R2
374 9220 0073 STS t,R2
(0115) init_devices();
FILE: <library>
376 DE9C RCALL _init_devices
377 CEE8 RJMP 0x0260
378 9624 ADIW R28,4
379 9508 RET
div32u:
37A 94E8 BCLR 6
37B C001 RJMP 0x037D
mod32u:
37C 9468 BSET 6
37D D030 RCALL long_div_prolog
37E 24CC CLR R12
37F C009 RJMP 0x0389
div32s:
380 94E8 BCLR 6
381 C001 RJMP 0x0383
mod32s:
382 9468 BSET 6
383 D02A RCALL long_div_prolog
384 FD37 SBRC R19,7
385 940E 0438 CALL neg32
387 FDB7 SBRC R27,7
388 D052 RCALL neg_R24_R27
389 2477 CLR R7
38A 2488 CLR R8
38B 2499 CLR R9
38C 24AA CLR R10
38D 24BB CLR R11
38E D042 RCALL tst_R16_R19
38F F0C1 BEQ 0x03A8
390 D045 RCALL tst_R24_R27
391 F0B1 BEQ 0x03A8
392 E2E8 LDI R30,0x28
393 0F00 LSL R16
394 1F11 ROL R17
395 1F22 ROL R18
396 1F33 ROL R19
397 1C77 ROL R7
398 1C88 ROL R8
399 1C99 ROL R9
39A 1CAA ROL R10
39B 1CBB ROL R11
39C 1688 CP R8,R24
39D 0699 CPC R9,R25
39E 06AA CPC R10,R26
39F 06BB CPC R11,R27
3A0 F028 BCS 0x03A6
3A1 1A88 SUB R8,R24
3A2 0A99 SBC R9,R25
3A3 0AAA SBC R10,R26
3A4 0ABB SBC R11,R27
3A5 9503 INC R16
3A6 95EA DEC R30
3A7 F759 BNE 0x0393
3A8 F426 BRTC 0x03AD
3A9 2D08 MOV R16,R8
3AA 2D19 MOV R17,R9
3AB 2D2A MOV R18,R10
3AC 2D3B MOV R19,R11
3AD C013 RJMP long_div_epilog
long_div_prolog:
3AE 927A ST R7,-Y
3AF 928A ST R8,-Y
3B0 929A ST R9,-Y
3B1 92AA ST R10,-Y
3B2 92BA ST R11,-Y
3B3 92CA ST R12,-Y
3B4 93EA ST R30,-Y
3B5 938A ST R24,-Y
3B6 939A ST R25,-Y
3B7 93AA ST R26,-Y
3B8 93BA ST R27,-Y
3B9 858B LDD R24,Y+11
3BA 859C LDD R25,Y+12
3BB 85AD LDD R26,Y+13
3BC 85BE LDD R27,Y+14
3BD 2EC3 MOV R12,R19
3BE F00E BRTS 0x03C0
3BF 26CB EOR R12,R27
3C0 9508 RET
long_div_epilog:
3C1 FCC7 SBRC R12,7
3C2 940E 0438 CALL neg32
3C4 91B9 LD R27,Y+
3C5 91A9 LD R26,Y+
3C6 9199 LD R25,Y+
3C7 9189 LD R24,Y+
3C8 91E9 LD R30,Y+
3C9 90C9 LD R12,Y+
3CA 90B9 LD R11,Y+
3CB 90A9 LD R10,Y+
3CC 9099 LD R9,Y+
3CD 9089 LD R8,Y+
3CE 9079 LD R7,Y+
3CF 9624 ADIW R28,4
3D0 9508 RET
tst_R16_R19:
3D1 2FE0 MOV R30,R16
3D2 2BE1 OR R30,R17
3D3 2BE2 OR R30,R18
3D4 2BE3 OR R30,R19
3D5 9508 RET
tst_R24_R27:
3D6 2FE8 MOV R30,R24
3D7 2BE9 OR R30,R25
3D8 2BEA OR R30,R26
3D9 2BEB OR R30,R27
3DA 9508 RET
neg_R24_R27:
3DB 9580 COM R24
3DC 9590 COM R25
3DD 95A0 COM R26
3DE 95B0 COM R27
3DF 5F8F SUBI R24,0xFF
3E0 4F9F SBCI R25,0xFF
3E1 4FAF SBCI R26,0xFF
3E2 4FBF SBCI R27,0xFF
3E3 9508 RET
empy32s:
empy32u:
3E4 940E 0441 CALL long_prolog
3E6 927A ST R7,-Y
3E7 940E 045A CALL tstzero1
3E9 F159 BEQ 0x0415
3EA 2477 CLR R7
3EB 940E 0460 CALL tstzero2
3ED F419 BNE 0x03F1
3EE 018C MOVW R16,R24
3EF 019D MOVW R18,R26
3F0 C024 RJMP 0x0415
3F1 920A ST R0,-Y
3F2 921A ST R1,-Y
3F3 9F08 MUL R16,R24
3F4 2CB0 MOV R11,R0
3F5 2CA1 MOV R10,R1
3F6 9F28 MUL R18,R24
3F7 2C90 MOV R9,R0
3F8 2C81 MOV R8,R1
3F9 9F18 MUL R17,R24
3FA 0CA0 ADD R10,R0
3FB 1C91 ADC R9,R1
3FC 1C87 ADC R8,R7
3FD 9F09 MUL R16,R25
3FE 0CA0 ADD R10,R0
3FF 1C91 ADC R9,R1
400 1C87 ADC R8,R7
401 9F19 MUL R17,R25
402 0C90 ADD R9,R0
403 1C81 ADC R8,R1
404 9F0A MUL R16,R26
405 0C90 ADD R9,R0
406 1C81 ADC R8,R1
407 9F38 MUL R19,R24
408 0C80 ADD R8,R0
409 9F29 MUL R18,R25
40A 0C80 ADD R8,R0
40B 9F1A MUL R17,R26
40C 0C80 ADD R8,R0
40D 9F0B MUL R16,R27
40E 0C80 ADD R8,R0
40F 9019 LD R1,Y+
410 9009 LD R0,Y+
411 2D0B MOV R16,R11
412 2D1A MOV R17,R10
413 2D29 MOV R18,R9
414 2D38 MOV R19,R8
415 9079 LD R7,Y+
416 940C 044F JMP long_epilog
push_xgsetF00C:
418 937A ST R23,-Y
419 936A ST R22,-Y
41A 935A ST R21,-Y
41B 934A ST R20,-Y
41C 92BA ST R11,-Y
41D 92AA ST R10,-Y
41E 9508 RET
pop_xgsetF00C:
41F 90A9 LD R10,Y+
420 90B9 LD R11,Y+
421 9149 LD R20,Y+
422 9159 LD R21,Y+
423 9169 LD R22,Y+
424 9179 LD R23,Y+
425 9508 RET
push_xgsetF03C:
426 937A ST R23,-Y
427 936A ST R22,-Y
428 935A ST R21,-Y
429 934A ST R20,-Y
42A 92DA ST R13,-Y
42B 92CA ST R12,-Y
42C 92BA ST R11,-Y
42D 92AA ST R10,-Y
42E 9508 RET
pop_xgsetF03C:
42F 90A9 LD R10,Y+
430 90B9 LD R11,Y+
431 90C9 LD R12,Y+
432 90D9 LD R13,Y+
433 9149 LD R20,Y+
434 9159 LD R21,Y+
435 9169 LD R22,Y+
436 9179 LD R23,Y+
437 9508 RET
neg32:
438 9500 COM R16
439 9510 COM R17
43A 9520 COM R18
43B 9530 COM R19
43C 5F0F SUBI R16,0xFF
43D 4F1F SBCI R17,0xFF
43E 4F2F SBCI R18,0xFF
43F 4F3F SBCI R19,0xFF
440 9508 RET
long_prolog:
441 928A ST R8,-Y
442 929A ST R9,-Y
443 92AA ST R10,-Y
444 92BA ST R11,-Y
445 93EA ST R30,-Y
446 938A ST R24,-Y
447 939A ST R25,-Y
448 93AA ST R26,-Y
449 93BA ST R27,-Y
44A 8589 LDD R24,Y+9
44B 859A LDD R25,Y+10
44C 85AB LDD R26,Y+11
44D 85BC LDD R27,Y+12
44E 9508 RET
long_epilog:
44F 91B9 LD R27,Y+
450 91A9 LD R26,Y+
451 9199 LD R25,Y+
452 9189 LD R24,Y+
453 91E9 LD R30,Y+
454 90B9 LD R11,Y+
455 90A9 LD R10,Y+
456 9099 LD R9,Y+
457 9089 LD R8,Y+
458 9624 ADIW R28,4
459 9508 RET
tstzero1:
45A 27EE CLR R30
45B 2BE0 OR R30,R16
45C 2BE1 OR R30,R17
45D 2BE2 OR R30,R18
45E 2BE3 OR R30,R19
45F 9508 RET
tstzero2:
460 27EE CLR R30
461 2BE8 OR R30,R24
462 2BE9 OR R30,R25
463 2BEA OR R30,R26
464 2BEB OR R30,R27
465 9508 RET
lpm32:
466 93EA ST R30,-Y
467 93FA ST R31,-Y
468 920A ST R0,-Y
469 2FE0 MOV R30,R16
46A 2FF1 MOV R31,R17
46B 95C8 LPM
46C 2D00 MOV R16,R0
46D 9631 ADIW R30,1
46E 95C8 LPM
46F 2D10 MOV R17,R0
470 9631 ADIW R30,1
471 95C8 LPM
472 2D20 MOV R18,R0
473 9631 ADIW R30,1
474 95C8 LPM
475 2D30 MOV R19,R0
476 9009 LD R0,Y+
477 91F9 LD R31,Y+
478 91E9 LD R30,Y+
479 9508 RET
fpint:
47A 934A ST R20,-Y
47B 935A ST R21,-Y
47C 936A ST R22,-Y
47D 940E 0586 CALL unpacku
47F F0F1 BEQ 0x049E
480 2355 TST R21
481 F0C2 BMI 0x049A
482 314F CPI R20,0x1F
483 F4A8 BCC 0x0499
484 3147 CPI R20,0x17
485 F0C1 BEQ 0x049E
486 F450 BCC 0x0491
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?