📄 lhy.asm
字号:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L73
.line 33
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,5
MAR *0+
SACL * ,AR0
L74:
.line 34
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L74
.line 36
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L75:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L75
.line 37
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L76:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L76
.line 38
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L77:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L77
.line 39
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L78:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L78
.line 40
;>>>> Lcd_wd=Dot_Type|Read_Data;
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *-
OR * ,AR1
SACL *
OUT * ,010h,AR0
L79:
.line 41
;>>>> wait();
;>>>> else
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L79
B L64
L68:
.line 46
;>>>> Dot_Type=0xff>>(X0&0x07);
LACK 7
MAR * ,AR2
AND * ,AR0
CMPL
SACL *
LT *
LACK 255
SACL *
SSXM
LACT * ,AR2
ADRK 7-LF5
SACH * ,1,AR0
.line 47
;>>>> Lcd_wc=CSRDIR_RG; wait();
LACK 76
SACL *
OUT * ,011h
L81:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L81
.line 48
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L82:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L82
.line 49
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L83:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L83
.line 50
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L84:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L84
.line 51
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L85:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L85
.line 52
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,5
MAR *0+
SACL * ,AR0
L86:
.line 53
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L86
.line 55
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L87:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L87
.line 56
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L88:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L88
.line 57
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L89:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L89
.line 58
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L90:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L90
.line 59
;>>>> Lcd_wd=Dot_Type|Read_Data;
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *-
OR * ,AR1
SACL *
OUT * ,010h,AR0
L91:
.line 60
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L91
.line 61
;>>>> for (Counter=(X0>>3);Counter<((X1>>3)-1);Counter++)
RSXM
MAR * ,AR2
LARK AR2,-3+LF5
MAR *0+
LAC * ,12
ADRK 6-LF5
SACH * ,1
SBRK 8-LF5
LAC * ,12,AR0
SBLK 1,15
SACH * ,1
ZALS * ,AR2
ADRK 8-LF5
SUBS *
BLEZ L93
MAR * ,AR0
L92:
.line 63
;>>>> Lcd_wd=0xff;
LACK 255
SACL *
OUT * ,010h
L94:
.line 64
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L94
.line 61
MAR * ,AR2
LARK AR2,3
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
SBRK 8-LF5
LAC * ,12,AR0
SBLK 1,15
SACH * ,1
ZALS * ,AR2
ADRK 8-LF5
SUBS * ,AR0
BGZ L92
L93:
.line 67
;>>>> Lcd_wc=CSRW; wait();
LACK 70
MAR * ,AR0
SACL *
OUT * ,011h
L95:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L95
.line 68
;>>>> Lcd_wd=Cursor_X+(X1>>3)-(X0>>3);
MAR * ,AR2
LARK AR2,-5+LF5
MAR *0+
LAC * ,12
ADRK 6-LF5
ADD * ,15,AR1
SACH *+,1,AR2
SBRK 4-LF5
LAC * ,12,AR1
MAR *-,AR0
SACH * ,1,AR1
LAC * ,AR0
SUB * ,AR1
SACL *
OUT * ,010h,AR0
L96:
.line 69
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L96
.line 70
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L97:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L97
.line 71
;>>>> Lcd_wc=MREAD; wait();
LACK 67
SACL *
OUT * ,011h
L98:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L98
.line 72
;>>>> Read_Data=Lcd_rd&0x00ff;
IN * ,011h
LAC * ,AR2
ANDK 255
LARK AR2,5
MAR *0+
SACL * ,AR0
L99:
.line 73
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L99
.line 75
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L100:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L100
.line 76
;>>>> Lcd_wd=Cursor_X+(X1>>3)-(X0>>3);
MAR * ,AR2
LARK AR2,-5+LF5
MAR *0+
LAC * ,12
ADRK 6-LF5
ADD * ,15,AR1
SACH *+,1,AR2
SBRK 4-LF5
LAC * ,12,AR1
MAR *-,AR0
SACH * ,1,AR1
LAC * ,AR0
SUB * ,AR1
SACL *
OUT * ,010h,AR0
L101:
.line 77
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L101
.line 78
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L102:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L102
.line 79
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L103:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L103
.line 80
;>>>> Dot_Type=(0xff<<(7-X1&0x07))&0xff;
LACK 7
MAR * ,AR2
LARK AR2,-5+LF5
MAR *0+
SUB * ,AR0
ANDK 7
SACL *
LT *
LACK 255
SACL *
LACT * ,AR2
ANDK 255
ADRK 9-LF5
SACL *
.line 81
;>>>> Lcd_wd=Dot_Type|Read_Data;
LAC *+
OR * ,AR1
SACL *
OUT * ,010h,AR0
L104:
.line 82
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L104
B L64
L65:
.line 86
;>>>> else if(abs((int)X1-(int)X0)>fabs((int)Y1-(int)Y0))
SSXM
LAC *
ADRK 2
SUB *-,AR1
CALL F$$ITOF
MAR *-
ZALS *
ANDK 07FFFh
SACL *+,AR2
SSXM
LAC *
ADRK 2
SUB * ,AR1
ABS
CALL F$$ITOF
CALL F$$GT
BZ L105
.line 88
;>>>> k=((double)Y1-(double)Y0)/((double)X1-(double)X0);
MAR * ,AR2
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
SBRK 2
ZALS *+,AR1
CALL F$$UTOF
CALL F$$SUB
MAR * ,AR2
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
SBRK 2
ZALS * ,AR1
CALL F$$UTOF
CALL F$$SUB
CALL F$$DIV
MAR *-
ZALH *-
ADDS * ,AR2
ADRK 12-LF5
SACL *+
SACH *
.line 89
;>>>> if (X0>X1)
SBRK 10-LF5
ZALS *
SBRK 2
SUBS *
BLEZ L106
.line 91
;>>>> for(Cursor_X=X1;Cursor_X<=X0;Cursor_X++)
LAC *
ADRK 6-LF5
SACL *
ZALS *
SBRK 4-LF5
SUBS *
BGZ L64
SBRK 3
L107:
.line 93
;>>>> Cursor_Y=(int)((double)(Cursor_X-X1)*k+(double)Y1);
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
ADRK 12-LF5
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+,AR2
SBRK 6
ZALS *
SBRK 6-LF5
SUBS * ,AR1
ANDK 0FFFFh
CALL F$$UTOF
CALL F$$MUL
CALL F$$ADD
CALL F$$FTOI
MAR * ,AR2
ADRK 7-LF5
SACL *
.line 94
;>>>> Lcd_Point(Cursor_X,Cursor_Y);
;>>>> else
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Point
SBRK 2
.line 91
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 4-LF5
SUBS *
SBRK 3
BLEZ L107
B L64
L106:
.line 100
;>>>> for(Cursor_X=X0;Cursor_X<=X1;Cursor_X++)
ADRK 2
LAC *
ADRK 4-LF5
SACL *
ZALS *
SBRK 6-LF5
SUBS *
BGZ L64
MAR *+
L110:
.line 102
;>>>> Cursor_Y=(int)((double)(Cursor_X-X0)*k+(double)Y0);
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
ADRK 10-LF5
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+,AR2
SBRK 6
ZALS *
SBRK 4-LF5
SUBS * ,AR1
ANDK 0FFFFh
CALL F$$UTOF
CALL F$$MUL
CALL F$$ADD
CALL F$$FTOI
MAR * ,AR2
ADRK 5-LF5
SACL *
.line 103
;>>>> Lcd_Point(Cursor_X,Cursor_Y);
;>>>> else
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Point
SBRK 2
.line 100
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 6-LF5
SUBS *+
BLEZ L110
B L64
L105:
.line 111
;>>>> k=((double)X1-(double)X0)/((double)Y1-(double)Y0);
MAR * ,AR2
MAR *-
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
SBRK 2
ZALS * ,AR1
CALL F$$UTOF
CALL F$$SUB
MAR * ,AR2
ADRK 3
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
SBRK 2
ZALS * ,AR1
CALL F$$UTOF
CALL F$$SUB
CALL F$$DIV
MAR *-
ZALH *-
ADDS * ,AR2
ADRK 11-LF5
SACL *+
SACH *
.line 112
;>>>> if (Y0>Y1)
SBRK 11-LF5
ZALS *
SBRK 2
SUBS *
BLEZ L112
.line 114
;>>>> for(Cursor_Y=Y1;Cursor_Y<=Y0;Cursor_Y++)
LAC *
ADRK 8-LF5
SACL *
ZALS *
SBRK 6-LF5
SUBS *
BGZ L64
MAR *-
L113:
.line 116
;>>>> Cursor_X=(int)((double)(Cursor_Y-Y1)*k+(double)X1);
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
ADRK 11-LF5
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+,AR2
SBRK 5
ZALS *
SBRK 8-LF5
SUBS * ,AR1
ANDK 0FFFFh
CALL F$$UTOF
CALL F$$MUL
CALL F$$ADD
CALL F$$FTOI
MAR * ,AR2
ADRK 7-LF5
SACL *+
.line 117
;>>>> Lcd_Point(Cursor_X,Cursor_Y);
;>>>> else
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Point
SBRK 2
.line 114
MAR * ,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 6-LF5
SUBS *-
BLEZ L113
B L64
L112:
.line 123
;>>>> for(Cursor_Y=Y0;Cursor_Y<=Y1;Cursor_Y++)
ADRK 2
LAC *
ADRK 6-LF5
SACL *
ZALS *
SBRK 8-LF5
SUBS *
BGZ L64
ADRK 3
L116:
.line 125
;>>>> Cursor_X=(int)((double)(Cursor_Y-Y0)*k+(double)X0);
ZALS * ,AR1
CALL F$$UTOF
MAR * ,AR2
ADRK 9-LF5
LAC *+,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+,AR2
SBRK 5
ZALS *
SBRK 6-LF5
SUBS * ,AR1
ANDK 0FFFFh
CALL F$$UTOF
CALL F$$MUL
CALL F$$ADD
CALL F$$FTOI
MAR * ,AR2
ADRK 5-LF5
SACL *+
.line 126
;>>>> Lcd_Point(Cursor_X,Cursor_Y);
LAC *-,AR1
SACL *+,AR2
LAC * ,AR1
SACL *+
CALL _Lcd_Point
SBRK 2
.line 123
MAR * ,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 8-LF5
SUBS *
ADRK 3
BLEZ L116
L64:
EPI0_5:
.line 132
MAR * ,AR1
SBRK 9
LAR AR0,*-
PSHD *
RET
.endfunc 351,000000000H,8
.sym _Lcd_Cctw,_Lcd_Cctw,32,2,0
.globl _Lcd_Cctw
.func 370
;>>>> void Lcd_Cctw(unsigned int Row,unsigned int Column,unsigned int Dot1,unsigned int Dot2,pointer *Data_Add,unsigned int Flag)
******************************************************
* FUNCTION DEF : _Lcd_Cctw
******************************************************
_Lcd_Cctw:
LF6 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _Row,-3+LF6,14,9,16
.sym _Column,-4+LF6,14,9,16
.sym _Dot1,-5+LF6,14,9,16
.sym _Dot2,-6+LF6,14,9,16
.sym _Data_Add,-7+LF6,30,9,16
.sym _Flag,-8+LF6,14,9,16
.sym _Cursor_X,1,14,1,16
.sym _Cursor_Y,2,14,1,16
.sym _Counter1,3,14,1,16
.sym _Counter2,4,14,1,16
.line 3
;>>>> unsigned int Cursor_X,Cursor_Y;
;>>>> unsigned int Counter1,Counter2;
.line 6
;>>>> Cursor_X=((Row<<3)*Lcd_AP+Column+0x4000)&0x00ff;
LARK AR2,-3+LF6
MAR *0+
LAC *-,3,AR0
SACL *
LT * ,AR2
MPYK 40
PAC
ADDK 16384
ADD *
ANDK 255
ADRK 5-LF6
SACL *
.line 7
;>>>> Cursor_Y=(((Row<<3)*Lcd_AP+Column+0x4000)&0xff00)>>8;
SBRK 4-LF6
LAC *-,3,AR0
SACL *
LT *
LACK 40
SACL *
MPYU *,AR2
PAC
ADDK 16384
ADDS * ,AR0
ANDK 65280
SACL *
RSXM
LAC * ,7,AR2
ADRK 6-LF6
SACH * ,1,AR0
.line 8
;>>>> Lcd_wc=CSRDIR_DW; wait();
LACK 79
SACL *
OUT * ,011h
L118:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L118
.line 9
;>>>> for(Counter2=0;Counter2<(Dot1>>3);Counter2++)
LACK 0
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL *
SBRK 9-LF6
LAC * ,12,AR0
SACH * ,1
ZALS * ,AR2
ADRK 9-LF6
SUBS *
BLEZ L120
MAR * ,AR0
L119:
.line 11
;>>>> Lcd_wc=CSRW; wait();
LACK 70
SACL *
OUT * ,011h
L121:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L121
.line 12
;>>>> Lcd_wd=Cursor_X; wait();
MAR * ,AR2
LARK AR2,1
MAR *0+
OUT * ,010h,AR0
L122:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L122
.line 13
;>>>> Lcd_wd=Cursor_Y; wait();
MAR * ,AR2
LARK AR2,2
MAR *0+
OUT * ,010h,AR0
L123:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L123
.line 14
;>>>> Lcd_wc=MWRITE; wait();
LACK 66
SACL *
OUT * ,011h
L124:
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L124
.line 15
;>>>> for(Counter1=0;Counter1<Dot2;Counter1++)
LACK 0
MAR * ,AR2
LARK AR2,3
MAR *0+
SACL *
ZALS *
SBRK 9-LF6
SUBS *
BGEZ L126
SBRK 2
L125:
.line 17
;>>>> if(Flag==Abnormal)
LAC *
SUBK 1
BNZ L127
.line 19
;>>>> Lcd_wd=~(*(Data_Add++));
MAR *+
LAR AR3,* ,AR3
LAC *+,AR2
SAR AR3,* ,AR1
CMPL
SACL *
OUT * ,010h,AR0
L128:
.line 20
;>>>> wait();
;>>>> else
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L128
B L129
L127:
.line 24
;>>>> Lcd_wd=*(Data_Add++);
MAR *+
LAR AR3,* ,AR3
OUT *+,010h,AR2
SAR AR3,* ,AR3
LAC * ,AR0
L130:
.line 25
;>>>> wait();
IN * ,010h
ZALS *
ANDK 64
SUBK 64
BZ L130
L129:
.line 15
MAR * ,AR2
LARK AR2,3
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SBRK 9-LF6
SUBS *
SBRK 2
BLZ L125
L126:
.line 29
;>>>> Cursor_X++;
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -