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

📄 计算器.lis

📁 八位整数的+-*/
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0134           ; void display_1(long i)         //检测一整数的位数并显示
 0134           ; {      
 0134                   .dbline 61
 0134           ;        if(i==0)show(0,0);
 0134 40E0              ldi R20,0
 0136 50E0              ldi R21,0
 0138 60E0              ldi R22,0
 013A 70E0              ldi R23,0
 013C 2E84              ldd R2,y+14
 013E 3F84              ldd R3,y+15
 0140 4888              ldd R4,y+16
 0142 5988              ldd R5,y+17
 0144 2416              cp R2,R20
 0146 3506              cpc R3,R21
 0148 4606              cpc R4,R22
 014A 5706              cpc R5,R23
 014C 21F4              brne L23
 014E           X5:
 014E                   .dbline 61
 014E 2227              clr R18
 0150 0027              clr R16
 0152 C5DF              xcall _show
 0154 5DC0              xjmp L24
 0156           L23:
 0156                   .dbline 63
 0156           ;        else
 0156           ;        {
 0156                   .dbline 64
 0156           ;               uchar t=9;
 0156 89E0              ldi R24,9
 0158 C82E              mov R12,R24
 015A                   .dbline 65
 015A           ;       uchar wei,x=0;
 015A AA24              clr R10
 015C                   .dbline 66
 015C           ;               long j=10000000;
 015C 40E8              ldi R20,128
 015E 56E9              ldi R21,150
 0160 68E9              ldi R22,152
 0162 70E0              ldi R23,0
 0164 4883              std y+0,R20
 0166 5983              std y+1,R21
 0168 6A83              std y+2,R22
 016A 7B83              std y+3,R23
 016C 27C0              xjmp L26
 016E           L25:
 016E                   .dbline 68
 016E           ;               while(x==0)             //检测i的位数
 016E           ;               {       x=(i>=j);
 016E                   .dbline 68
 016E 2880              ldd R2,y+0
 0170 3980              ldd R3,y+1
 0172 4A80              ldd R4,y+2
 0174 5B80              ldd R5,y+3
 0176 6E84              ldd R6,y+14
 0178 7F84              ldd R7,y+15
 017A 8888              ldd R8,y+16
 017C 9988              ldd R9,y+17
 017E 6214              cp R6,R2
 0180 7304              cpc R7,R3
 0182 8404              cpc R8,R4
 0184 9504              cpc R9,R5
 0186 24F0              brlt L28
 0188           X6:
 0188 81E0              ldi R24,1
 018A 90E0              ldi R25,0
 018C 7C01              movw R14,R24
 018E 02C0              xjmp L29
 0190           L28:
 0190 EE24              clr R14
 0192 FF24              clr R15
 0194           L29:
 0194 AE2C              mov R10,R14
 0196                   .dbline 69
 0196           ;                       j/=10;
 0196 4AE0              ldi R20,10
 0198 50E0              ldi R21,0
 019A 60E0              ldi R22,0
 019C 70E0              ldi R23,0
 019E 0881              ldd R16,y+0
 01A0 1981              ldd R17,y+1
 01A2 2A81              ldd R18,y+2
 01A4 3B81              ldd R19,y+3
 01A6 7A93              st -y,R23
 01A8 6A93              st -y,R22
 01AA 5A93              st -y,R21
 01AC 4A93              st -y,R20
 01AE 0E940000          xcall div32s
 01B2 0883              std y+0,R16
 01B4 1983              std y+1,R17
 01B6 2A83              std y+2,R18
 01B8 3B83              std y+3,R19
 01BA                   .dbline 70
 01BA           ;                       t--;
 01BA CA94              dec R12
 01BC                   .dbline 71
 01BC           ;               }
 01BC           L26:
 01BC                   .dbline 67
 01BC AA20              tst R10
 01BE B9F2              breq L25
 01C0           X7:
 01C0                   .dbline 73
 01C0           ;        
 01C0           ;               for(wei=0;wei<t;wei++)  //从低位到高位依次显示
 01C0 AA24              clr R10
 01C2 24C0              xjmp L33
 01C4           L30:
 01C4                   .dbline 74
 01C4           ;               {  show(wei,i%10);
 01C4                   .dbline 74
 01C4 4AE0              ldi R20,10
 01C6 50E0              ldi R21,0
 01C8 60E0              ldi R22,0
 01CA 70E0              ldi R23,0
 01CC 0E85              ldd R16,y+14
 01CE 1F85              ldd R17,y+15
 01D0 2889              ldd R18,y+16
 01D2 3989              ldd R19,y+17
 01D4 7A93              st -y,R23
 01D6 6A93              st -y,R22
 01D8 5A93              st -y,R21
 01DA 4A93              st -y,R20
 01DC 0E940000          xcall mod32s
 01E0 202F              mov R18,R16
 01E2 0A2D              mov R16,R10
 01E4 7CDF              xcall _show
 01E6                   .dbline 75
 01E6           ;              i/=10;
 01E6 4AE0              ldi R20,10
 01E8 50E0              ldi R21,0
 01EA 60E0              ldi R22,0
 01EC 70E0              ldi R23,0
 01EE 0E85              ldd R16,y+14
 01F0 1F85              ldd R17,y+15
 01F2 2889              ldd R18,y+16
 01F4 3989              ldd R19,y+17
 01F6 7A93              st -y,R23
 01F8 6A93              st -y,R22
 01FA 5A93              st -y,R21
 01FC 4A93              st -y,R20
 01FE 0E940000          xcall div32s
 0202 0E87              std y+14,R16
 0204 1F87              std y+15,R17
 0206 288B              std y+16,R18
 0208 398B              std y+17,R19
 020A                   .dbline 76
 020A           ;               }
 020A           L31:
 020A                   .dbline 73
 020A A394              inc R10
 020C           L33:
 020C                   .dbline 73
 020C AC14              cp R10,R12
 020E D0F2              brlo L30
 0210           X8:
 0210                   .dbline 77
 0210           ;       }
 0210           L24:
 0210                   .dbline -2
 0210           L22:
 0210                   .dbline 0 ; func end
 0210 2496              adiw R28,4
 0212 0E940000          xcall pop_xgsetF0FC
 0216 2496              adiw R28,4
 0218 0895              ret
 021A                   .dbsym l j 0 L
 021A                   .dbsym r x 10 c
 021A                   .dbsym r t 12 c
 021A                   .dbsym r wei 10 c
 021A                   .dbsym l i 14 L
 021A                   .dbend
 021A                   .dbfunc e display _display fV
 021A           ;              t -> R12
 021A           ;              j -> y+8
 021A           ;              x -> R10
 021A           ;            wei -> R10
 021A           ;              n -> y+4
 021A           ;              i -> y+0
 021A           ;              a -> y+22
                        .even
 021A           _display::
 021A 0E940000          xcall push_arg4
 021E 0E940000          xcall push_xgsetF0FC
 0222 2C97              sbiw R28,12
 0224                   .dbline -1
 0224                   .dbline 82
 0224           ; }
 0224           ;                       
 0224           ;       
 0224           ; void display(float a)
 0224           ; {       
 0224                   .dbline 84
 0224           ;        float n;
 0224           ;        long i=(long)a;        
 0224 0E89              ldd R16,y+22
 0226 1F89              ldd R17,y+23
 0228 288D              ldd R18,y+24
 022A 398D              ldd R19,y+25
 022C 0E940000          xcall fpint
 0230 0883              std y+0,R16
 0232 1983              std y+1,R17
 0234 2A83              std y+2,R18
 0236 3B83              std y+3,R19
 0238                   .dbline 85
 0238           ;        n=a-i;
 0238 2E88              ldd R2,y+22
 023A 3F88              ldd R3,y+23
 023C 488C              ldd R4,y+24
 023E 598C              ldd R5,y+25
 0240 0881              ldd R16,y+0
 0242 1981              ldd R17,y+1
 0244 2A81              ldd R18,y+2
 0246 3B81              ldd R19,y+3
 0248 0E940000          xcall long2fp
 024C 3A93              st -y,R19
 024E 2A93              st -y,R18
 0250 1A93              st -y,R17
 0252 0A93              st -y,R16
 0254 8101              movw R16,R2
 0256 9201              movw R18,R4
 0258 0E940000          xcall fpsub2
 025C 0C83              std y+4,R16
 025E 1D83              std y+5,R17
 0260 2E83              std y+6,R18
 0262 3F83              std y+7,R19
 0264                   .dbline 86
 0264           ;        if(n==0)display_1(i);
 0264 2C80              ldd R2,y+4
 0266 3D80              ldd R3,y+5
 0268 4E80              ldd R4,y+6
 026A 5F80              ldd R5,y+7
 026C 00E0              ldi R16,<L37
 026E 10E0              ldi R17,>L37
 0270 0E940000          xcall lpm32
 0274 3A93              st -y,R19
 0276 2A93              st -y,R18
 0278 1A93              st -y,R17
 027A 0A93              st -y,R16
 027C 8101              movw R16,R2
 027E 9201              movw R18,R4
 0280 0E940000          xcall fpcmp2
 0284 31F4              brne L35
 0286           X9:
 0286                   .dbline 86
 0286 0881              ldd R16,y+0
 0288 1981              ldd R17,y+1
 028A 2A81              ldd R18,y+2
 028C 3B81              ldd R19,y+3
 028E 4DDF              xcall _display_1
 0290 8FC0              xjmp L36
 0292           L35:
 0292                   .dbline 87
 0292           ;        else{
 0292                   .dbline 88
 0292           ;                 uchar t=9;
 0292 89E0              ldi R24,9
 0294 C82E              mov R12,R24
 0296                   .dbline 89
 0296           ;         uchar wei,x=0;
 0296 AA24              clr R10
 0298                   .dbline 90
 0298           ;                  long j=10000000;
 0298 40E8              ldi R20,128
 029A 56E9              ldi R21,150
 029C 68E9              ldi R22,152
 029E 70E0              ldi R23,0
 02A0 4887              std y+8,R20
 02A2 5987              std y+9,R21
 02A4 6A87              std y+10,R22
 02A6 7B87              std y+11,R23
 02A8 27C0              xjmp L39
 02AA           L38:
 02AA                   .dbline 93
 02AA           ;        
 02AA           ;                  while(x==0)             //检测i的位数
 02AA           ;                  {    x=(i>=j);
 02AA                   .dbline 93
 02AA 2884              ldd R2,y+8
 02AC 3984              ldd R3,y+9
 02AE 4A84              ldd R4,y+10
 02B0 5B84              ldd R5,y+11
 02B2 6880              ldd R6,y+0
 02B4 7980              ldd R7,y+1
 02B6 8A80              ldd R8,y+2
 02B8 9B80              ldd R9,y+3
 02BA 6214              cp R6,R2
 02BC 7304              cpc R7,R3
 02BE 8404              cpc R8,R4
 02C0 9504              cpc R9,R5
 02C2 24F0              brlt L41
 02C4           X10:
 02C4 81E0              ldi R24,1
 02C6 90E0              ldi R25,0
 02C8 7C01              movw R14,R24
 02CA 02C0              xjmp L42
 02CC           L41:
 02CC EE24              clr R14
 02CE FF24              clr R15
 02D0           L42:
 02D0 AE2C              mov R10,R14
 02D2                   .dbline 94
 02D2           ;                               j/=10;
 02D2 4AE0              ldi R20,10
 02D4 50E0              ldi R21,0
 02D6 60E0              ldi R22,0
 02D8 70E0              ldi R23,0
 02DA 0885              ldd R16,y+8
 02DC 1985              ldd R17,y+9
 02DE 2A85              ldd R18,y+10
 02E0 3B85              ldd R19,y+11
 02E2 7A93              st -y,R23
 02E4 6A93              st -y,R22
 02E6 5A93              st -y,R21
 02E8 4A93              st -y,R20
 02EA 0E940000          xcall div32s
 02EE 0887              std y+8,R16
 02F0 1987              std y+9,R17
 02F2 2A87              std y+10,R18
 02F4 3B87              std y+11,R19
 02F6                   .dbline 95
 02F6           ;                               t--;
 02F6 CA94              dec R12
 02F8                   .dbline 96
 02F8           ;                       }
 02F8           L39:
 02F8                   .dbline 92
 02F8 AA20              tst R10
 02FA B9F2              breq L38
 02FC           X11:
 02FC                   .dbline 98
 02FC           ;                                       
 02FC           ;                       show(8-t,10);   
 02FC 2AE0              ldi R18,10
 02FE 08E0              ldi R16,8
 0300 0C19              sub R16,R12
 0302 EDDE              xcall _show
 0304                   .dbline 99
 0304           ;                       for(wei=8-t;wei<8;wei++)  //先确定最低位在数码管的位置,然后从低位到高位依次显示
 0304 88E0              ldi R24,8
 0306 A82E              mov R10,R24
 0308 AC18              sub R10,R12
 030A 24C0              xjmp L46
 030C           L43:
 030C                   .dbline 100
 030C           ;                       {  show(wei,i%10);        //整数部分
 030C                   .dbline 100
 030C 4AE0              ldi R20,10
 030E 50E0              ldi R21,0
 0310 60E0              ldi R22,0
 0312 70E0              ldi R23,0
 0314 0881              ldd R16,y+0
 0316 1981              ldd R17,y+1
 0318 2A81              ldd R18,y+2
 031A 3B81              ldd R19,y+3
 031C 7A93              st -y,R23
 031E 6A93              st -y,R22
 0320 5A93              st -y,R21
 0322 4A93              st -y,R20
 0324 0E940000          xcall mod32s
 0328 202F              mov R18,R16
 032A 0A2D              mov R16,R10
 032C D8DE              xcall _show
 032E                   .dbline 101
 032E           ;                  i/=10;
 032E 4AE0              ldi R20,10
 0330 50E0              ldi R21,0
 0332 60E0              ldi R22,0
 0334 70E0              ldi R23,0
 0336 0881              ldd R16,y+0
 0338 1981              ldd R17,y+1
 033A 2A81              ldd R18,y+2
 033C 3B81              ldd R19,y+3
 033E 7A93              st -y,R23
 0340 6A93              st -y,R22
 0342 5A93              st -y,R21
 0344 4A93              st -y,R20
 0346 0E940000          xcall div32s
 034A 0883              std y+0,R16
 034C 1983              std y+1,R17
 034E 2A83              std y+2,R18
 0350 3B83              std y+3,R19
 0352                   .dbline 102
 0352           ;                       }
 0352           L44:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -