📄 graph.asm
字号:
.file "graph.asm"
.c_mode
.copy "vc5402.inc"
.def _gethz
.def _getasc
.data
hz16_base .set 0A000H
asc32_base .set 4F80H
.text
*********************************************************************************
* *
* 函数定义:void _gethz(uint apcode, uchar *ptr) *
* 功 能:取16*16点阵汉字字模 *
* *
* 入口参数:A ---- 汉字码序号apcode *
* (SP+n) ---- 字模缓冲区地址指针ptr,如果是.far_mode模式则n为2,否则n为1 *
* 16*16点阵汉字字模有16行16列,以行排列,自左到右,从上至下 *
* 字模以16位字形式存储,每行16位,占1个存储单元 *
* 左点占高位,右点占低位 *
* 每个16*16点阵ASCII码字模占16个16位字的储存单元 *
* 8178个16*16点阵汉字共占8178*16 = 130848 = 128K个储存单元 *
* 16*16点阵汉字字模定位于'VC5402程序存储器的Flash中 *
* 地址为:A0000H~BFF1FH *
* 出口参数:字模从字模表读入(SP+n)所指向的缓冲区中 *
* 资源使用:B,AR0 *
* *
*********************************************************************************
_gethz: .if __far_mode ; 堆栈指针SP调整到偶边界
.else
FRAME -1
.endif
ADD #hz16_base,A ; 计算16*16点阵汉字字模的绝对地址
SFTL A,4,A
LD 2H,B
STLM B,AR0 ; AR0←缓冲区地址指针
RPT #15
READA *AR0+
.if __far_mode ; 函数返回
FRET
.else
FRAME 1
RET
.endif
*********************************************************************************
* *
* 函数定义:void _getASC(uint apcode, uchar *ptr) *
* 功 能:取32*16点阵ASCII字模 *
* *
* 入口参数:A ---- ASC序号apcode *
* (SP+n) ---- 字模缓冲区地址指针ptr,如果是.far_mode模式则n为2,否则n为1 *
* 16*16点阵ASC字模有16行16列,以行排列,自左到右,从上至下 *
* 字模以16位字形式存储,每行16位,占1个存储单元 *
* 左点占高位,右点占低位 *
* 每个16*16点阵ASCII码字模占16个16位字的储存单元 *
* 8178个16*16点阵汉字共占8178*16 = 130848 = 128K个储存单元 *
* 16*16点阵汉字字模定位于'VC5402程序存储器的Flash中 *
* 地址为:A0000H~BFF1FH *
* 出口参数:字模从字模表读入(SP+n)所指向的缓冲区中 *
* 资源使用:B,AR0 *
* *
*********************************************************************************
_getasc: .if __far_mode ; 堆栈指针SP调整到偶边界
.else
FRAME -1
.endif
ADD #asc32_base,A ; 计算16*16点阵汉字字模的绝对地址
SFTL A,5,A
LD 2H,B
STLM B,AR0 ; AR0←缓冲区地址指针
RPT #31
READA *AR0+
.if __far_mode ; 函数返回
FRET
.else
FRAME 1
RET
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -