用汇编显示汉字,图案

用汇编显示汉字,图案,第1张

看看我写的在xp下填充缓冲区显示的例子

>

楼主学习汇编?

话说这个不是用ASC码输出吧?

需要用画出来

我给你个画图 画一竖的程序

其他的还是自己弄吧 既然学汇编还是自己动手下

(还有最后一笔的点阵好难 、)

DATA SEGMENT

ROW DW 50

COL DW 150

COLOR DB 3

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AH, 15

INT 10H ;取当前显示方式

PUSH AX ;保存数据

MOV AX, 0004H ;设置为四色显示

INT 10H

MOV AH, 0BH ;置彩色调色板

MOV BH, 01H ;置彩色组

MOV BL, 00H ;彩色组为0

INT 10H

PUSH AX

MOV AH, 0CH ;图形方式写像素

MOV AL, COLOR ;彩色值为COLOR

MOV DI, 100 ;

MOV DX, ROW ;第ROW行开始

@@1: MOV SI, 20

MOV CX, COL ;列为COL

@@2: INT 10H

INC CX ;右边一个像素继续涂色

DEC SI

JNZ @@2 ;列数为20列

INC DX ;下一行进行涂色

DEC DI ;涂完100行结束

JNZ @@1

POP AX

mov ah,01h ;键盘输入并回显

int 21h

POP AX ;取出AX

MOV AH, 0H ;设置文本显示方式为320200 4色图

INT 10H

MOV AH, 4CH ;结束程序

INT 21H

CODE ENDS

END START

; 演示文本方式下显示汉字的汇编源程序

; 文件名:mynameasm

;

; 说明: 本程序通过调用BIOS 10h替换系统字模来显示汉字

; 入口: ax=1100h

; bh=字模的高度(有效值:0~20h,默认值:10h)

; bl=被替换的字模集代号(有效值:0~7)

; cx=要替换的字模数

; dx=被替换的第一个字模所对应的字符的ASCII

; es:bp=新字模起始地址

; int 10h

; 要恢复系统字符集,可作如下调用:

; ax=1104h

; bl=字模集代号(有效值:0~7)

; int 10h

; 使用方法:

; masm myname;;

; link myname;;

; exe2bin mynameexe mynamecom

;

; 注意:本程序未按该字的机内码替换字模,因此不能运行在汉字 *** 作系统下; 也就是说,要想让程序在中英文下都能正常显示汉字,那么就要汉字的内码进行替换

codeseg segment public 'code'

;==============================

org 100h

assume es:codeseg,ss:codeseg

assume cs:codeseg,ds:codeseg,es:codeseg

;-----------------------------

main proc near

mov ax,1100h

mov bh,10h

mov bl,0

mov cx,6

mov dx,200

lea bp,mode

int 10h

mov ah,09h

lea dx,myname

int 21h

mov ah,7

int 21h

mov ax,1104h

mov bl,0

int 10h

mov ax,4c00h

int 21h

;(or int 20h)

main endp

;---------------------

mode db

100B,100B,111111B,100B,100B,11111111B,1B,11111B,10001B,11111B,10001B,11111B,10000B,100B,11000B,1100000B

db

01000000B,01010000B,11111000B,01000000B,01000100B,11111110B,00010000B,11111000B,00010000B,11110000B,00010000B,11110000B,00000000B,01100000B,00011000B,00000100B

db

1B,1B,1B,11111111B,1B,1B,1B,111111B,0B,10B,10001B,1010000B,1010000B,10010000B,1111B,0B

db

00000000B,00000000B,00000100B,11111110B,00000000B,00000000B,00010000B,11111000B,0B,00000000B,10000000B,10000100B,00010010B,00010010B,11110000B,0B

db

0B,100000B,10001B,0B,11111100B,1011B,1001000B,101000B,101001B,10001B,101001B,100101B,1000101B,10000001B,11B,0B

db

10000B,00010000B,11110100B,10010B,00010000B,11111110B,00010000B,01010000B,01010000B,01110000B,01010000B,01001000B,01001000B,01101010B,10000110B,10B

myname db 200,201,202,203,204,205,'$'

;======================

codeseg ends

end main

我用C语言写有一个程序可以直接从ucdos字库中读取指定的汉字的字模,并按汇编或C语

言数据格式存放到文件中,将它们放到相应的源程序中就可以了。

显示汉字的程序如下,可以在 PC 机上正常显示。

emu8086,能否显示,就不知道了。

;======================================================

CODE SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 100H

START:

PUSH CS

POP DS

MOV AH, 0FH ;读取当前显示方式

INT 10H

PUSH AX

MOV AX, 12H ;设置点阵显示

INT 10H

MOV AX, 0A000H ;显示缓存段地址

MOV ES, AX

CLD

LEA SI, DOT

MOV DI, (30 80 + 10) 2

MOV CX, CNT / 2 ;=16

Q1:

; MOVSB ;SI加一, DI加一

; MOVSB ;SI加一, DI加一

MOVSW

ADD DI, 78 ;相当是加上80

LOOP Q1

MOV AH, 0 ;等待按键

INT 16H

POP AX

MOV AH, 00H ;恢复原来的显示方式

INT 10H

MOV AH, 4CH

INT 21H

;字模点阵 32字节, 是一个1616的汉字

;

DOT DB 00H, 3CH, 47H,0C0H, 32H, 48H, 11H, 50H, 8FH,0FEH, 61H, 50H, 22H, 48H, 0CH, 44H

DB 17H,0FEH, 24H, 44H,0E4H, 44H, 27H,0FCH, 24H, 44H, 24H, 44H, 27H,0FCH, 24H, 04H

;

DB 01H, 00H, 7FH,0FCH, 01H, 00H, 3FH,0F8H, 00H, 00H, 1FH,0F0H, 10H, 10H, 1FH,0F0H

DB 04H, 40H,0FFH,0FEH, 10H, 00H, 7EH,0F8H, 12H, 88H, 12H, 88H, 22H,0F8H, 4CH, 88H

;

DB 10H, 10H, 10H, 18H, 1CH, 14H, 23H,0FEH, 22H, 10H, 7EH, 10H, 92H, 10H, 13H,0D4H

DB 0FEH, 54H, 12H, 54H, 12H, 54H, 17H, 48H, 1AH, 98H, 12H, 2AH, 04H, 46H, 08H, 02H

CNT EQU $ - DOT ;=32

CODE ENDS

END START

;======================================================

程序中,DB 后面的数字0,代表的是:

汉字的点阵码。

楼主显示的代码,有些错误。

有些空格,被缩减了。

修改正确之后,运行结果是:

C:\MASM>WW

  0000000

  0     0

  0000000

 000000000

     0

 000000000

     0

    0 0

   0   0

  0     0

 0       00

在写汉字之前的代码是不是确定了输出的位置,解决的思路:先把一行汉子写完(目前的代码功能?),然后,直接写第二次,只是位置向右偏移一列,然后顺便把最左边一列清除。感觉是这是dos下的com可执行文件。

以上就是关于用汇编显示汉字,图案全部的内容,包括:用汇编显示汉字,图案、汇编显示一个字符串的程序、汇编语言,用*显示汉字尹 大神帮帮忙吧,才做的任务求的分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10124360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存