?? simpleio.lis
字號:
0138 E0E0 ldi R30,0
013A 9E07 cpc R25,R30
013C 51F0 breq L40
013E .dbline 109
013E ; {
013E .dbline 110
013E ; digit = uvalue % radix ;
013E 9C01 movw R18,R24
0140 8A01 movw R16,R20
0142 00D0 rcall mod16u
0144 B801 movw R22,R16
0146 .dbline 111
0146 ; uvalue = uvalue / radix ;
0146 2CA9 ldd R18,y+52
0148 3DA9 ldd R19,y+53
014A 8A01 movw R16,R20
014C 00D0 rcall div16u
014E A801 movw R20,R16
0150 .dbline 112
0150 ; }
0150 0DC0 rjmp L41
0152 L40:
0152 .dbline 114
0152 ; else
0152 ; {
0152 .dbline 115
0152 ; digit = uvalue & 0xf;
0152 BA01 movw R22,R20
0154 6F70 andi R22,15
0156 7070 andi R23,0
0158 .dbline 116
0158 ; uvalue = uvalue >> 4;
0158 1A01 movw R2,R20
015A 3694 lsr R3
015C 2794 ror R2
015E 3694 lsr R3
0160 2794 ror R2
0162 3694 lsr R3
0164 2794 ror R2
0166 3694 lsr R3
0168 2794 ror R2
016A A101 movw R20,R2
016C .dbline 117
016C ; }
016C L41:
016C .dbline 118
016C ; buffer[bi] = digit + ((digit <= 9) ? '0' : ('A' - 10));
016C 89E0 ldi R24,9
016E 90E0 ldi R25,0
0170 8617 cp R24,R22
0172 9707 cpc R25,R23
0174 1CF0 brlt L42
0176 80E3 ldi R24,48
0178 5C01 movw R10,R24
017A 03C0 rjmp L43
017C L42:
017C 87E3 ldi R24,55
017E 90E0 ldi R25,0
0180 5C01 movw R10,R24
0182 L43:
0182 1B01 movw R2,R22
0184 2A0C add R2,R10
0186 3B1C adc R3,R11
0188 CE01 movw R24,R28
018A F201 movw R30,R4
018C E80F add R30,R24
018E F91F adc R31,R25
0190 2082 std z+0,R2
0192 .dbline 119
0192 ; bi++;
0192 C201 movw R24,R4
0194 0196 adiw R24,1
0196 2C01 movw R4,R24
0198 .dbline 121
0198 ;
0198 ; if (uvalue != 0)
0198 4030 cpi R20,0
019A 4507 cpc R20,R21
019C 09F4 brne X7
019E 36C0 rjmp L44
01A0 X7:
01A0 X1:
01A0 .dbline 122
01A0 ; {
01A0 .dbline 123
01A0 ; if ((radix==10)&&((bi==3)||(bi==7)||(bi==11)|(bi==15)))
01A0 8CA9 ldd R24,y+52
01A2 9DA9 ldd R25,y+53
01A4 8A30 cpi R24,10
01A6 E0E0 ldi R30,0
01A8 9E07 cpc R25,R30
01AA 09F0 breq X8
01AC 2FC0 rjmp L46
01AE X8:
01AE C201 movw R24,R4
01B0 8330 cpi R24,3
01B2 E0E0 ldi R30,0
01B4 9E07 cpc R25,R30
01B6 01F1 breq L49
01B8 8730 cpi R24,7
01BA E0E0 ldi R30,0
01BC 9E07 cpc R25,R30
01BE E1F0 breq L49
01C0 8B30 cpi R24,11
01C2 E0E0 ldi R30,0
01C4 9E07 cpc R25,R30
01C6 21F4 brne L50
01C8 81E0 ldi R24,1
01CA 90E0 ldi R25,0
01CC 5C01 movw R10,R24
01CE 02C0 rjmp L51
01D0 L50:
01D0 AA24 clr R10
01D2 BB24 clr R11
01D4 L51:
01D4 C201 movw R24,R4
01D6 8F30 cpi R24,15
01D8 E0E0 ldi R30,0
01DA 9E07 cpc R25,R30
01DC 21F4 brne L52
01DE 81E0 ldi R24,1
01E0 90E0 ldi R25,0
01E2 6C01 movw R12,R24
01E4 02C0 rjmp L53
01E6 L52:
01E6 CC24 clr R12
01E8 DD24 clr R13
01EA L53:
01EA 1501 movw R2,R10
01EC 2C28 or R2,R12
01EE 3D28 or R3,R13
01F0 2220 tst R2
01F2 11F4 brne X2
01F4 3320 tst R3
01F6 51F0 breq L46
01F8 X2:
01F8 L49:
01F8 .dbline 124
01F8 ; {
01F8 .dbline 125
01F8 ; buffer[bi++]=',';
01F8 1201 movw R2,R4
01FA C101 movw R24,R2
01FC 0196 adiw R24,1
01FE 2C01 movw R4,R24
0200 CE01 movw R24,R28
0202 F101 movw R30,R2
0204 E80F add R30,R24
0206 F91F adc R31,R25
0208 8CE2 ldi R24,44
020A 8083 std z+0,R24
020C .dbline 126
020C ; }
020C L46:
020C .dbline 127
020C ; }
020C L44:
020C .dbline 128
020C L38:
020C .dbline 128
020C ; } while (uvalue != 0);
020C 4030 cpi R20,0
020E 4507 cpc R20,R21
0210 09F0 breq X9
0212 8FCF rjmp L37
0214 X9:
0214 X3:
0214 .dbline 130
0214 ;
0214 ; if (negative) {
0214 EE20 tst R14
0216 11F4 brne X4
0218 FF20 tst R15
021A 49F0 breq L54
021C X4:
021C .dbline 130
021C .dbline 131
021C ; buffer[bi] = '-';
021C CE01 movw R24,R28
021E F201 movw R30,R4
0220 E80F add R30,R24
0222 F91F adc R31,R25
0224 8DE2 ldi R24,45
0226 8083 std z+0,R24
0228 .dbline 132
0228 ; bi += 1;
0228 C201 movw R24,R4
022A 0196 adiw R24,1
022C 2C01 movw R4,R24
022E .dbline 133
022E ; }
022E L54:
022E .dbline 134
022E ; if (width <= bi)
022E 0EA8 ldd R0,y+54
0230 1FA8 ldd R1,y+55
0232 4014 cp R4,R0
0234 5104 cpc R5,R1
0236 44F0 brlt L56
0238 .dbline 135
0238 ; {
0238 .dbline 136
0238 ; PutStringReverse(buffer, bi);
0238 9201 movw R18,R4
023A 8E01 movw R16,R28
023C 2F93 push R18
023E 3F93 push R19
0240 1ADF rcall _PutStringReverse
0242 5F90 pop R5
0244 4F90 pop R4
0246 .dbline 137
0246 ; }
0246 21C0 rjmp L57
0248 L56:
0248 .dbline 139
0248 ; else
0248 ; {
0248 .dbline 140
0248 ; width -= bi;
0248 0EA8 ldd R0,y+54
024A 1FA8 ldd R1,y+55
024C 0418 sub R0,R4
024E 1508 sbc R1,R5
0250 1FAA std y+55,R1
0252 0EAA std y+54,R0
0254 .dbline 141
0254 ; if (!left) PutRepChar(fill, width);
0254 08A4 ldd R0,y+40
0256 19A4 ldd R1,y+41
0258 0020 tst R0
025A 51F4 brne L58
025C 1120 tst R1
025E 41F4 brne L58
0260 X5:
0260 .dbline 141
0260 2EA9 ldd R18,y+54
0262 3FA9 ldd R19,y+55
0264 08AD ldd R16,y+56
0266 4F92 push R4
0268 5F92 push R5
026A F6DE rcall _PutRepChar
026C 5F90 pop R5
026E 4F90 pop R4
0270 L58:
0270 .dbline 142
0270 ; PutStringReverse(buffer, bi);
0270 9201 movw R18,R4
0272 8E01 movw R16,R28
0274 00DF rcall _PutStringReverse
0276 .dbline 143
0276 ; if (left) PutRepChar(fill, width);
0276 08A4 ldd R0,y+40
0278 19A4 ldd R1,y+41
027A 0020 tst R0
027C 11F4 brne X6
027E 1120 tst R1
0280 21F0 breq L60
0282 X6:
0282 .dbline 143
0282 2EA9 ldd R18,y+54
0284 3FA9 ldd R19,y+55
0286 08AD ldd R16,y+56
0288 E7DE rcall _PutRepChar
028A L60:
028A .dbline 144
028A L57:
028A .dbline -2
028A L25:
028A AA96 adiw R28,42
028C 00D0 rcall pop_gset5
028E 2296 adiw R28,2
0290 .dbline 0 ; func end
0290 0895 ret
0292 .dbsym r negative 14 S
0292 .dbsym l left 40 S
0292 .dbsym l buffer 0 A[40:40]c
0292 .dbsym r digit 22 S
0292 .dbsym r bi 4 I
0292 .dbsym r uvalue 20 i
0292 .dbsym l fill 56 c
0292 .dbsym l width 54 I
0292 .dbsym l radix 52 I
0292 .dbsym r value 22 I
0292 .dbend
0292 .dbfunc s FormatItem _FormatItem fpc
0292 ; fill -> R14
0292 ; leftjust -> R20,R21
0292 ; fieldwidth -> y+3
0292 ; radix -> R10,R11
0292 ; c -> R12
0292 ; a -> y+17
0292 ; f -> y+15
.even
0292 _FormatItem:
0292 00D0 rcall push_arg4
0294 00D0 rcall push_gset5
0296 2597 sbiw R28,5
0298 .dbline -1
0298 .dbline 149
0298 ; }
0298 ; }
0298 ;
0298 ;
0298 ; static char *FormatItem(char *f, int a)
0298 ; {
0298 .dbline 151
0298 ; char c;
0298 ; int fieldwidth = 0;
0298 0024 clr R0
029A 1124 clr R1
029C 1C82 std y+4,R1
029E 0B82 std y+3,R0
02A0 .dbline 152
02A0 ; int leftjust = FALSE;
02A0 4427 clr R20
02A2 5527 clr R21
02A4 .dbline 153
02A4 ; int radix = 0;
02A4 AA24 clr R10
02A6 BB24 clr R11
02A8 .dbline 154
02A8 ; char fill = ' ';
02A8 80E2 ldi R24,32
02AA E82E mov R14,R24
02AC .dbline 156
02AC ;
02AC ; if (*f == '0') fill = '0';
02AC EF85 ldd R30,y+15
02AE F889 ldd R31,y+16
02B0 8081 ldd R24,z+0
02B2 8033 cpi R24,48
02B4 09F0 breq X18
02B6 D1C0 rjmp L66
02B8 X18:
02B8 .dbline 156
02B8 80E3 ldi R24,48
02BA E82E mov R14,R24
02BC CEC0 rjmp L66
02BE L65:
02BE .dbline 158
02BE ; while ((c = *f++)!=0)
02BE ; {
02BE .dbline 159
02BE ; if (c >= '0' && c <= '9')
02BE 8C2D mov R24,R12
02C0 8033 cpi R24,48
02C2 88F0 brlo L68
02C4 89E3 ldi R24,57
02C6 8C15 cp R24,R12
02C8 70F0 brlo L68
02CA .dbline 160
02CA ; {
02CA .dbline 161
02CA ; fieldwidth = (fieldwidth * 10) + (c - '0');
02CA 0AE0 ldi R16,10
02CC 10E0 ldi R17,0
02CE 2B81 ldd R18,y+3
02D0 3C81 ldd R19,y+4
02D2 00D0 rcall empy16s
02D4 1801 movw R2,R16
02D6 8C2D mov R24,R12
02D8 9927 clr R25
02DA C097 sbiw R24,48
02DC 280E add R2,R24
02DE 391E adc R3,R25
02E0 3C82 std y+4,R3
02E2 2B82 std y+3,R2
02E4 .dbline 162
02E4 ; }
02E4 B5C0 rjmp L69
02E6 L68:
02E6 .dbline 164
02E6 ; else
02E6 ; {
02E6 .dbline 165
02E6 ; switch (c)
02E6 6C2D mov R22,R12
02E8 7727 clr R23
02EA 6835 cpi R22,88
02EC E0E0 ldi R30,0
02EE 7E07 cpc R23,R30
02F0 09F4 brne X19
02F2 A3C0 rjmp L93
02F4 X19:
02F4 88E5 ldi R24,88
02F6 90E0 ldi R25,0
02F8 8617 cp R24,R22
02FA 9707 cpc R25,R23
02FC ACF0 brlt L96
02FE L95:
02FE 6532 cpi R22,37
0300 E0E0 ldi R30,0
0302 7E07 cpc R23,R30
0304 09F4 brne X20
0306 46C0 rjmp L74
0308 X20:
0308 85E2 ldi R24,37
030A 90E0 ldi R25,0
030C 8617 cp R24,R22
030E 9707 cpc R25,R23
0310 2CF0 brlt L98
0312 L97:
0312 6030 cpi R22,0
0314 6707 cpc R22,R23
0316 09F4 brne X21
0318 36C0 rjmp L73
031A X21:
031A X10:
031A 97C0 rjmp L70
031C L98:
031C 6D32 cpi R22,45
031E E0E0 ldi R30,0
0320 7E07 cpc R23,R30
0322 09F4 brne X22
0324 3CC0 rjmp L75
0326 X22:
0326 91C0 rjmp L70
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -