📄 show.lis
字号:
01A2 ; INT8U data[3];
01A2 ; INT8U redata[5];
01A2 ; INT8U line;
01A2 ; INT8U i,j;
01A2 ;
01A2 ; //数据的格式转换
01A2 ; p=(INT8U *)&showdata;
01A2 AF0F aix #15
01A4 3500 sthx *__r0
01A6 95 tsx
01A7 B600 lda *__r0
01A9 E701 sta 1,X
01AB B600 lda *__r1
01AD E702 sta 2,X
01AF .dbline 83
01AF ; data[0]=*p;
01AF E601 lda 1,X
01B1 EE02 ldx 2,X
01B3 87 psha
01B4 8A pulh
01B5 F6 lda ,x
01B6 95 tsx
01B7 E703 sta 3,X
01B9 .dbline 84
01B9 ; data[1]=*(p+1);
01B9 E602 lda 2,X
01BB AB01 add #1
01BD B700 sta *__r1
01BF E601 lda 1,X
01C1 A900 adc #0
01C3 B700 sta *__r0
01C5 5500 ldhx *__r0
01C7 F6 lda ,x
01C8 95 tsx
01C9 E704 sta 4,X
01CB .dbline 85
01CB ; data[2]=0;
01CB 6F05 clr 5,X
01CD .dbline 86
01CD ; NumFormatChange(redata,data);
01CD AF03 aix #3
01CF 89 pshx
01D0 8B pshh
01D1 95 tsx
01D2 AF09 aix #9
01D4 89 pshx
01D5 8B pshh
01D6 CD0244 jsr _NumFormatChange
01D9 A704 ais #4
01DB 95 tsx
01DC .dbline 88
01DC ; //根据showline和lrflag把转换后的数据放入缓冲区的相应位置
01DC ; if(lrflag==0)
01DC E612 lda 18,X
01DE 260B bne L7
01E0 .dbline 89
01E0 ; line=(showline-1)*16;
01E0 E611 lda 17,X
01E2 A001 sub #1
01E4 62 nsa
01E5 A4F0 and #-16
01E7 E706 sta 6,X
01E9 200B bra L8
01EB L7:
01EB .dbline 91
01EB ; else
01EB ; line=(showline-1)*16+9;
01EB E611 lda 17,X
01ED A001 sub #1
01EF 62 nsa
01F0 A4F0 and #-16
01F2 AB09 add #9
01F4 E706 sta 6,X
01F6 L8:
01F6 .dbline 92
01F6 ; for(i=0;i<5;i++)
01F6 6F0C clr 12,X
01F8 2041 bra L12
01FA L9:
01FA .dbline 93
01FA AF07 aix #7
01FC 3500 sthx *__r0
01FE 95 tsx
01FF 3F00 clr *__r2
0201 E60C lda 12,X
0203 BB00 add *__r1
0205 B700 sta *__r1
0207 B600 lda *__r2
0209 B900 adc *__r0
020B B700 sta *__r0
020D 5500 ldhx *__r0
020F F6 lda ,x
0210 95 tsx
0211 B700 sta *__r1
0213 3F00 clr *__r2
0215 E606 lda 6,X
0217 B700 sta *__r3
0219 3F00 clr *__r4
021B E60C lda 12,X
021D BB00 add *__r3
021F B700 sta *__r3
0221 B600 lda *__r4
0223 B900 adc *__r2
0225 B700 sta *__r2
0227 B600 lda *__r3
0229 EB14 add 20,X
022B B700 sta *__r3
022D B600 lda *__r2
022F E913 adc 19,X
0231 B700 sta *__r2
0233 B600 lda *__r1
0235 5500 ldhx *__r2
0237 F7 sta ,x
0238 95 tsx
0239 L10:
0239 .dbline 92
0239 6C0C inc 12,X
023B L12:
023B .dbline 92
023B E60C lda 12,X
023D A105 cmp #5
023F 25B9 blo L9
0241 .dbline -2
0241 L4:
0241 A70D ais #13
0243 .dbline 0 ; func end
0243 81 rts
0244 .dbsym l j 0 c
0244 .dbsym l p 1 pc
0244 .dbsym l data 3 A[3:3]c
0244 .dbsym l line 6 c
0244 .dbsym l redata 7 A[5:5]c
0244 .dbsym l i 12 c
0244 .dbsym l Buff 19 pc
0244 .dbsym l lrflag 18 c
0244 .dbsym l showline 17 c
0244 .dbsym l showdata 15 i
0244 .dbend
0244 .dbfunc e NumFormatChange _NumFormatChange fV
0244 ; IntDataP -> 0,X
0244 ; k -> 2,X
0244 ; j -> 3,X
0244 ; i -> 4,X
0244 ; Data -> 9,X
0244 ; ReP -> 7,X
0244 _NumFormatChange::
0244 .dbline -1
0244 A7FB ais #-5
0246 95 tsx
0247 .dbline 107
0247 ; Buff[i+line]=redata[i];
0247 ; }
0247 ; //NumFormatChange:数据格式转换子程序---------------------------------------*
0247 ; //功能:将3个字节的压缩BCD码数据转换为5个字节可显示的ASCII码数据 *
0247 ; //参数:Data[0--2]三个字节的数据:前两个字节压缩BCD码(00 00 - 99 99) *
0247 ; // 第三字节为小数点位数(0-2) *
0247 ; // ReP[0--4]存放5个字节的转换结果(注意:实际是ASCII码) *
0247 ; //举例:Data[0--2]:99 88 1 ->ReP[0--4]:9 9 8 . 8 *
0247 ; // Data[0--2]:00 87 0 ->ReP[0--4]: 8 7 *
0247 ; // Data[0--2]:02 36 2 ->ReP[0--4]: 2 . 3 6 *
0247 ; //返回:无 *
0247 ; //说明:步骤4表示若有2个及以上空格就将数据居中存放 (ZY 07.04.27) *
0247 ; //-------------------------------------------------------------------------*
0247 ; void NumFormatChange(INT8U *ReP,INT8U *Data)
0247 ; {
0247 .dbline 117
0247 ; INT8U i,j,k; //循环控制变量
0247 ; INT16U * IntDataP;
0247 ; /*
0247 ; //0.处理汉字显示
0247 ; if(Data[2]>=200)
0247 ; {ReP[0]=' ';ReP[1]=Data[1];ReP[2]=' ';
0247 ; ReP[3]=' ';ReP[4]=' ';goto NumFormatChange_End;}
0247 ; */
0247 ; //1:得到可以显示的数据
0247 ; IntDataP=(INT16U *)Data;
0247 E609 lda 9,X
0249 F7 sta ,X
024A E60A lda 10,X
024C E701 sta 1,X
024E .dbline 118
024E ; ReP[3]=(*IntDataP)%10+'0';
024E F6 lda ,X
024F EE01 ldx 1,X
0251 87 psha
0252 8A pulh
0253 E601 lda 1,x
0255 B700 sta *__r1
0257 F6 lda ,x
0258 95 tsx
0259 B700 sta *__r0
025B 4E0000 mov *__r1,*__rlo
025E 4E0000 mov *__r0,*__rhi
0261 A60A lda #10
0263 87 psha
0264 4F clra
0265 87 psha
0266 CD0000 jsr __divmod16u
0269 86 pula
026A B700 sta *__r0
026C 86 pula
026D AB30 add #48
026F B700 sta *__r1
0271 B600 lda *__r0
0273 A900 adc #0
0275 E608 lda 8,X
0277 AB03 add #3
0279 B700 sta *__r3
027B E607 lda 7,X
027D A900 adc #0
027F B700 sta *__r2
0281 B600 lda *__r1
0283 5500 ldhx *__r2
0285 F7 sta ,x
0286 95 tsx
0287 .dbline 119
0287 ; ReP[2]=((*IntDataP)/10)%10+'0';
0287 F6 lda ,X
0288 EE01 ldx 1,X
028A 87 psha
028B 8A pulh
028C E601 lda 1,x
028E B700 sta *__r1
0290 F6 lda ,x
0291 95 tsx
0292 B700 sta *__r0
0294 4E0000 mov *__r1,*__rlo
0297 4E0000 mov *__r0,*__rhi
029A A60A lda #10
029C 87 psha
029D 4F clra
029E 87 psha
029F CD0000 jsr __divmod16u
02A2 A702 ais #2
02A4 4E0000 mov *__rhi,*__r0
02A7 4E0000 mov *__rlo,*__r1
02AA 4E0000 mov *__r1,*__rlo
02AD 4E0000 mov *__r0,*__rhi
02B0 A60A lda #10
02B2 87 psha
02B3 4F clra
02B4 87 psha
02B5 CD0000 jsr __divmod16u
02B8 86 pula
02B9 B700 sta *__r0
02BB 86 pula
02BC AB30 add #48
02BE B700 sta *__r1
02C0 B600 lda *__r0
02C2 A900 adc #0
02C4 E608 lda 8,X
02C6 AB02 add #2
02C8 B700 sta *__r3
02CA E607 lda 7,X
02CC A900 adc #0
02CE B700 sta *__r2
02D0 B600 lda *__r1
02D2 5500 ldhx *__r2
02D4 F7 sta ,x
02D5 95 tsx
02D6 .dbline 120
02D6 ; ReP[1]=((*IntDataP)/100)%10+'0';
02D6 F6 lda ,X
02D7 EE01 ldx 1,X
02D9 87 psha
02DA 8A pulh
02DB E601 lda 1,x
02DD B700 sta *__r1
02DF F6 lda ,x
02E0 95 tsx
02E1 B700 sta *__r0
02E3 4E0000 mov *__r1,*__rlo
02E6 4E0000 mov *__r0,*__rhi
02E9 A664 lda #100
02EB 87 psha
02EC 4F clra
02ED 87 psha
02EE CD0000 jsr __divmod16u
02F1 A702 ais #2
02F3 4E0000 mov *__rhi,*__r0
02F6 4E0000 mov *__rlo,*__r1
02F9 4E0000 mov *__r1,*__rlo
02FC 4E0000 mov *__r0,*__rhi
02FF A60A lda #10
0301 87 psha
0302 4F clra
0303 87 psha
0304 CD0000 jsr __divmod16u
0307 86 pula
0308 B700 sta *__r0
030A 86 pula
030B AB30 add #48
030D B700 sta *__r1
030F B600 lda *__r0
0311 A900 adc #0
0313 E608 lda 8,X
0315 AB01 add #1
0317 B700 sta *__r3
0319 E607 lda 7,X
031B A900 adc #0
031D B700 sta *__r2
031F B600 lda *__r1
0321 5500 ldhx *__r2
0323 F7 sta ,x
0324 95 tsx
0325 .dbline 121
0325 ; ReP[0]=(*IntDataP)/1000+'0';
0325 F6 lda ,X
0326 EE01 ldx 1,X
0328 87 psha
0329 8A pulh
032A E601 lda 1,x
032C B700 sta *__r1
032E F6 lda ,x
032F 95 tsx
0330 B700 sta *__r0
0332 4E0000 mov *__r1,*__rlo
0335 4E0000 mov *__r0,*__rhi
0338 A6E8 lda #-24
033A 87 psha
033B A603 lda #3
033D 87 psha
033E CD0000 jsr __divmod16u
0341 A702 ais #2
0343 4E0000 mov *__rhi,*__r0
0346 4E0000 mov *__rlo,*__r1
0349 B600 lda *__r1
034B AB30 add #48
034D B700 sta *__r1
034F B600 lda *__r0
0351 A900 adc #0
0353 E608 lda 8,X
0355 B700 sta *__r3
0357 E607 lda 7,X
0359 B700 sta *__r2
035B B600 lda *__r1
035D 5500 ldhx *__r2
035F F7 sta ,x
0360 95 tsx
0361 .dbline 124
0361 ;
0361 ; //2:插入小数点
0361 ; if(Data[2]==1) //有一位小数
0361 E60A lda 10,X
0363 AB02 add #2
0365 B700 sta *__r1
0367 E609 lda 9,X
0369 A900 adc #0
036B B700 sta *__r0
036D 5500 ldhx *__r0
036F F6 lda ,x
0370 95 tsx
0371 A101 cmp #1
0373 2639 bne L14
0375 .dbline 125
0375 ; {ReP[4]=ReP[3];ReP[3]='.';}
0375 .dbline 125
0375 E608 lda 8,X
0377 AB03 add #3
0379 B700 sta *__r1
037B E607 lda 7,X
037D A900 adc #0
037F B700 sta *__r0
0381 5500 ldhx *__r0
0383 F6 lda ,x
0384 95 tsx
0385 B700 sta *__r1
0387 E608 lda 8,X
0389 AB04 add #4
038B B700 sta *__r3
038D E607 lda 7,X
038F A900 adc #0
0391 B700 sta *__r2
0393 B600 lda *__r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -