?? 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 + -