📄 memu.lis
字号:
.module memu.c
.area text
0000 .dbfile memu.c
0000 .dbfunc e Print _Print fV
0000 ; StartPos -> 0,X
0000 ; i -> 1,X
0000 ; Num -> 8,X
0000 ; SringP -> 6,X
0000 ; RowNO -> 5,X
0000 ; LineNo -> 4,X
0000 _Print::
0000 .dbline -1
0000 A7FE ais #-2
0002 95 tsx
0003 .dbline 15
0003 ;
0003 ; #include "Includes.h"
0003 ; /*Print:把需要显示的字符串传送给显示缓冲区---------------------------------*
0003 ; *功能:把需要显示的字符串传送给显示缓冲区从(行号LineNo,列号RowNO)开始的区域 *
0003 ; *参数:全局变量LcdShowBuff:64字节显示缓冲区(4行*16列) *
0003 ; * LineNo:在Lcd上显示的起始行号(1--4) *
0003 ; * RowNO:在Lcd上显示的起始列号(1--16) *
0003 ; * SringP:指向需在Lcd上显示的字符串的指针 *
0003 ; * Num:字符串长度 *
0003 ; *调用实例:Print(2,3,"苏州大学",8) *
0003 ; * 在第2行第3列开始显示"苏州大学"4个汉字(共8个字符) *
0003 ; *返回:无 *
0003 ; *-------------------------------------------------------------------------*/
0003 ; void Print(INT8U LineNo,INT8U RowNO,INT8U * SringP,INT8U Num)
0003 ; {
0003 .dbline 18
0003 ; INT8U i; //循环控制变量
0003 ; INT8U StartPos; //在显示缓冲区(0--63)中的起始位置
0003 ; StartPos = (LineNo-1)*16+(RowNO-1);
0003 E605 lda 5,X
0005 A001 sub #1
0007 B700 sta *__r0
0009 E604 lda 4,X
000B A001 sub #1
000D 62 nsa
000E A4F0 and #-16
0010 BB00 add *__r0
0012 F7 sta ,X
0013 .dbline 19
0013 ; for(i=0;i<Num;i++)
0013 6F01 clr 1,X
0015 203F bra L5
0017 L2:
0017 .dbline 20
0017 ; {
0017 .dbline 22
0017 ; //已超出Lcd显示缓冲区的边界,退出
0017 ; if((StartPos+i)>63) break;
0017 F6 lda ,X
0018 EB01 add 1,X
001A A13F cmp #63
001C 2302 bls L6
001E .dbline 22
001E 203C bra L4
0020 L6:
0020 .dbline 23
0020 3F00 clr *__r0
0022 E601 lda 1,X
0024 B700 sta *__r1
0026 3F00 clr *__r2
0028 F6 lda ,X
0029 BB00 add *__r1
002B B700 sta *__r1
002D B600 lda *__r2
002F B900 adc *__r0
0031 B700 sta *__r0
0033 B600 lda *__r1
0035 AB00 add #<_LcdShowBuff
0037 B700 sta *__r1
0039 B600 lda *__r0
003B A900 adc #>_LcdShowBuff
003D B700 sta *__r0
003F 3F00 clr *__r2
0041 E601 lda 1,X
0043 EB07 add 7,X
0045 B700 sta *__r3
0047 B600 lda *__r2
0049 E906 adc 6,X
004B B700 sta *__r2
004D 5500 ldhx *__r2
004F F6 lda ,x
0050 5500 ldhx *__r0
0052 F7 sta ,x
0053 95 tsx
0054 .dbline 24
0054 L3:
0054 .dbline 19
0054 6C01 inc 1,X
0056 L5:
0056 .dbline 19
0056 E601 lda 1,X
0058 E108 cmp 8,X
005A 25BB blo L2
005C L4:
005C .dbline -2
005C L1:
005C A702 ais #2
005E .dbline 0 ; func end
005E 81 rts
005F .dbsym l StartPos 0 c
005F .dbsym l i 1 c
005F .dbsym l Num 8 c
005F .dbsym l SringP 6 pc
005F .dbsym l RowNO 5 c
005F .dbsym l LineNo 4 c
005F .dbend
005F .dbfunc e Clear _Clear fV
005F ; i -> 0,X
005F _Clear::
005F .dbline -1
005F A7FF ais #-1
0061 95 tsx
0062 .dbline 32
0062 ; LcdShowBuff[StartPos+i]=SringP[i];
0062 ; }
0062 ; }
0062 ; /*Clear:清空显示缓冲区-----------------------------------------------------*
0062 ; *功能:清空显示缓冲区,把显示缓冲区的内容全部赋为空格 *
0062 ; *参数:全局变量LcdShowBuff:64字节显示缓冲区(4行*16列) *
0062 ; *返回:无 *
0062 ; *-------------------------------------------------------------------------*/
0062 ; void Clear(void)
0062 ; {
0062 .dbline 34
0062 ; INT8U i; //循环控制变量
0062 ; for(i=0;i<64;i++)
0062 7F clr ,X
0063 2014 bra L12
0065 L9:
0065 .dbline 35
0065 3F00 clr *__r0
0067 F6 lda ,X
0068 AB00 add #<_LcdShowBuff
006A B700 sta *__r1
006C B600 lda *__r0
006E A900 adc #>_LcdShowBuff
0070 B700 sta *__r0
0072 A620 lda #32
0074 5500 ldhx *__r0
0076 F7 sta ,x
0077 95 tsx
0078 L10:
0078 .dbline 34
0078 7C inc ,X
0079 L12:
0079 .dbline 34
0079 F6 lda ,X
007A A140 cmp #64
007C 25E7 blo L9
007E .dbline -2
007E L8:
007E A701 ais #1
0080 .dbline 0 ; func end
0080 81 rts
0081 .dbsym l i 0 c
0081 .dbend
0081 .dbfunc e NumFormatChange _NumFormatChange fV
0081 ; k -> 0,X
0081 ; j -> 1,X
0081 ; sign -> 2,X
0081 ; IntDataP -> 3,X
0081 ; i -> 5,X
0081 ; flag -> 12,X
0081 ; Data -> 10,X
0081 ; ReP -> 8,X
0081 _NumFormatChange::
0081 .dbline -1
0081 A7FA ais #-6
0083 95 tsx
0084 .dbline 48
0084 ; LcdShowBuff[i]=' ';
0084 ; }
0084 ; /*NumFormatChange:数据格式转换子程序---------------------------------------*
0084 ; *功能:将3个字节的压缩BCD码数据转换为5个字节可显示的ASCII码数据 *
0084 ; *参数:Data[0--2]三个字节的数据:前两个字节压缩BCD码(00 00 - 99 99) *
0084 ; * 第三字节为符号位(-、+) *
0084 ; * ReP[0--4]存放5个字节的转换结果(注意:实际是ASCII码) *
0084 ; * flag:0-设定值调整,无小数位;1-显示值调整,有一位小数位 *
0084 ; *举例:Data[0--2]:12 35 + ->ReP[0--5]:+ 1 2 3 . 5 *
0084 ; * Data[0--2]:01 92 - ->ReP[0--5]:- 1 9 . 2 *
0084 ; *返回:无 *
0084 ; *-------------------------------------------------------------------------*/
0084 ; void NumFormatChange(INT8U * ReP,INT8U * Data,INT8U flag)
0084 ; {
0084 .dbline 53
0084 ; INT8U i,j,k; //循环控制变量
0084 ; INT16U * IntDataP; //数据
0084 ; INT8U sign; //符号
0084 ; //1:得到可以显示的数据
0084 ; IntDataP=(INT16U *)Data;
0084 E60A lda 10,X
0086 E703 sta 3,X
0088 E60B lda 11,X
008A E704 sta 4,X
008C .dbline 54
008C ; sign=Data[2];
008C E60B lda 11,X
008E AB02 add #2
0090 B700 sta *__r1
0092 E60A lda 10,X
0094 A900 adc #0
0096 B700 sta *__r0
0098 5500 ldhx *__r0
009A F6 lda ,x
009B 95 tsx
009C E702 sta 2,X
009E .dbline 56
009E ;
009E ; ReP[4]=(*IntDataP)%10+'0';
009E E603 lda 3,X
00A0 EE04 ldx 4,X
00A2 87 psha
00A3 8A pulh
00A4 E601 lda 1,x
00A6 B700 sta *__r1
00A8 F6 lda ,x
00A9 95 tsx
00AA B700 sta *__r0
00AC 4E0000 mov *__r1,*__rlo
00AF 4E0000 mov *__r0,*__rhi
00B2 A60A lda #10
00B4 87 psha
00B5 4F clra
00B6 87 psha
00B7 CD0000 jsr __divmod16u
00BA 86 pula
00BB B700 sta *__r0
00BD 86 pula
00BE AB30 add #48
00C0 B700 sta *__r1
00C2 B600 lda *__r0
00C4 A900 adc #0
00C6 E609 lda 9,X
00C8 AB04 add #4
00CA B700 sta *__r3
00CC E608 lda 8,X
00CE A900 adc #0
00D0 B700 sta *__r2
00D2 B600 lda *__r1
00D4 5500 ldhx *__r2
00D6 F7 sta ,x
00D7 95 tsx
00D8 .dbline 57
00D8 ; ReP[3]=((*IntDataP)/10)%10+'0';
00D8 E603 lda 3,X
00DA EE04 ldx 4,X
00DC 87 psha
00DD 8A pulh
00DE E601 lda 1,x
00E0 B700 sta *__r1
00E2 F6 lda ,x
00E3 95 tsx
00E4 B700 sta *__r0
00E6 4E0000 mov *__r1,*__rlo
00E9 4E0000 mov *__r0,*__rhi
00EC A60A lda #10
00EE 87 psha
00EF 4F clra
00F0 87 psha
00F1 CD0000 jsr __divmod16u
00F4 A702 ais #2
00F6 4E0000 mov *__rhi,*__r0
00F9 4E0000 mov *__rlo,*__r1
00FC 4E0000 mov *__r1,*__rlo
00FF 4E0000 mov *__r0,*__rhi
0102 A60A lda #10
0104 87 psha
0105 4F clra
0106 87 psha
0107 CD0000 jsr __divmod16u
010A 86 pula
010B B700 sta *__r0
010D 86 pula
010E AB30 add #48
0110 B700 sta *__r1
0112 B600 lda *__r0
0114 A900 adc #0
0116 E609 lda 9,X
0118 AB03 add #3
011A B700 sta *__r3
011C E608 lda 8,X
011E A900 adc #0
0120 B700 sta *__r2
0122 B600 lda *__r1
0124 5500 ldhx *__r2
0126 F7 sta ,x
0127 95 tsx
0128 .dbline 58
0128 ; ReP[2]=((*IntDataP)/100)%10+'0';
0128 E603 lda 3,X
012A EE04 ldx 4,X
012C 87 psha
012D 8A pulh
012E E601 lda 1,x
0130 B700 sta *__r1
0132 F6 lda ,x
0133 95 tsx
0134 B700 sta *__r0
0136 4E0000 mov *__r1,*__rlo
0139 4E0000 mov *__r0,*__rhi
013C A664 lda #100
013E 87 psha
013F 4F clra
0140 87 psha
0141 CD0000 jsr __divmod16u
0144 A702 ais #2
0146 4E0000 mov *__rhi,*__r0
0149 4E0000 mov *__rlo,*__r1
014C 4E0000 mov *__r1,*__rlo
014F 4E0000 mov *__r0,*__rhi
0152 A60A lda #10
0154 87 psha
0155 4F clra
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -