📄 计算器.lst
字号:
361 8308 STD Y+0,R16
362 8319 STD Y+1,R17
363 832A STD Y+2,R18
364 833B STD Y+3,R19
365 E508 LDI R16,0x58
366 E010 LDI R17,0
367 940E 046C CALL lpm32
369 830C STD Y+4,R16
36A 831D STD Y+5,R17
36B 832E STD Y+6,R18
36C 833F STD Y+7,R19
(0177) if(i=='=')
36D 9180 0074 LDS R24,i
36F 338D CPI R24,0x3D
370 F009 BEQ 0x0372
371 C050 RJMP 0x03C2
(0178) { switch(sign)
372 9160 0075 LDS R22,sign
374 2777 CLR R23
375 3061 CPI R22,1
376 E0E0 LDI R30,0
377 077E CPC R23,R30
378 F069 BEQ 0x0386
379 3062 CPI R22,2
37A E0E0 LDI R30,0
37B 077E CPC R23,R30
37C F0C1 BEQ 0x0395
37D 3063 CPI R22,3
37E E0E0 LDI R30,0
37F 077E CPC R23,R30
380 F111 BEQ 0x03A3
381 3064 CPI R22,4
382 E0E0 LDI R30,0
383 077E CPC R23,R30
384 F169 BEQ 0x03B2
385 C039 RJMP 0x03BF
(0179) {
(0180) case 1:a=a+b;break;
386 8108 LDD R16,Y+0
387 8119 LDD R17,Y+1
388 812A LDD R18,Y+2
389 813B LDD R19,Y+3
38A 01CE MOVW R24,R28
38B 9604 ADIW R24,4
38C 939A ST R25,-Y
38D 938A ST R24,-Y
38E 940E 04EE CALL fpadd1
390 8308 STD Y+0,R16
391 8319 STD Y+1,R17
392 832A STD Y+2,R18
393 833B STD Y+3,R19
394 C02A RJMP 0x03BF
(0181) case 2:a=b-a;break;
395 810C LDD R16,Y+4
396 811D LDD R17,Y+5
397 812E LDD R18,Y+6
398 813F LDD R19,Y+7
399 01CE MOVW R24,R28
39A 939A ST R25,-Y
39B 938A ST R24,-Y
39C 940E 0503 CALL fpsub1
39E 8308 STD Y+0,R16
39F 8319 STD Y+1,R17
3A0 832A STD Y+2,R18
3A1 833B STD Y+3,R19
3A2 C01C RJMP 0x03BF
(0182) case 3:a=a*b;break;
3A3 8108 LDD R16,Y+0
3A4 8119 LDD R17,Y+1
3A5 812A LDD R18,Y+2
3A6 813B LDD R19,Y+3
3A7 01CE MOVW R24,R28
3A8 9604 ADIW R24,4
3A9 939A ST R25,-Y
3AA 938A ST R24,-Y
3AB 940E 06EC CALL fpmule1
3AD 8308 STD Y+0,R16
3AE 8319 STD Y+1,R17
3AF 832A STD Y+2,R18
3B0 833B STD Y+3,R19
3B1 C00D RJMP 0x03BF
(0183) case 4:a=b/a;break;
3B2 810C LDD R16,Y+4
3B3 811D LDD R17,Y+5
3B4 812E LDD R18,Y+6
3B5 813F LDD R19,Y+7
3B6 01CE MOVW R24,R28
3B7 939A ST R25,-Y
3B8 938A ST R24,-Y
3B9 940E 0564 CALL fpdiv1
3BB 8308 STD Y+0,R16
3BC 8319 STD Y+1,R17
3BD 832A STD Y+2,R18
3BE 833B STD Y+3,R19
(0184) default: break;
(0185) }
(0186) sign=0;
3BF 2422 CLR R2
3C0 9220 0075 STS sign,R2
(0187) }
(0188) i=0xff;
3C2 EF8F LDI R24,0xFF
3C3 9380 0074 STS i,R24
(0189) }
(0190) }
(0191) t=0x0f;
3C5 E04F LDI R20,0xF
3C6 C005 RJMP 0x03CC
(0192) while(t--)display(a);
FILE: <library>
3C7 8108 LDD R16,Y+0
3C8 8119 LDD R17,Y+1
3C9 812A LDD R18,Y+2
3CA 813B LDD R19,Y+3
3CB DD9D RCALL _display
3CC 2E24 MOV R2,R20
3CD 2433 CLR R3
3CE 5041 SUBI R20,1
3CF 2022 TST R2
3D0 F7B1 BNE 0x03C7
3D1 CF01 RJMP 0x02D3
3D2 9628 ADIW R28,0x8
3D3 9508 RET
push_arg4:
3D4 933A ST R19,-Y
3D5 932A ST R18,-Y
push_arg2:
3D6 931A ST R17,-Y
3D7 930A ST R16,-Y
3D8 9508 RET
div32u:
3D9 94E8 BCLR 6
3DA C001 RJMP 0x03DC
mod32u:
3DB 9468 BSET 6
3DC D030 RCALL long_div_prolog
3DD 24CC CLR R12
3DE C009 RJMP 0x03E8
div32s:
3DF 94E8 BCLR 6
3E0 C001 RJMP 0x03E2
mod32s:
3E1 9468 BSET 6
3E2 D02A RCALL long_div_prolog
3E3 FD37 SBRC R19,7
3E4 940E 0463 CALL neg32
3E6 FDB7 SBRC R27,7
3E7 D052 RCALL neg_R24_R27
3E8 2477 CLR R7
3E9 2488 CLR R8
3EA 2499 CLR R9
3EB 24AA CLR R10
3EC 24BB CLR R11
3ED D042 RCALL tst_R16_R19
3EE F0C1 BEQ 0x0407
3EF D045 RCALL tst_R24_R27
3F0 F0B1 BEQ 0x0407
3F1 E2E8 LDI R30,0x28
3F2 0F00 LSL R16
3F3 1F11 ROL R17
3F4 1F22 ROL R18
3F5 1F33 ROL R19
3F6 1C77 ROL R7
3F7 1C88 ROL R8
3F8 1C99 ROL R9
3F9 1CAA ROL R10
3FA 1CBB ROL R11
3FB 1688 CP R8,R24
3FC 0699 CPC R9,R25
3FD 06AA CPC R10,R26
3FE 06BB CPC R11,R27
3FF F028 BCS 0x0405
400 1A88 SUB R8,R24
401 0A99 SBC R9,R25
402 0AAA SBC R10,R26
403 0ABB SBC R11,R27
404 9503 INC R16
405 95EA DEC R30
406 F759 BNE 0x03F2
407 F426 BRTC 0x040C
408 2D08 MOV R16,R8
409 2D19 MOV R17,R9
40A 2D2A MOV R18,R10
40B 2D3B MOV R19,R11
40C C013 RJMP long_div_epilog
long_div_prolog:
40D 927A ST R7,-Y
40E 928A ST R8,-Y
40F 929A ST R9,-Y
410 92AA ST R10,-Y
411 92BA ST R11,-Y
412 92CA ST R12,-Y
413 93EA ST R30,-Y
414 938A ST R24,-Y
415 939A ST R25,-Y
416 93AA ST R26,-Y
417 93BA ST R27,-Y
418 858B LDD R24,Y+11
419 859C LDD R25,Y+12
41A 85AD LDD R26,Y+13
41B 85BE LDD R27,Y+14
41C 2EC3 MOV R12,R19
41D F00E BRTS 0x041F
41E 26CB EOR R12,R27
41F 9508 RET
long_div_epilog:
420 FCC7 SBRC R12,7
421 940E 0463 CALL neg32
423 91B9 LD R27,Y+
424 91A9 LD R26,Y+
425 9199 LD R25,Y+
426 9189 LD R24,Y+
427 91E9 LD R30,Y+
428 90C9 LD R12,Y+
429 90B9 LD R11,Y+
42A 90A9 LD R10,Y+
42B 9099 LD R9,Y+
42C 9089 LD R8,Y+
42D 9079 LD R7,Y+
42E 9624 ADIW R28,4
42F 9508 RET
tst_R16_R19:
430 2FE0 MOV R30,R16
431 2BE1 OR R30,R17
432 2BE2 OR R30,R18
433 2BE3 OR R30,R19
434 9508 RET
tst_R24_R27:
435 2FE8 MOV R30,R24
436 2BE9 OR R30,R25
437 2BEA OR R30,R26
438 2BEB OR R30,R27
439 9508 RET
neg_R24_R27:
43A 9580 COM R24
43B 9590 COM R25
43C 95A0 COM R26
43D 95B0 COM R27
43E 5F8F SUBI R24,0xFF
43F 4F9F SBCI R25,0xFF
440 4FAF SBCI R26,0xFF
441 4FBF SBCI R27,0xFF
442 9508 RET
pop_xgsetF0FC:
443 90A9 LD R10,Y+
444 90B9 LD R11,Y+
445 90C9 LD R12,Y+
446 90D9 LD R13,Y+
447 90E9 LD R14,Y+
448 90F9 LD R15,Y+
449 9149 LD R20,Y+
44A 9159 LD R21,Y+
44B 9169 LD R22,Y+
44C 9179 LD R23,Y+
44D 9508 RET
push_xgsetF0FC:
44E 937A ST R23,-Y
44F 936A ST R22,-Y
push_xgset30FC:
450 935A ST R21,-Y
451 934A ST R20,-Y
push_xgset00FC:
452 92FA ST R15,-Y
453 92EA ST R14,-Y
push_xgset003C:
454 92DA ST R13,-Y
455 92CA ST R12,-Y
456 92BA ST R11,-Y
457 92AA ST R10,-Y
458 9508 RET
push_xgsetF000:
459 937A ST R23,-Y
45A 936A ST R22,-Y
45B 935A ST R21,-Y
45C 934A ST R20,-Y
45D 9508 RET
pop_xgsetF000:
45E 9149 LD R20,Y+
45F 9159 LD R21,Y+
460 9169 LD R22,Y+
461 9179 LD R23,Y+
462 9508 RET
neg32:
463 9500 COM R16
464 9510 COM R17
465 9520 COM R18
466 9530 COM R19
467 5F0F SUBI R16,0xFF
468 4F1F SBCI R17,0xFF
469 4F2F SBCI R18,0xFF
46A 4F3F SBCI R19,0xFF
46B 9508 RET
lpm32:
46C 93EA ST R30,-Y
46D 93FA ST R31,-Y
46E 920A ST R0,-Y
46F 2FE0 MOV R30,R16
470 2FF1 MOV R31,R17
471 95C8 LPM
472 2D00 MOV R16,R0
473 9631 ADIW R30,1
474 95C8 LPM
475 2D10 MOV R17,R0
476 9631 ADIW R30,1
477 95C8 LPM
478 2D20 MOV R18,R0
479 9631 ADIW R30,1
47A 95C8 LPM
47B 2D30 MOV R19,R0
47C 9009 LD R0,Y+
47D 91F9 LD R31,Y+
47E 91E9 LD R30,Y+
47F 9508 RET
lsl8:
480 2311 TST R17
481 F019 BEQ 0x0485
482 0F00 LSL R16
483 951A DEC R17
484 CFFB RJMP lsl8
485 9508 RET
fpsub:
486 9468 BSET 6
487 C001 RJMP fpadd_alt
fpadd:
488 94E8 BCLR 6
fpadd_alt:
489 940E 067E CALL saveR8toR25
48B 940E 0614 CALL unpacks
48D F409 BNE 0x048F
48E C047 RJMP 0x04D6
48F 2EE6 MOV R14,R22
490 2ED5 MOV R13,R21
491 2EC4 MOV R12,R20
492 2EB3 MOV R11,R19
493 2EA2 MOV R10,R18
494 2E91 MOV R9,R17
495 2E80 MOV R8,R16
496 8100 LDD R16,Z+0
497 8111 LDD R17,Z+1
498 8122 LDD R18,Z+2
499 8133 LDD R19,Z+3
49A 940E 0614 CALL unpacks
49C F409 BNE 0x049E
49D C043 RJMP 0x04E1
49E 2F84 MOV R24,R20
49F 2F95 MOV R25,R21
4A0 198C SUB R24,R12
4A1 099D SBC R25,R13
4A2 F0B9 BEQ 0x04BA
4A3 F472 BPL 0x04B2
4A4 9590 COM R25
4A5 9580 COM R24
4A6 9601 ADIW R24,1
4A7 2D4C MOV R20,R12
4A8 2D5D MOV R21,R13
4A9 3188 CPI R24,0x18
4AA F5B0 BCC 0x04E1
4AB 9535 ASR R19
4AC 9527 ROR R18
4AD 9517 ROR R17
4AE 9507 ROR R16
4AF 9701 SBIW R24,1
4B0 F7D1 BNE 0x04AB
4B1 C008 RJMP 0x04BA
4B2 3188 CPI R24,0x18
4B3 F510 BCC 0x04D6
4B4 94B5 ASR R11
4B5 94A7 ROR R10
4B6 9497 ROR R9
4B7 9487 ROR R8
4B8 9701 SBIW R24,1
4B9 F7D1 BNE 0x04B4
4BA 2766 CLR R22
4BB F02E BRTS 0x04C1
4BC 0D08 ADD R16,R8
4BD 1D19 ADC R17,R9
4BE 1D2A ADC R18,R10
4BF 1D3B ADC R19,R11
4C0 C009 RJMP 0x04CA
4C1 1A80 SUB R8,R16
4C2 0A91 SBC R9,R17
4C3 0AA2 SBC R10,R18
4C4 0AB3 SBC R11,R19
4C5 2D08 MOV R16,R8
4C6 2D19 MOV R17,R9
4C7 2D2A MOV R18,R10
4C8 2D3B MOV R19,R11
4C9 2333 TST R19
4CA F41A BPL 0x04CE
4CB 940E 0463 CALL neg32
4CD E860 LDI R22,0x80
4CE 940E 0639 CALL normalize_and_pack
4D0 C002 RJMP 0x04D3
4D1 940E 0667 CALL pack
4D3 940E 068D CALL restoreR8toR25
4D5 9508 RET
4D6 8100 LDD R16,Z+0
4D7 8111 LDD R17,Z+1
4D8 8122 LDD R18,Z+2
4D9 8133 LDD R19,Z+3
4DA F7C6 BRTC 0x04D3
4DB 940E 061C CALL tstR16_R19
4DD F3A9 BEQ 0x04D3
4DE E840 LDI R20,0x80
4DF 2734 EOR R19,R20
4E0 CFF2 RJMP 0x04D3
4E1 2D08 MOV R16,R8
4E2 2D19 MOV R17,R9
4E3 2D2A MOV R18,R10
4E4 2D3B MOV R19,R11
4E5 2D4C MOV R20,R12
4E6 2D5D MOV R21,R13
4E7 2D6E MOV R22,R14
4E8 2333 TST R19
4E9 F73A BPL 0x04D1
4EA 940E 0463 CALL neg32
4EC E860 LDI R22,0x80
4ED CFE3 RJMP 0x04D1
fpadd1:
4EE 93FA ST R31,-Y
4EF 93EA ST R30,-Y
4F0 81EA LDD R30,Y+2
4F1 81FB LDD R31,Y+3
4F2 940E 0488 CALL fpadd
4F4 91E9 LD R30,Y+
4F5 91F9 LD R31,Y+
4F6 9622 ADIW R28,2
4F7 9508 RET
fpadd2:
4F8 93FA ST R31,-Y
4F9 93EA ST R30,-Y
4FA 2FEC MOV R30,R28
4FB 2FFD MOV R31,R29
4FC 9632 ADIW R30,2
4FD 940E 0488 CALL fpadd
4FF 91E9 LD R30,Y+
500 91F9 LD R31,Y+
501 9624 ADIW R28,4
502 9508 RET
fpsub1:
503 93FA ST R31,-Y
504 93EA ST R30,-Y
505 81EA LDD R30,Y+2
506 81FB LDD R31,Y+3
507 940E 0486 CALL fpsub
509 91E9 LD R30,Y+
50A 91F9 LD R31,Y+
50B 9622 ADIW R28,2
50C 9508 RET
fpsub2:
50D 93FA ST R31,-Y
50E 93EA ST R30,-Y
50F 2FEC MOV R30,R28
510 2FFD MOV R31,R29
511 9632 ADIW R30,2
512 940E 0486 CALL fpsub
514 91E9 LD R30,Y+
515 91F9 LD R31,Y+
516 9624 ADIW R28,4
517 9508 RET
fpint:
518 934A ST R20,-Y
519 935A ST R21,-Y
51A 936A ST R22,-Y
51B 940E 0624 CALL unpacku
51D F0F1 BEQ 0x053C
51E 2355 TST R21
51F F0C2 BMI 0x0538
520 314F CPI R20,0x1F
521 F4A8 BCC 0x0537
522 3147 CPI R20,0x17
523 F0C1 BEQ 0x053C
524 F450 BCC 0x052F
525 9541 NEG R20
526 5E49 SUBI R20,0xE9
527 C005 RJMP 0x052D
528 9535 ASR R19
529 9527 ROR R18
52A 9517 ROR R17
52B 9507 ROR R16
52C 954A DEC R20
52D F7D1 BNE 0x0528
52E C00D RJMP 0x053C
52F 5147 SUBI R20,0x17
530 0F00 LSL R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -