📄 test.lst
字号:
\ 000002D0 01E0 LDI R16,1
\ 000002D2 0093.... STS LWRD(UartTxCount),R16
201 UCR |= 0x40; /* Enable UART transmit complete interrupt */
\ 000002D6 569A SBI LOW(10),LOW(6)
\ ?0043:
202 }
203 OS_EXIT_CRITICAL();
\ 000002D8 0A93 DW LWRD(37642)
\ 000002DA 0F91 DW LWRD(37135)
\ 000002DC 0FBF DW LWRD(48911)
\ 000002DE 0991 DW LWRD(37129)
204 }
\ 000002E0 2196 ADIW R28,LOW(1)
\ 000002E2 8991 LD R24,Y+
\ 000002E4 0895 RET
\ ; c R24
\ PutString:
205
206
207 void PutString (const char *s)
208 {
\ 000002E6 .... RCALL ?PROLOGUE2_L09
\ 000002E8 802F MOV R24,R16
\ 000002EA 912F MOV R25,R17
\ ?0045:
209 while (*s != '\0') {
\ 000002EC E82F MOV R30,R24
\ 000002EE F92F MOV R31,R25
\ 000002F0 0081 LD R16,Z
\ 000002F2 0023 TST R16
\ 000002F4 29F0 BREQ ?0044
210 PutChar(*s++);
\ 000002F6 0191 LD R16,Z+
\ 000002F8 8E2F MOV R24,R30
\ 000002FA 9F2F MOV R25,R31
\ 000002FC C4DF RCALL PutChar
211 }
212 }
\ 000002FE F6CF RJMP ?0045
\ ?0044:
\ 00000300 E2E0 LDI R30,2
\ 00000302 .... RJMP ?EPILOGUE_B2_L09
\ ; s R24-R25
\ SPrintDec:
213
214
215 void SPrintDec(char *s, INT16U x, INT8U n)
216 {
\ 00000304 .... RCALL ?PROLOGUE6_L09
\ 00000306 402E MOV R4,R16
\ 00000308 512E MOV R5,R17
\ 0000030A 842F MOV R24,R20
\ 0000030C 952F MOV R25,R21
\ 0000030E BE81 LDD R27,Y+6
217 INT8U i;
218
219
220 s[n] = '\0';
\ 00000310 0027 CLR R16
\ 00000312 EB2F MOV R30,R27
\ 00000314 FF27 CLR R31
\ 00000316 E40D ADD R30,R4
\ 00000318 F11F ADC R31,R17
\ 0000031A 0083 ST Z,R16
221 for (i = 0; i < n; i++) {
\ 0000031C AA27 CLR R26
\ ?0048:
\ 0000031E AB17 CP R26,R27
\ 00000320 78F4 BRCC ?0047
222 s[n - i - 1] = '0' + (x % 10);
\ 00000322 22D0 RCALL ?0077
\ 00000324 405D SUBI R20,LOW(208)
\ 00000326 EB2F MOV R30,R27
\ 00000328 FF27 CLR R31
\ 0000032A EA1B SUB R30,R26
\ 0000032C F040 SBCI R31,LOW(0)
\ 0000032E E40D ADD R30,R4
\ 00000330 F51D ADC R31,R5
\ 00000332 3197 SBIW R30,LWRD(1)
\ 00000334 4083 ST Z,R20
223 x /= 10;
\ 00000336 18D0 RCALL ?0077
\ 00000338 802F MOV R24,R16
\ 0000033A 912F MOV R25,R17
\ 0000033C A395 INC R26
\ 0000033E EFCF RJMP ?0048
\ ?0047:
224 }
225 for (i = 0; i < (n - 1); i++) {
\ 00000340 AA27 CLR R26
\ ?0052:
\ 00000342 0B2F MOV R16,R27
\ 00000344 1127 CLR R17
\ 00000346 0150 SUBI R16,LOW(1)
\ 00000348 1040 SBCI R17,LOW(0)
\ 0000034A 3327 CLR R19
\ 0000034C A017 CP R26,R16
\ 0000034E 3107 CPC R19,R17
\ 00000350 4CF4 BRGE ?0051
226 if (s[i] == '0') {
\ 00000352 0FD0 RCALL ?0082
\ 00000354 0081 LD R16,Z
\ 00000356 0033 CPI R16,LOW(48)
\ 00000358 29F4 BRNE ?0051
227 s[i] = ' ';
\ 0000035A 00E2 LDI R16,32
\ 0000035C 0AD0 RCALL ?0082
\ 0000035E 0083 ST Z,R16
228 } else {
229 break;
\ 00000360 A395 INC R26
230 }
231 }
232 }
\ 00000362 EFCF RJMP ?0052
\ ?0051:
\ 00000364 E7E0 LDI R30,7
\ 00000366 .... RJMP ?EPILOGUE_B6_L09
\ ?0077:
\ 00000368 082F MOV R16,R24
\ 0000036A 192F MOV R17,R25
\ 0000036C 4AE0 LDI R20,LOW(10)
\ 0000036E 50E0 LDI R21,0
\ 00000370 .... RJMP ?US_DIVMOD_L02
\ ?0082:
\ 00000372 EA2F MOV R30,R26
\ 00000374 FF27 CLR R31
\ 00000376 E40D ADD R30,R4
\ 00000378 F51D ADC R31,R5
\ 0000037A 0895 RET
\ ; x R24-R25
\ ; i R26
\ ; n R27
\ ; s R4-R5
\ random:
233
234
235 INT8U random (INT8U n)
236 {
\ 0000037C .... RCALL ?PROLOGUE2_L09
\ 0000037E 802F MOV R24,R16
237 RndNext = RndNext * 1103515245 + 12345;
\ 00000380 .... LDI R30,LOW(RndNext)
\ 00000382 .... LDI R31,(RndNext >> 8)
\ 00000384 0081 LDD R16,Z+0
\ 00000386 1181 LDD R17,Z+1
\ 00000388 2281 LDD R18,Z+2
\ 0000038A 3381 LDD R19,Z+3
\ 0000038C 4DE6 LDI R20,LOW(109)
\ 0000038E 5EE4 LDI R21,LOW(78)
\ 00000390 66EC LDI R22,LOW(198)
\ 00000392 71E4 LDI R23,65
\ 00000394 .... RCALL ?L_MUL_L03
\ 00000396 075C SUBI R16,LOW(199)
\ 00000398 1F4C SBCI R17,LOW(207)
\ 0000039A 2F4F SBCI R18,LOW(255)
\ 0000039C 3F4F SBCI R19,LOW(255)
\ 0000039E .... LDI R30,LOW(RndNext)
\ 000003A0 0083 STD Z+0,R16
\ 000003A2 1183 STD Z+1,R17
\ 000003A4 2283 STD Z+2,R18
\ 000003A6 3383 STD Z+3,R19
238 return ((INT8U)(RndNext / 256) % (n + 1));
\ 000003A8 012F MOV R16,R17
\ 000003AA 1127 CLR R17
\ 000003AC 9927 CLR R25
\ 000003AE 0196 ADIW R24,LWRD(1)
\ 000003B0 482F MOV R20,R24
\ 000003B2 592F MOV R21,R25
\ 000003B4 .... RCALL ?SS_DIVMOD_L02
\ 000003B6 042F MOV R16,R20
239 }
\ 000003B8 E2E0 LDI R30,2
\ 000003BA .... RJMP ?EPILOGUE_B2_L09
\ ; n R24
\ PutDec:
240
241
242 void PutDec (INT8U x2)
243 {
\ 000003BC .... RCALL ?PROLOGUE3_L09
\ 000003BE 802F MOV R24,R16
244 INT8U x0;
245 INT8U x1;
246
247
248 x0 = (x2 % 10);
\ 000003C0 4AE0 LDI R20,10
\ 000003C2 .... RCALL ?UC_DIVMOD_L01
\ 000003C4 A42F MOV R26,R20
249 x2 /= 10;
\ 000003C6 14D0 RCALL ?0078
250 x1 = (x2 % 10);
\ 000003C8 4AE0 LDI R20,10
\ 000003CA .... RCALL ?UC_DIVMOD_L01
\ 000003CC 942F MOV R25,R20
251 x2 /= 10;
\ 000003CE 10D0 RCALL ?0078
252 if (x2) {
\ 000003D0 0023 TST R16
\ 000003D2 11F0 BREQ ?0059
253 PutChar(x2 + '0');
\ 000003D4 005D SUBI R16,LOW(208)
\ 000003D6 57DF RCALL PutChar
\ ?0059:
254 }
255 if (x1 || x2) {
\ 000003D8 9923 TST R25
\ 000003DA 11F4 BRNE ?0062
\ 000003DC 8823 TST R24
\ 000003DE 19F0 BREQ ?0061
\ ?0062:
256 PutChar(x1 + '0');
\ 000003E0 905D SUBI R25,LOW(208)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -