汇编语言源代码:
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;可能是因为源程序中的逗号或分号处于中文状态下,改成英文状态,该错误就会消失。
本文通过汇编语言源代码演示如何在内存显示缓存区显示汉字'中国山西',讲解了从编译到链接,再到执行显示的完整过程。在MASM编译时需要注意中文字符可能导致的内存不足问题,需切换到英文状态解决。

被折叠的 条评论
为什么被折叠?



