📄 wdot.asm
字号:
; 绘点子程序W_DOT
; 占用内部寄存器:O_XL,O_XH,O_YL,A,B
; 内部调用子程序:PR1,PR2,PR3
; 程序调用入口: W_DOT
; 程序参数:PARA1
; 程序输入变量: O_XL,O_XH,O_YL
W_DOT: MOV A,O_YL ; 计算显示单元地址(Y坐标转换计算)
MOV B,#PARA1 ; PARA1值等于SYSTEM SET 指令P9
MUL AB ; 而P10=0
MOV O_YL,A ; O_YL存地址低8位
MOV A,B
XCH A,O_XH ; O_XH存地址高8位
PUSH ACC ; 存D7标志位
CLR ACC.7 ; 清D7位
MOV B,#20H ; 计算显示单元地址(X坐标高位转换计算)
MUL AB ; 256点占32字节,所以B=20H
ADD A,O_YL ; 累加计算
MOV O_YL,A
MOV A,B
ADDC A,O_XH
MOV O_XH,A
MOV A,O_XL ; 计算显示单元地址(X坐标低位转换计算)
MOV B,#08H ; 8点占一字节,所以B=8
DIV AB
ADD A,O_YL ; 商与地址累加计算
MOV O_XL,A ; O_XL存地址低8位
MOV A,O_XH
ADDC A,#40H ; 加入显示二区起始地址值SAD2H
MOV O_XH,A ; 假定SAD2L=0
CLR A ; 确定要设置点的位置
SETB C
INC B ; B为余数 = 点位置
W_DOT1: RRC A ; 确定点位置
DJNZ B,W_DOT1
MOV O_YL,A ; O_YL存点数据
MOV COM,#46H ; 设置光标地址
LCALL PR1
MOV DAT1,O_XL
LCALL PR2
MOV DAT1,O_XH
LCALL PR2
MOV COM,#43H ; MREAD 代码
LCALL PR1
POP ACC ; 取D7标志位
MOV C,ACC.7
LCALL PR3 ; 读取当前显示数据
MOV A,DAT1
JNC W_DOT2 ; 消点则转
ORL A,O_YL ; 绘点: "或"点数据
LJMP W_DOT3
W_DOT2: XCH A,O_YL ; 消点: "与"点数据
CPL A
ANL A,O_YL
W_DOT3: MOV O_YL,A ; 存合成数据
MOV COM,#46H ; 重新设置光标地址
LCALL PR1
MOV DAT1,O_XL
LCALL PR2
MOV DAT1,O_XH
LCALL PR2
MOV COM,#42H ; MWRITE 代码
LCALL PR1
MOV DAT1,O_YL
LCALL PR2 ; 写入合成数据
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -