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

📄 vectors08.lis

📁 基于HC908GP32的计算器完整程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module vectors08.c
                        .area data
 0000           _n::
 0000                   .blkb 32
                        .area idata
 0000 20202020202020202020202020202020  .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
 0010 20202020202020202020202020202020  .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
                        .area data
 0020           _s1::
 0020                   .blkb 1
                        .area idata
 0020 00                .byte 0
                        .area data
 0021           _t::
 0021                   .blkb 1
                        .area idata
 0021 00                .byte 0
                        .area data
                        .area text
                ;              m -> 2,X
 0000           _result::
 0000 95                tsx
 0001 3F4C              clr *_i1
 0003 2020              bra L5
 0005           L2:
 0005 3F00              clr *__r0
 0007 B64C              lda *_i1
 0009 B700              sta *__r1
 000B 3800              lsl *__r1
 000D 3900              rol *__r0
 000F B600              lda *__r1
 0011 AB02              add #<_r
 0013 B700              sta *__r1
 0015 B600              lda *__r0
 0017 A902              adc #>_r
 0019 B700              sta *__r0
 001B 4F                clra
 001C 5500              ldhx *__r0
 001E F7                sta ,x
 001F 4F                clra
 0020 E701              sta 1,x
 0022 95                tsx
 0023           L3:
 0023 3C4C              inc *_i1
 0025           L5:
 0025           ; /*-----------------------------------------------------*
 0025           ; *文件名:vectors08.c                                    *
 0025           ; *功  能:用于定义中断矢量表                             *
 0025           ; *-----------------------------------------------------*/
 0025           ; /*[头文件]*/
 0025           ; #include "GP32C.H"        
 0025           ; #include "KB.h"           
 0025           ; #include "SCI.h"
 0025           ; #pragma interrupt_handler isrKBI
 0025           ; int result(unsigned char m[]);
 0025           ; extern void lcdshow(unsigned char *str);
 0025           ; extern void LcdInit(void);
 0025           ; extern void Lcd_Command(unsigned char cmd);
 0025           ; unsigned char n[32]={"                                "};
 0025           ; unsigned char m[32];
 0025           ; unsigned char mn[32];
 0025           ; unsigned char KB_valve,i,s2,x,t1,s1=0,t=0;
 0025           ; int  mm; 
 0025           ; unsigned char i1,i2,i3,i4,i41,i42,i5,i6,i7,i8,i9;
 0025           ; unsigned char sign1[16],sign2[16];
 0025           ; int r[16];
 0025           ; int res;
 0025           ; int result(unsigned char m[])
 0025           ; {
 0025           ; for(i1=0;i1<16;i1++)r[i1]=0;
 0025 B64C              lda *_i1
 0027 A110              cmp #16
 0029 25DA              blo L2
 002B           ; i1=0;i2=0;i3=0;i4=0;i5=0;i6=0;i7=0;
 002B 3F4C              clr *_i1
 002D 3F4B              clr *_i2
 002F 3F4A              clr *_i3
 0031 3F49              clr *_i4
 0033 3F46              clr *_i5
 0035 3F45              clr *_i6
 0037 3F44              clr *_i7
 0039 2004              bra L7
 003B           L6:
 003B 3C4C              inc *_i1
 003D 3C4B              inc *_i2
 003F           L7:
 003F           ; while(m[i1]!='='&&m[i1]!='')
 003F 3F00              clr *__r0
 0041 B64C              lda *_i1
 0043 EB03              add 3,X
 0045 B700              sta *__r1
 0047 B600              lda *__r0
 0049 E902              adc 2,X
 004B B700              sta *__r0
 004D 5500              ldhx *__r0
 004F F6                lda ,x
 0050 B700              sta *__r1
 0052 3F00              clr *__r0
 0054 5500              ldhx *__r0
 0056 65003D            cphx #61
 0059 95                tsx
 005A 2708              beq L9
 005C 5500              ldhx *__r0
 005E 650000            cphx #0
 0061 95                tsx
 0062 26D7              bne L6
 0064           L9:
 0064           ; {i1++;i2++;}
 0064           ; if(m[0]=='-')i3=1;
 0064 E602              lda 2,X
 0066 EE03              ldx 3,X
 0068 87                psha
 0069 8A                pulh
 006A F6                lda ,x
 006B 95                tsx
 006C A12D              cmp #45
 006E 2703              beq X1
 0070 CC00F5            jmp L15
 0073           X1:
 0073 A601              lda #1
 0075 B74A              sta *_i3
 0077           ; for(;i3<=i2;i3++)
 0077 CC00F5            jmp L15
 007A           L12:
 007A           ; {if(m[i3]=='+'||m[i3]=='-'||m[i3]=='*'||m[i3]=='/'||m[i3]=='=')
 007A 3F00              clr *__r0
 007C B64A              lda *_i3
 007E EB03              add 3,X
 0080 B700              sta *__r1
 0082 B600              lda *__r0
 0084 E902              adc 2,X
 0086 B700              sta *__r0
 0088 5500              ldhx *__r0
 008A F6                lda ,x
 008B B700              sta *__r1
 008D 3F00              clr *__r0
 008F 5500              ldhx *__r0
 0091 65002B            cphx #43
 0094 95                tsx
 0095 2720              beq L21
 0097 5500              ldhx *__r0
 0099 65002D            cphx #45
 009C 95                tsx
 009D 2718              beq L21
 009F 5500              ldhx *__r0
 00A1 65002A            cphx #42
 00A4 95                tsx
 00A5 2710              beq L21
 00A7 5500              ldhx *__r0
 00A9 65002F            cphx #47
 00AC 95                tsx
 00AD 2708              beq L21
 00AF 5500              ldhx *__r0
 00B1 65003D            cphx #61
 00B4 95                tsx
 00B5 263C              bne L16
 00B7           L21:
 00B7 3F00              clr *__r0
 00B9 B64A              lda *_i3
 00BB EB03              add 3,X
 00BD B700              sta *__r1
 00BF B600              lda *__r0
 00C1 E902              adc 2,X
 00C3 B700              sta *__r0
 00C5 5500              ldhx *__r0
 00C7 F6                lda ,x
 00C8 B700              sta *__r1
 00CA 3F00              clr *__r2
 00CC B649              lda *_i4
 00CE AB32              add #<_sign1
 00D0 B700              sta *__r3
 00D2 B600              lda *__r2
 00D4 A932              adc #>_sign1
 00D6 B700              sta *__r2
 00D8 B600              lda *__r1
 00DA 5500              ldhx *__r2
 00DC F7                sta ,x
 00DD 3F00              clr *__r0
 00DF B649              lda *_i4
 00E1 AB22              add #<_sign2
 00E3 B700              sta *__r1
 00E5 B600              lda *__r0
 00E7 A922              adc #>_sign2
 00E9 B700              sta *__r0
 00EB B64A              lda *_i3
 00ED 5500              ldhx *__r0
 00EF F7                sta ,x
 00F0 95                tsx
 00F1 3C49              inc *_i4
 00F3           L16:
 00F3           L13:
 00F3 3C4A              inc *_i3
 00F5           L15:
 00F5 B64A              lda *_i3
 00F7 B14B              cmp *_i2
 00F9 2203              bhi X2
 00FB CC007A            jmp L12
 00FE           X2:
 00FE           ; {sign1[i4]=m[i3];sign2[i4]=i3;i4++;}}
 00FE           ; i41=i4;i42=i4;
 00FE 4E4948            mov *_i4,*_i41
 0101 4E4947            mov *_i4,*_i42
 0104           ; if(m[0]=='-')i5=1;
 0104 E602              lda 2,X
 0106 EE03              ldx 3,X
 0108 87                psha
 0109 8A                pulh
 010A F6                lda ,x
 010B 95                tsx
 010C A12D              cmp #45
 010E 2703              beq X3
 0110 CC01A7            jmp L25
 0113           X3:
 0113 A601              lda #1
 0115 B746              sta *_i5
 0117 CC01A7            jmp L25
 011A           X0:
 011A           ; while(i41--)
 011A           ; { 
 011A           ; for(;i5<sign2[i6];i5++)
 011A           L27:
 011A 3F00              clr *__r0
 011C B644              lda *_i7
 011E B700              sta *__r1
 0120 3800              lsl *__r1
 0122 3900              rol *__r0
 0124 B600              lda *__r1
 0126 AB02              add #<_r
 0128 B700              sta *__r1
 012A B600              lda *__r0
 012C A902              adc #>_r
 012E B700              sta *__r0
 0130 3F00              clr *__r2
 0132 B646              lda *_i5
 0134 EB03              add 3,X
 0136 B700              sta *__r3
 0138 B600              lda *__r2
 013A E902              adc 2,X
 013C B700              sta *__r2
 013E 5500              ldhx *__r2
 0140 F6                lda ,x
 0141 B700              sta *__r3
 0143 3F00              clr *__r2
 0145 5500              ldhx *__r0
 0147 E601              lda 1,x
 0149 B700              sta *__r5
 014B F6                lda ,x
 014C B700              sta *__r4
 014E A60A              lda #10
 0150 87                psha
 0151 4F                clra
 0152 87                psha
 0153 B600              lda *__r5
 0155 87                psha
 0156 B600              lda *__r4
 0158 87                psha
 0159 CD0000            jsr __mul16
 015C A704              ais #4
 015E 4E0000            mov *__rlo,*__r5
 0161 4E0000            mov *__rhi,*__r4
 0164 B600              lda *__r5
 0166 BB00              add *__r3
 0168 B700              sta *__r3
 016A B600              lda *__r4
 016C B900              adc *__r2
 016E B700              sta *__r2
 0170 B600              lda *__r3
 0172 A030              sub #48
 0174 B700              sta *__r3
 0176 B600              lda *__r2
 0178 A200              sbc #0
 017A 5500              ldhx *__r0
 017C F7                sta ,x
 017D B600              lda *__r3
 017F E701              sta 1,x
 0181 95                tsx
 0182           L28:
 0182 3C46              inc *_i5
 0184           L30:
 0184 3F00              clr *__r0
 0186 B645              lda *_i6
 0188 AB22              add #<_sign2
 018A B700              sta *__r1
 018C B600              lda *__r0
 018E A922              adc #>_sign2
 0190 B700              sta *__r0
 0192 5500              ldhx *__r0
 0194 F6                lda ,x
 0195 95                tsx
 0196 B700              sta *__r1
 0198 B646              lda *_i5
 019A B100              cmp *__r1
 019C 2403              bhs X4
 019E CC011A            jmp L27
 01A1           X4:
 01A1 3C46              inc *_i5
 01A3 3C45              inc *_i6
 01A5 3C44              inc *_i7
 01A7           L25:
 01A7 3F00              clr *__r0
 01A9 B648              lda *_i41
 01AB B700              sta *__r1
 01AD A001              sub #1
 01AF B700              sta *__r3
 01B1 B600              lda *__r0
 01B3 A200              sbc #0
 01B5 4E0048            mov *__r3,*_i41
 01B8 5500              ldhx *__r0
 01BA 650000            cphx #0
 01BD 95                tsx
 01BE 26C4              bne L30
 01C0           ; r[i7]=r[i7]*10+m[i5]-'0';
 01C0           ; i5++;i6++;i7++;
 01C0           ; }
 01C0           ; if(m[0]=='-')r[0]=0-r[0];
 01C0 E602              lda 2,X
 01C2 EE03              ldx 3,X
 01C4 87                psha
 01C5 8A                pulh
 01C6 F6                lda ,x
 01C7 95                tsx
 01C8 A12D              cmp #45
 01CA 260A              bne L31
 01CC 4F                clra
 01CD B003              sub *_r+1
 01CF B703              sta *_r+1
 01D1 4F                clra
 01D2 B202              sbc *_r
 01D4 B702              sta *_r
 01D6           L31:
 01D6           ; for(i8=0;i8<i42-1;i8++)
 01D6 3F43              clr *_i8
 01D8 CC039F            jmp L36
 01DB           L33:
 01DB           ; {if(sign1[i8]=='*')
 01DB 3F00              clr *__r0
 01DD B643              lda *_i8
 01DF AB32              add #<_sign1
 01E1 B700              sta *__r1
 01E3 B600              lda *__r0
 01E5 A932              adc #>_sign1
 01E7 B700              sta *__r0
 01E9 5500              ldhx *__r0
 01EB F6                lda ,x
 01EC 95                tsx
 01ED A12A              cmp #42
 01EF 2703              beq X5
 01F1 CC02BC            jmp L37
 01F4           X5:
 01F4           ; {r[i8+1]=r[i8]*r[i8+1];r[i8]=0;
 01F4 3F00              clr *__r0
 01F6 B643              lda *_i8
 01F8 B700              sta *__r1
 01FA 5500              ldhx *__r0
 01FC AF01              aix #1
 01FE 3500              sthx *__r0
 0200 3800              lsl *__r1
 0202 3900              rol *__r0
 0204 B600              lda *__r1
 0206 AB02              add #<_r
 0208 B700              sta *__r1
 020A B600              lda *__r0
 020C A902              adc #>_r
 020E B700              sta *__r0
 0210 5500              ldhx *__r0
 0212 E601              lda 1,x
 0214 B700              sta *__r3
 0216 F6                lda ,x
 0217 B700              sta *__r2
 0219 3F00              clr *__r4
 021B B643              lda *_i8
 021D B700              sta *__r5
 021F 3800              lsl *__r5
 0221 3900              rol *__r4
 0223 B600              lda *__r5
 0225 AB02              add #<_r
 0227 B700              sta *__r5
 0229 B600              lda *__r4
 022B A902              adc #>_r
 022D B700              sta *__r4
 022F 5500              ldhx *__r4
 0231 E601              lda 1,x
 0233 B700              sta *__r5
 0235 F6                lda ,x
 0236 B700              sta *__r4
 0238 B600              lda *__r5
 023A 87                psha
 023B B600              lda *__r4

⌨️ 快捷键说明

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