?? ccwpr.asm
字號:
; 漢字寫入子程序(圖形方式)CCW_PR
; 占用內部資源:O_XL,O_YL,COUNT1,CODE,A,B,DPTR
; 內部調用子程序:PR1,PR2
; 連接字庫: CCTAB
; 程序調用入口: CCW_PR
; 程序輸入變量: O_XL,O_YL,CODE
CCW_PR: MOV A,CODE ; 計算漢字字模的首地址
MOV DPTR,#CCTAB ; 設置漢字庫的首地址
MOV B,#20H ; 一個漢字占32個字節
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV A,O_YL ; 取行坐標地址
MOV B,#PARA1 ; 設置顯示域寬度
MUL AB ; 計算光標指針地址
ADD A,O_XL ; 加列坐標地址
MOV O_XL,A ; 地址低8位暫存O_XL
MOV A,B
ADDC A,#00H
MOV O_YL,A ; 地址高8位暫存O_YL
MOV COUNT1,#00H ; 計數器清零
CCW_1: MOV COM,#0AH ; 設置光標地址
LCALL PR1
MOV DAT1,O_XL
LCALL PR2
MOV COM,#0BH
LCALL PR1
MOV DAT1,O_YL
LCALL PR2
MOV COM,#0CH ; 寫數據指令代碼
LCALL PR1
MOV A,COUNT1
MOVC A,@A+DPTR ; 取漢字左半部字模數據
MOV DAT1,A ; 寫入字模數據
LCALL CONVERT ; 調字模結構轉換子程序
LCALL PR2 ; 寫入字模數據
MOV A,COUNT1
ADD A,#10H ; 修改間址參數
MOVC A,@A+DPTR ; 取漢字右半部字模數據
MOV DAT1,A ; 寫入字模數據
LCALL CONVERT ; 調字模結構轉換子程序
LCALL PR2 ; 寫入字模數據
MOV A,O_XL ; 修正光標指針地址
ADD A,#PARA1 ; 加顯示域寬度
MOV O_XL,A
MOV A,O_YL
ADDC A,#00H
MOV O_YL,A
INC COUNT1 ; 計數器加一
MOV A,COUNT1
CJNE A,#10H,CCW_1 ; 循環
RET
; 漢字字模結構轉換子程序
CONVERT:MOV A,COUNT1 ; 暫存COUNT1計數器
PUSH ACC
MOV COUNT1,#08H ; 借用COUNT1作為計數器
MOV A,DAT1 ; 取數據
MOV DAT1,#00H ; DAT1清零作為新數據
CONVER1:RRC A ; ACC.0→C
XCH A,DAT1 ; 新舊數據交換
RLC A ; C→ACC.0
XCH A,DAT1 ; 新舊數據交換
DJNZ COUNT1,CONVER1 ; 循環
POP ACC ; 恢復COUNT1
MOV COUNT1,A
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -