📄 test.lst
字号:
\ ?0041:
216 }
217 OS_EXIT_CRITICAL();
\ 0000030E 930A DW LWRD(37642)
\ 00000310 910F DW LWRD(37135)
\ 00000312 BF0F DW LWRD(48911)
\ 00000314 9109 DW LWRD(37129)
218 }
\ 00000316 9621 ADIW R28,LOW(1)
\ 00000318 9189 LD R24,Y+
\ 0000031A 9508 RET
\ ; c R24
\ PutString:
219
220
221 void PutString (const char *s)
222 {
\ 0000031C 939A ST -Y,R25
\ 0000031E 938A ST -Y,R24
\ 00000320 2F80 MOV R24,R16
\ 00000322 2F91 MOV R25,R17
\ ?0043:
223 while (*s != '\0') {
\ 00000324 2FE8 MOV R30,R24
\ 00000326 2FF9 MOV R31,R25
\ 00000328 8100 LD R16,Z
\ 0000032A 2300 TST R16
\ 0000032C F029 BREQ ?0042
224 PutChar(*s++);
\ 0000032E 9101 LD R16,Z+
\ 00000330 2F8E MOV R24,R30
\ 00000332 2F9F MOV R25,R31
\ 00000334 DFBF RCALL PutChar
225 }
226 }
\ 00000336 CFF6 RJMP ?0043
\ ?0042:
\ 00000338 9189 LD R24,Y+
\ 0000033A 9199 LD R25,Y+
\ 0000033C 9508 RET
\ ; s R24-R25
\ SPrintDec:
227
228
229 void SPrintDec(char *s, INT16U x, INT8U n)
230 {
\ 0000033E ........ CALL ?PROLOGUE6_L09
\ 00000342 2FA0 MOV R26,R16
\ 00000344 2FB1 MOV R27,R17
\ 00000346 2F84 MOV R24,R20
\ 00000348 2F95 MOV R25,R21
\ 0000034A 804E LDD R4,Y+6
231 INT8U i;
232
233
234 s[n] = '\0';
\ 0000034C E000 LDI R16,LOW(0)
\ 0000034E 2DE4 MOV R30,R4
\ 00000350 E0F0 LDI R31,LOW(0)
\ 00000352 0FEA ADD R30,R26
\ 00000354 1FF1 ADC R31,R17
\ 00000356 8300 ST Z,R16
235 for (i = 0; i < n; i++) {
\ 00000358 2455 CLR R5
\ ?0046:
\ 0000035A 1454 CP R5,R4
\ 0000035C F478 BRCC ?0045
236 s[n - i - 1] = '0' + (x % 10);
\ 0000035E D029 RCALL ?0069
\ 00000360 5D40 SUBI R20,LOW(208)
\ 00000362 2DE4 MOV R30,R4
\ 00000364 E0F0 LDI R31,LOW(0)
\ 00000366 19E5 SUB R30,R5
\ 00000368 40F0 SBCI R31,LOW(0)
\ 0000036A 0FEA ADD R30,R26
\ 0000036C 1FFB ADC R31,R27
\ 0000036E 9731 SBIW R30,LWRD(1)
\ 00000370 8340 ST Z,R20
237 x /= 10;
\ 00000372 D01F RCALL ?0069
\ 00000374 2F80 MOV R24,R16
\ 00000376 2F91 MOV R25,R17
\ 00000378 9453 INC R5
\ 0000037A CFEF RJMP ?0046
\ ?0045:
238 }
239 for (i = 0; i < (n - 1); i++) {
\ 0000037C 2455 CLR R5
\ ?0050:
\ 0000037E 2D04 MOV R16,R4
\ 00000380 E010 LDI R17,LOW(0)
\ 00000382 5001 SUBI R16,LOW(1)
\ 00000384 4010 SBCI R17,LOW(0)
\ 00000386 E030 LDI R19,LOW(0)
\ 00000388 1650 CP R5,R16
\ 0000038A 0731 CPC R19,R17
\ 0000038C F47C BRGE ?0049
240 if (s[i] == '0') {
\ 0000038E 2DE5 MOV R30,R5
\ 00000390 E0F0 LDI R31,LOW(0)
\ 00000392 0FEA ADD R30,R26
\ 00000394 1FFB ADC R31,R27
\ 00000396 8100 LD R16,Z
\ 00000398 3300 CPI R16,LOW(48)
\ 0000039A F441 BRNE ?0049
241 s[i] = ' ';
\ 0000039C E200 LDI R16,32
\ 0000039E 2DE5 MOV R30,R5
\ 000003A0 E0F0 LDI R31,LOW(0)
\ 000003A2 0FEA ADD R30,R26
\ 000003A4 1FFB ADC R31,R27
\ 000003A6 8300 ST Z,R16
242 } else {
243 break;
\ 000003A8 9453 INC R5
244 }
245 }
246 }
\ 000003AA CFE9 RJMP ?0050
\ ?0049:
\ 000003AC E0E7 LDI R30,7
\ 000003AE ........ JMP ?EPILOGUE_B6_L09
\ ?0069:
\ 000003B2 2F08 MOV R16,R24
\ 000003B4 2F19 MOV R17,R25
\ 000003B6 E04A LDI R20,LOW(10)
\ 000003B8 E050 LDI R21,0
\ 000003BA ........ JMP ?US_DIVMOD_L02
\ ; x R24-R25
\ ; i R5
\ ; n R4
\ ; s R26-R27
\ random:
247
248
249 INT8U random (INT8U n)
250 {
\ 000003BE 939A ST -Y,R25
\ 000003C0 938A ST -Y,R24
\ 000003C2 2F80 MOV R24,R16
251 RndNext = RndNext * 1103515245 + 12345;
\ 000003C4 .... LDI R30,LOW(RndNext)
\ 000003C6 .... LDI R31,(RndNext >> 8)
\ 000003C8 8100 LDD R16,Z+0
\ 000003CA 8111 LDD R17,Z+1
\ 000003CC 8122 LDD R18,Z+2
\ 000003CE 8133 LDD R19,Z+3
\ 000003D0 E64D LDI R20,LOW(109)
\ 000003D2 E45E LDI R21,LOW(78)
\ 000003D4 EC66 LDI R22,LOW(198)
\ 000003D6 E471 LDI R23,65
\ 000003D8 ........ CALL ?L_MUL_L03
\ 000003DC 5C07 SUBI R16,LOW(199)
\ 000003DE 4C1F SBCI R17,LOW(207)
\ 000003E0 4F2F SBCI R18,LOW(255)
\ 000003E2 4F3F SBCI R19,LOW(255)
\ 000003E4 .... LDI R30,LOW(RndNext)
\ 000003E6 8300 STD Z+0,R16
\ 000003E8 8311 STD Z+1,R17
\ 000003EA 8322 STD Z+2,R18
\ 000003EC 8333 STD Z+3,R19
252 return ((INT8U)(RndNext / 256) % (n + 1));
\ 000003EE 2F01 MOV R16,R17
\ 000003F0 E010 LDI R17,LOW(0)
\ 000003F2 E090 LDI R25,LOW(0)
\ 000003F4 9601 ADIW R24,LWRD(1)
\ 000003F6 2F48 MOV R20,R24
\ 000003F8 2F59 MOV R21,R25
\ 000003FA ........ CALL ?SS_DIVMOD_L02
\ 000003FE 2F04 MOV R16,R20
253 }
\ 00000400 9189 LD R24,Y+
\ 00000402 9199 LD R25,Y+
\ 00000404 9508 RET
\ ; n R24
\ PutDec:
254
255
256 void PutDec (INT8U x2)
257 {
\ 00000406 ........ CALL ?PROLOGUE3_L09
\ 0000040A 2FA0 MOV R26,R16
258 INT8U x0;
259 INT8U x1;
260
261
262 x0 = (x2 % 10);
\ 0000040C E04A LDI R20,10
\ 0000040E ........ CALL ?UC_DIVMOD_L01
\ 00000412 2F94 MOV R25,R20
263 x2 /= 10;
\ 00000414 2F0A MOV R16,R26
\ 00000416 E04A LDI R20,10
\ 00000418 ........ CALL ?UC_DIVMOD_L01
\ 0000041C 2FA0 MOV R26,R16
264 x1 = (x2 % 10);
\ 0000041E E04A LDI R20,10
\ 00000420 ........ CALL ?UC_DIVMOD_L01
\ 00000424 2F84 MOV R24,R20
265 x2 /= 10;
\ 00000426 2F0A MOV R16,R26
\ 00000428 E04A LDI R20,10
\ 0000042A ........ CALL ?UC_DIVMOD_L01
\ 0000042E 2FA0 MOV R26,R16
266 if (x2) {
\ 00000430 2300 TST R16
\ 00000432 F011 BREQ ?0057
267 PutChar(x2 + '0');
\ 00000434 5D00 SUBI R16,LOW(208)
\ 00000436 DF3E RCALL PutChar
\ ?0057:
268 }
269 if (x1 || x2) {
\ 00000438 2388 TST R24
\ 0000043A F411 BRNE ?0060
\ 0000043C 23AA TST R26
\ 0000043E F019 BREQ ?0059
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -