📄 6-int10.asm
字号:
TITLE TEST INT 10H
.MODEL SMALL
.CODE
MODE03 EQU 03H
SET_MODE EQU 00H
SET_CURSOR EQU 02H
WRITE_CHARACTER EQU 09H
READ_MODE EQU 0FH
READ_KEY EQU 00H
READ_STATUS EQU 01H
INT10 MACRO $AH,$AL
MOV AL,$AL
MOV AH,$AH
INT 10H
ENDM
INT16 MACRO $AH
MOV AH,$AH
INT 16H
ENDM
ORG 100H
START: JMP MAIN
STRING_MESS DB '4 Kinds of Graphics, Press CTRL+C to EXIT.'
STRING_LENGTH EQU $-STRING_MESS
CHAR DB 0DBH ;一块颜色
MODE DB 0
MAIN: INT10 READ_MODE,0
MOV MODE,AL
INT10 SET_MODE,MODE03
;用来显示提示
MOV BP,OFFSET STRING_MESS
MOV CX,STRING_LENGTH
MOV DX,020AH
MOV BH,00H
MOV AX,1300H
MOV BL,0FH ;属性
INT 10H
MOV BH,00H
MOV DH,05H ;第5行
MOV DL,0AH ;第10列
SET_AGAIN: INT10 SET_CURSOR,0 ;竖着5->20(同一列) 再第二列竖着下来,直到31列
MOV BH,00H
MOV BL,01H ;在彩色模式下为兰色
MOV CX,01H ;写一遍
MOV AL,03H
INT10 WRITE_CHARACTER,CHAR
CALL DELAY
INC DH
CMP DH,14H ;显示直到第20行
JL SET_AGAIN
MOV DH,05H
INC DL
CMP DL,1FH ;显示直到第31列
JL SET_AGAIN
MOV DL,0AH ;从第10列重新循环显示
ADD CHAR,01H ;加1,只显示4中图形
CMP CHAR,0DFH
JNZ CONTINUE
MOV CHAR,0DBH
CONTINUE: JMP SET_AGAIN
DELAY PROC
PUSH CX
MOV CX,0C00H ;等待C00次是否有键盘输入
NEXT: NOP
INT16 READ_STATUS
JNZ STOP
LOOP NEXT
JMP NORMAL
STOP: INT16 READ_KEY
CMP AX,2E03H ;CTRL+C
JNZ NEXT
POP CX
MOV AL,MODE ;恢复显示模式
MOV AH,0
INT 10H
INT 20H
NORMAL: POP CX
RET
DELAY ENDP
RET
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -