要过年了,给大家送个福字!
百度知道上面有一个题目,给出了汉字 “中” 的字模数据,要求在 DOS 窗口中显示点阵汉字,还给出一个样图。
题目链接:显示一个 “中” 字。
做而论道用不一会儿,就写出了程序。
这程序,并没有直接显示 “中” 字,而是用彩色显示了一个倒着的“福”字。这也就是为了显得喜庆一些嘛!
程序运行截图如下:
DOS 窗口,本来只有 25 行。
但是,在 XP 环境下,行数可以设置。把窗口弄的高一些,才能显示得下这些字。
全部程序如下。
;===================================================
ASSUME CS:CODE, DS:DATA
;---------------------------------------------------
DATA SEGMENT
HUAN DB 00H, 80H, 00H, 80H, 0FCH, 80H, 04H, 0FCH
DB 45H, 04H, 46H, 48H, 28H, 40H, 28H, 40H
DB 10H, 40H, 28H, 40H, 24H, 0A0H, 44H, 0A0H
DB 81H, 10H, 01H, 08H, 02H, 0EH, 0CH, 04H
YING DB 00H, 00H, 00H, 0C0H, 41H, 84H, 26H, 7EH
DB 14H, 44H, 04H, 44H, 04H, 44H, 0F4H, 44H
DB 14H, 0C4H, 15H, 44H, 16H, 54H, 14H, 48H
DB 10H, 40H, 10H, 40H, 28H, 46H, 47H, 0FCH
FU DB 14H, 04H, 17H, 0FCH, 14H, 44H, 14H, 44H
DB 17H, 0FCH, 14H, 44H, 94H, 44H, 57H, 0FEH
DB 38H, 04H, 13H, 0F8H, 0AH, 08H, 0FAH, 08H
DB 03H, 0F8H, 10H, 00H, 17H, 0FCH, 20H, 08H
ZHONG DB 01H, 00H, 01H, 00H, 01H, 04H, 7FH,0FEH
DB 41H, 04H, 41H, 04H, 41H, 04H, 41H, 04H
DB 7FH,0FCH, 41H, 04H, 01H, 00H, 01H, 00H
DB 01H, 00H, 01H, 00H, 01H, 00H, 01H, 00H
DATA ENDS
;---------------------------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV AX, 0B800H
MOV ES, AX
;------------------------------
MOV SI, OFFSET FU
MOV DI, 1 * 160 + 24 * 2
CALL DISP_16_16
MOV SI, OFFSET HUAN
MOV DI, 18 * 160 + 6 * 2
CALL DISP_16_16
MOV SI, OFFSET YING
MOV DI, 18 * 160 + 42 * 2
CALL DISP_16_16
MOV AX, 4C00H
INT 21H
;-----------------------------------
DISP_16_16:
MOV CX, 16
M_LOOP:
MOV DX, [SI]
XCHG DL, DH
PUSH CX
;------------------------------
MOV CX, 16
LP1:
ADD DX, DX
JNC ZZZZ
CALL XS1
JMP XXXX
ZZZZ:
CALL XS0
XXXX:
ADD DI, 4
LOOP LP1
;------------------------------
ADD SI, 2
ADD DI, 160 - 64
POP CX
LOOP M_LOOP
RET
;-----------------------------------
XS1:
; MOV AX, 0403H ;黑底红字
MOV AX, 0CE03H ;红底黄字
MOV ES:[DI], AX
MOV ES:[DI + 2], AX
RET
;-----------------------------------
XS0:
; MOV AX, 0020H ;黑色背景
MOV AX, 0C020H ;红色背景
MOV ES:[DI], AX
MOV ES:[DI + 2], AX
RET
;-----------------------------------
CODE ENDS
END START
;===================================================
程序中,仍然保存了 “中” 字的信息,你稍稍改动一下,就能显示出来 “中”。
本程序应用了 “直接写屏” 的方法。显示颜色、位置的设定方法,做而论道以前都曾经写过,感兴趣的网友可以自己在博客中找找看。
有没有人,按照这方法,写个【马到成功】? 大家都来试试看。
--本文完--