| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:求助,大侠们帮帮我啊
取消只看楼主 加入收藏
fanggei2005
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-18
收藏
 问题点数:0 回复次数:1 
求助,大侠们帮帮我啊
小弟初学汇编,刚看到一个汇编显示汉字的程序,对我非常有用,但其中汉字的字符图形表的定义不大懂(红线位置),请各位帮个忙啊!!
code segment
assume cs:code,ds:code
org 100h
main proc far
start:jmp begin
;汉字:仁
ren dw 300h,0,3c0h,0c0h,33fh,0fff0h,0f00h,0,0c00h,0,3c00h,0,0cc00h,0,0c00h,0,0c00h,0,0c00h,0,0c00h,0,0c00h,0h,0cffh,0fffch,0c00h,0,0c00h,0,0,0 ;要显示的位置
row dw 50
col dw 50
off dw 36 ;每次要增加的距离
lp1num db 0
lp2num db 2
lp3num db 0 ;第3层循环的次数,最大为16
lp4num db 0
lp5num db 0
cmpnum dw 8000h
n db 1 ;设置字体大小,默认一个象素画一个点
begin:push ds
xor ax,ax
push ax
mov ax,code
mov ds,ax
;设置屏幕显示方式320*200彩色方式
MOV AH,0H
MOV AL,04H
INT 10H
MOV AH,0BH
MOV BH,0H
MOV BL,1
INT 10H
MOV AH,0BH
MOV BH,01H
MOV BL,0
INT 10H
;程序主体部分,3重循环
xianshi: ;清除屏幕
call clears
mov si,offset ren
;调用显示子程序,入口参数:si=要显示的汉字(用32个word存储的32*32的点阵)
;入口参数:col=要显示汉字的行,row=要显示汉字的列
;显示汉字:仁
call show
;call show
;循环接收键盘响应,看是否输入'+'字符
keyacc: mov ah,0
int 16h
cmp al,'q'
je exit
cmp al,'_'
je ensmall
cmp al,'+'
je enlarge
jmp keyacc
enlarge:inc n
cmp n,8
jbe gons
dec n
gons: jmp xianshi
ensmall:dec n
cmp n,1
jae goonx
inc n
goonx : jmp xianshi
;程序退出
exit:
; mov ah,01h
;int 21h
mov ah,0;恢复屏幕原来的显示方式
mov al,2;黑白方式80*25
int 10h
ret
main endp
;显示汉字子程序,入口参数:si=要显示的汉字存储区首地址(用32个word存储的16*32的点阵)
;入口参数:col=要显示汉字的行,row=要显示汉字的列
show proc near
push ax
push bx
push cx
push dx
push si
push word ptr row
push word ptr col
;mov cx,16
mov ah,0ch
mov dx,row
mov cx,col
mov lp1num,0
lp1:mov lp2num,0
mov cx,col
lp2:mov bx,[si]
mov lp3num,0
mov cmpnum,8000h
lp3:test bx,cmpnum
jz wr2
mov al,2
push dx ;保护列值以便恢复
mov lp4num,0
lp4:push cx
mov lp5num,0
lp5:int 10h
inc lp5num
inc cx
push ax
mov al,n
cmp lp5num,al
pop ax
jb lp5
ag4:inc dx
inc lp4num
pop cx
push ax
mov al,n
cmp lp4num,al
pop ax
jb lp4
jmp ag3
wr2:mov al,0
push dx ;保护列值以便恢复
lp42:push cx
mov lp5num,0
lp52:
int 10h
inc lp5num
inc cx
push ax
mov al,n
cmp lp5num,al
pop ax
jb lp52
ag42: inc dx
inc lp4num
pop cx
push ax
mov al,n
cmp lp4num,al
pop ax
jb lp42
ag3:pop dx
shr cmpnum,1
push ax
mov al,n
mov ah,0
add cx,ax
pop ax
; inc cx
inc lp3num
cmp lp3num,16
jb lp3
ag2: add si,2
inc lp2num
cmp lp2num,2
jb lp2ee
jmp ag1
lp2ee:jmp lp2
ag1:
; add dx,n
;inc dx
push ax
mov al,n
mov ah,0
add dx,ax
pop ax
inc lp1num
cmp lp1num,16
jb lp1ee
jmp exitshow
lp1ee:jmp lp1
exitshow:
mov lp2num,0
mov lp3num,0
mov lp1num,0
mov cmpnum,8000h
pop word ptr col
pop word ptr row
pop si
pop dx
pop cx
pop bx
pop ax
ret
show endp
;清除屏幕子程序
clears proc near
push ax
push bx
mov ah,0fh
int 10h
mov ah,0
int 10h
pop bx
pop ax
ret
clears endp
code ends
end start
搜索更多相关主题的帖子: 图形 start 汉字 
2008-11-18 18:57
fanggei2005
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-18
收藏
得分:0 
回复 2# 的帖子
谢谢哈 ,我下来看看
2008-11-18 19:13
快速回复:求助,大侠们帮帮我啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067773 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved