📄 vectors08.lis
字号:
.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 + -