80x86汇编语言:福到了

  要过年了,给大家送个福字!

  百度知道上面有一个题目,给出了汉字 “中” 的字模数据,要求在 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
;===================================================

  程序中,仍然保存了 “中” 字的信息,你稍稍改动一下,就能显示出来 “中”。

  本程序应用了 “直接写屏” 的方法。显示颜色、位置的设定方法,做而论道以前都曾经写过,感兴趣的网友可以自己在博客中找找看。
  有没有人,按照这方法,写个【马到成功】? 大家都来试试看。


--本文完--

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值