⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 计算器.lst

📁 八位整数的+-*/
💻 LST
📖 第 1 页 / 共 4 页
字号:
     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 + -