您的位置:首页 > 其它

在内存中的显示缓存区中显示汉字”中国山西“(二)

2012-12-15 17:02 253 查看
汇编语言源代码:

assume cs:code,ds:data

data segment

DB 080H, 001H, 080H, 001H, 080H, 001H, 0FCH, 03FH, 0FCH, 03FH, 08CH, 031H, 08CH, 031H, 08CH, 031H

DB 0FCH, 03FH, 0FCH, 03FH, 08CH, 031H, 080H, 001H, 080H, 001H, 080H, 001H, 080H, 001H, 000H, 000H;中

DB 000H, 000H, 0FEH, 03FH, 0FEH, 03FH, 006H, 030H, 0F6H, 037H, 0F6H, 037H, 086H, 031H, 0F6H, 037H

DB 086H, 031H, 086H, 035H, 0F6H, 03FH, 0F6H, 03FH, 006H, 030H, 0FEH, 03FH, 0FEH, 03FH, 000H, 000H;国

DB 0C0H, 000H, 0C0H, 000H, 0C0H, 000H, 0C0H, 000H, 0C6H, 030H, 0C6H, 030H, 0C6H, 030H, 0C6H, 030H

DB 0C6H, 030H, 0C6H, 030H, 0C6H, 030H, 0C6H, 030H, 0FEH, 03FH, 0FEH, 03FH, 000H, 030H, 000H, 000H;山

DB 000H, 000H, 0FFH, 07FH, 0FFH, 07FH, 060H, 003H, 060H, 003H, 0FEH, 03FH, 0FEH, 03FH, 066H, 033H

DB 066H, 033H, 036H, 03FH, 01EH, 03EH, 006H, 030H, 0FEH, 03FH, 0FEH, 03FH, 006H, 030H, 000H, 000H;西

DB 1H,2H,4H,8H,10H,20H,40H,80H ;用于过滤 01 10 100 1000 10000 100000 1000000 10000000

data ends

code segment

start:

;先进行初始化

mov ax,data

mov ds,ax

mov ax,0b800h

mov es,ax

mov si,0

mov di,0500h;从第0页第8行开始

mov cx,4;四个汉字循环四次

chinese:push cx

push si

push di

;对每个汉字进行操作,每个汉字需要处理16行,每行一个字,每个字两个字节,每个字节8个位,每个位and处理

mov cx,16

show:push cx

mov cx,2

showWord:push cx

mov bx,80h

mov cx,8

showByte:push cx

mov ah,[si]

mov dl,ah

mov ah,[bx]

mov dh,ah

and dl,dh

mov cx,0

mov cl,dl

jcxz a

mov byte ptr es:[di],2ah

inc di

mov byte ptr es:[di],14h

inc di

jmp b

a:mov byte ptr es:[di],20h

inc di

mov byte ptr es:[di],20h

inc di

jmp b

b:inc bx

pop cx

loop showByte

inc si

pop cx

loop showWord

add di,80h

pop cx

loop show

pop di

pop si

add si,32 ;进入第二个汉字

add di,32 ;进入第二个汉字的第一行

pop cx

loop chinese

mov ax,4c00h

int 21h

code ends

end start

用汇编语言显示“中”

首先用masm编译该源代码,生成.obj文件;

再用link链接该文件生成的.obj文件,生成.exe文件

再用debug命令运行该.exe文件,执行g命令,就显示如图所示的“中国山西“



注意:如果在masm过程中出现out
of memory;可能是因为源程序中的逗号或分号处于中文状态下,改成英文状态,该错误就会消失。

这是本人最近写的小的汇编程序,欢迎大家批评指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: