📄 crt.asm
字号:
DATA SEGMENT
PING_HEN DW 3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH,10H,0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,17 DUP(9H),4 DUP(5H),4H,0EH,0EH,0DH,0CH,0BH
PING_ZONG DW 14 DUP(1H),19 DUP(8H),1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,4H,5H,6H,7H,3H,3H,4H,5H,6H,7H,0FFH
AN_HEN DW 2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH,0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH,1H,1H,2H,2H,3H,4 DUP(4H),4 DUP(5H),5 DUP(6H),3 DUP(7H),3 DUP(8H),3 DUP(9H),3 DUP(0AH),3 DUP(0BH),0CH,0DH,3 DUP(0EH),10H,10H,10H
AN_ZONG DW 14 DUP(4H),16 DUP(9H),5H,12H,3H,12H,12H,0BH,0CH,0DH,11H,0AH,0BH,0DH,11H,6H,7H,8H,0DH,10H,0H,0EH,10H,1H,0EH,0FH,2H,0EH,0FH,0CH,0DH,0EH,0AH,0BH,0FH,0FH,10H,5H,10H,11H,11H,3H,11H,0FFH
STATUS1_ZONG DW 5 DUP(1AH),8 DUP(1BH),9 DUP(1CH),8 DUP(1DH),9 DUP(1EH),0FFH
STATUS2_ZONG DW 9 DUP(1EH),8 DUP(1DH),9 DUP(1CH),8 DUP(1BH),5 DUP(1AH),0FFH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,00H ;设置屏幕显示方式
MOV AL,0DH
INT 10H
MOV AH,0BH ;设置背景颜色为蓝色
MOV BH,0
MOV BL,1
INT 10H
CALL DUILIAN ;显示对联
;--------------------显示8个汉字
LEA DI,PING_ZONG
LEA SI,PING_HEN
MOV AX,37
MOV BX,69
CALL POINT
LEA DI,PING_ZONG
LEA SI,PING_HEN
MOV AX,37
MOV BX,90
CALL POINT
LEA DI,PING_ZONG
LEA SI,PING_HEN
MOV AX,262
MOV BX,69
CALL POINT
LEA DI,PING_ZONG
LEA SI,PING_HEN
MOV AX,262
MOV BX,90
CALL POINT
LEA DI,AN_ZONG
LEA SI,AN_HEN
MOV AX,38
MOV BX,110
CALL POINT
LEA DI,AN_ZONG
LEA SI,AN_HEN
MOV AX,38
MOV BX,131
CALL POINT
LEA DI,AN_ZONG
LEA SI,AN_HEN
MOV AX,262
MOV BX,110
CALL POINT
LEA DI,AN_ZONG
LEA SI,AN_HEN
MOV AX,262
MOV BX,131
CALL POINT
;-----------------------END
CALL DOOR ;显示门框
XXX: MOV AH,00H ;按空格开门
INT 16H
CMP AL,0DH
JZ XXX
CALL OPEN ;开门
XXX1: MOV AH,00H ;按空格关门
INT 16H
CMP AL,0DH
JZ XXX1
CALL CLOSE ;关门
JMP XXX
;------汉字打点 POINT-------
POINT PROC NEAR
LOP1: MOV DX,[DI]
MOV CX,[SI]
ADD CX,AX
PUSH AX
ADD DX,BX
MOV AH,0CH
MOV AL,14
INT 10H
POP AX
INC DI
INC SI
CMP [DI],0FFH
JNZ LOP1
RET
POINT ENDP
;-------------门框 DOOR--------------
DOOR PROC NEAR
MOV CX,79 ;绘制门框_左
MOV DX,25
door_1:
MOV AH,0CH ;红色
MOV AL,4
INT 10H
INC DX
CMP DX,199 ;绘制到纵末
JNZ door_1
door_2: MOV DX,1AH ;绘制到横末
INC CX
CMP CX,242
JNZ door_1
MOV CX,84 ;上边框
MOV DX,27
DOOR_3:
MOV AH,0CH
MOV AL,14
INT 10H
INC CX
CMP CX,238
JNZ DOOR_3
MOV CX,84 ;下边框
MOV DX,197
DOOR_4:
MOV AH,0CH
MOV AL,14
INT 10H
INC CX
CMP CX,238
JNZ DOOR_4
MOV CX,84 ;左边框
MOV DX,27
DOOR_5:
MOV AH,0CH
MOV AL,14
INT 10H
INC DX
CMP DX,197
JNZ DOOR_5
MOV CX,237 ;右边框
MOV DX,27
DOOR_6:
MOV AH,0CH
MOV AL,14
INT 10H
INC DX
CMP DX,197
JNZ DOOR_6
RET
DOOR ENDP
;---------开门 OPEN-------------
OPEN PROC NEAR
MOV CX,237
OPEN_1:
DEC CX
MOV DX,27
OPEN1_1:
MOV AH,0CH
MOV AL,14
INT 10H
INC DX
CMP DX,197
JNZ OPEN1_1
CMP CX,84
JNZ OPEN_1
RET
OPEN ENDP
;---------关门 CLOSE-----------------
CLOSE PROC NEAR
MOV CX,84
CLOSE_1:
INC CX
MOV DX,28
CLOSE1_1:
MOV AH,0CH
MOV AL,4
INT 10H
INC DX
CMP DX,197
JNZ CLOSE1_1
CMP CX,236
JNZ CLOSE_1
RET
CLOSE ENDP
;---------对联 DUILIAN---------------
DUILIAN PROC NEAR
MOV CX,25H ;设置左边对联起始点
MOV DX,1AH
DUILIAN3: MOV AH,0CH ;红色
MOV AL,4
INT 10H
INC DX
CMP DX,0C5H ;绘制到纵末
JNZ DUILIAN3
DUILIAN4: MOV DX,1AH ;绘制到横末
INC CX
CMP CX,39H
JNZ DUILIAN3
MOV CX,0106H ;设置右边对联起始点
MOV DX,1AH
DUILIAN1: MOV AH,0CH ;红色
MOV AL,4
INT 10H
INC DX
CMP DX,0C5H ;绘制到纵末
JNZ DUILIAN1
DUILIAN2: MOV DX,1AH ;绘制到横末
INC CX
CMP CX,011AH
JNZ DUILIAN1
RET
DUILIAN ENDP
;---------延时子程序 DELAY--------
DELAY PROC NEAR
MOV DX,0fffH
DLP:DEC DX
MOV CX,0FFFFH
DLP1:DEC CX
CMP CX,0
JNZ DLP1
CMP DX,0
NOP
JNZ DLP
RET
DELAY ENDP
;---------延时1 DELAY1------------
DELAY1 PROC NEAR
MOV DX,0fffH
DLPP2:DEC DX
MOV CX,0FFFH
DLPP3:DEC CX
CMP CX,0
JNZ DLPP3
CMP DX,0
NOP
JNZ DLPP2
RET
DELAY1 ENDP
;-----------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -