📄 zong_asm.asm
字号:
DAT1 EQU 30H ; 第一参数单元
DAT2 EQU 31H ; 第二参数/数据单元
COM EQU 32H ; 指令代码单元
C_ADD EQU 0f3ffH ; 指令通道地址
D_ADD EQU 0fbffH ; 数据通道地址
ORG 0000H
JMP MAIN
MAIN:
MOV R6,#50h
MOV R7,#00H
DELAY1: NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
MOV SP,#60H
TEST:
LCALL INT
MOV DAT1, #00H ;设置显示RAM 首地址
MOV DAT2, #00H
MOV COM, #24H
LCALL PR1
MOV R3, #00H ;设置循环量
MOV R4 ,#20H
MOV COM, #0B0H ;设置自动写方式
LCALL PR12
TEST1: LCALL ST3 ;判状态位S2
MOV A, #0FH ;置数据"0F"
LCALL PR13 ;写入数据
DJNZ R3, TEST1 ;循环
DJNZ R4 ,TEST1
MOV COM, #0B2H ;设置自动写结束指令
LCALL PR12
SJMP $
RET
R_ST: MOV DPTR, #C_ADD ; 设置指令通道地址
MOVX A, @DPTR
RET
ST01: LCALL R_ST
JNB ACC.0, ST01
JNB ACC.1, ST01
RET
ST2: LCALL R_ST
JNB ACC.2,ST2
RET
ST3: LCALL R_ST
JNB ACC.3,ST3
RET
ST6: LCALL R_ST
JB ACC.6,ERR
RET
ERR: LJMP ST6
PR1: LCALL ST01 ; 双字节参数指令写入入口
MOV A, DAT1 ; 取第一参数单元数据
LCALL PR13 ; 写入参数
PR11: LCALL ST01 ; 单字节参数指令写入入口
MOV A,DAT2 ; 取第二参数单元数据
LCALL PR13 ; 写入参数
PR12: LCALL ST01 ; 无参数指令写入入口
MOV A, COM ; 取指令代码单元数据
LJMP PR14 ; 写入指令代码
PR13: MOV DPTR, #D_ADD ; 设置数据通道地址/数据写入入口
PR14: MOVX @DPTR, A ; 写入操作
RET
PR2: LCALL ST01
MOV DPTR,#D_ADD
MOVX A,@DPTR
MOV DAT2,A
RET
INT: MOV DAT1,#00H
MOV DAT2,#00H
MOV COM, #40H
LCALL PR1
MOV DAT1, #20H ;设置文本显示区域宽度
MOV DAT2, #00H ;即一行显示所占字节数
MOV COM, #41H
LCALL PR1
MOV DAT1, #00H ;设置图形显示区域首地址
MOV DAT2, #08H ;或为文本属性区域首地址
MOV COM, #42H
LCALL PR1
MOV DAT1, #20H ;设置图形显示区域宽度
MOV DAT2, #00H ;或为文本属性区域宽度
MOV COM, #43H ;即一行显示所占字节数
LCALL PR1
MOV COM ,#0A7H ;光标形状设置
LCALL PR12
MOV COM ,#80H ;显示方式设置逻辑或合成
LCALL PR12
MOV COM, #9CH ;显示开关设置
LCALL PR12
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -