其中一段看不懂
时间:2011-11-11
来源:互联网
;在屏幕上输出中文字符“长春大学”。
code segment
assume cs:code, ds:code
begin:
;----使文本显示模式扩展为全屏----
mov ax,12h
INT 10H ;置图形模式
mov ax, 3
INT 10H ;置文本模式
;-----设置数据段、扩展段初值------
mov bx, cs
mov ds, bx
mov es, bx
;-----从显示字库A处替换为“长春大学”字模-----
lea bp, buffer ;取字模首址
mov dx, 41h ;从显示字库A处替换
mov cx, 8 ;换8个字
mov bx, 1000h
mov ax, 1100h ;装入用户字体
int 10h
;-------扩展段值指向显存地址-------
mov ax,0b800h
mov es,ax
;------ 显示指针指向左上角 ------
mov dx,0 ;显示指针指向左上角
next:
cld ;正序显示
mov di,dx ;
lea si,string ;指向串首
mov ah,07 ;字色为白
mov cx,10 ;10个字符
he:lodsb ;取一字
stosw ;存入显存
loop he ;显示下一字
;-------------------------------
mov ah,1
int 16h ;有按键按下吗?
jz new
mov ah,0
int 16h ;取其键值
cmp al,0dh ;是回车吗?
jz exit
new:
call delay
add dx,2 ;后移一个位置(2/-2)
num:
cmp dx,0 ;已到最左边了吗?
jz kkk
cmp dx,140 ;已到最右边了吗?
jnz it
kkk:
neg byte ptr cs:[num-1] ;2/-2互换
it: jmp next ;在新位置重新显示
exit:
mov ah,4ch
int 21h ;返回DOS
DELAY PROC
push dx
push cx
push ax
mov cx,10
@t:
mov dx,3dah
ta: in al,dx
test al,8
jnz ta
tb: in al,dx
test al,8
jz tb
loop @t
pop ax
pop cx
pop dx
ret
DELAY ENDP
string db ' ABCDEFGH '
;------以下为长春大学 16X16 字模点阵数据-----------
buffer db 5 dup(8), 9, 8, 0FFh, 2 dup(9), 3 dup(8)
db 9, 0Eh, 8, 0, 10h, 30h, 40h, 80h, 0, 4
db 0FEh, 2 dup(0), 80h, 40h, 20h, 1Ch, 8
db 0, 1, 7Fh, 1, 3Fh, 2, 0FFh, 4, 8, 1Fh
db 28h, 0C8h, 0Fh, 2 dup(8), 0Fh, 8, 0, 0FCh
db 0, 0F8h, 0, 0FEh, 40h, 20h, 0F0h, 2Eh
db 24h, 0E0h, 2 dup(20h), 0E0h, 20h, 5 dup(1)
db 0FFh, 1, 3 dup(2), 2 dup(4), 8, 10h, 60h
db 5 dup(0), 4, 0FEh, 0, 2 dup(80h), 2 dup(40h)
db 20h, 10h, 0Eh, 4, 0, 22h, 2 dup(11h)
db 0, 7Fh, 40h, 80h, 1Fh, 0, 1, 0FFh, 3 dup(1)
db 5, 2, 2 dup(8), 10h, 20h, 0FEh, 2, 4
db 0E0h, 40h, 84h, 0FEh, 6 dup(0))
;****************
code ends
end begin
这是从网上down下的一个程序,但是其中的汉子点阵数据不知道是怎么来得,我也想要替换几个例外的字但是不改不了,那位大侠能帮下忙,也欢迎讨论下!
code segment
assume cs:code, ds:code
begin:
;----使文本显示模式扩展为全屏----
mov ax,12h
INT 10H ;置图形模式
mov ax, 3
INT 10H ;置文本模式
;-----设置数据段、扩展段初值------
mov bx, cs
mov ds, bx
mov es, bx
;-----从显示字库A处替换为“长春大学”字模-----
lea bp, buffer ;取字模首址
mov dx, 41h ;从显示字库A处替换
mov cx, 8 ;换8个字
mov bx, 1000h
mov ax, 1100h ;装入用户字体
int 10h
;-------扩展段值指向显存地址-------
mov ax,0b800h
mov es,ax
;------ 显示指针指向左上角 ------
mov dx,0 ;显示指针指向左上角
next:
cld ;正序显示
mov di,dx ;
lea si,string ;指向串首
mov ah,07 ;字色为白
mov cx,10 ;10个字符
he:lodsb ;取一字
stosw ;存入显存
loop he ;显示下一字
;-------------------------------
mov ah,1
int 16h ;有按键按下吗?
jz new
mov ah,0
int 16h ;取其键值
cmp al,0dh ;是回车吗?
jz exit
new:
call delay
add dx,2 ;后移一个位置(2/-2)
num:
cmp dx,0 ;已到最左边了吗?
jz kkk
cmp dx,140 ;已到最右边了吗?
jnz it
kkk:
neg byte ptr cs:[num-1] ;2/-2互换
it: jmp next ;在新位置重新显示
exit:
mov ah,4ch
int 21h ;返回DOS
DELAY PROC
push dx
push cx
push ax
mov cx,10
@t:
mov dx,3dah
ta: in al,dx
test al,8
jnz ta
tb: in al,dx
test al,8
jz tb
loop @t
pop ax
pop cx
pop dx
ret
DELAY ENDP
string db ' ABCDEFGH '
;------以下为长春大学 16X16 字模点阵数据-----------
buffer db 5 dup(8), 9, 8, 0FFh, 2 dup(9), 3 dup(8)
db 9, 0Eh, 8, 0, 10h, 30h, 40h, 80h, 0, 4
db 0FEh, 2 dup(0), 80h, 40h, 20h, 1Ch, 8
db 0, 1, 7Fh, 1, 3Fh, 2, 0FFh, 4, 8, 1Fh
db 28h, 0C8h, 0Fh, 2 dup(8), 0Fh, 8, 0, 0FCh
db 0, 0F8h, 0, 0FEh, 40h, 20h, 0F0h, 2Eh
db 24h, 0E0h, 2 dup(20h), 0E0h, 20h, 5 dup(1)
db 0FFh, 1, 3 dup(2), 2 dup(4), 8, 10h, 60h
db 5 dup(0), 4, 0FEh, 0, 2 dup(80h), 2 dup(40h)
db 20h, 10h, 0Eh, 4, 0, 22h, 2 dup(11h)
db 0, 7Fh, 40h, 80h, 1Fh, 0, 1, 0FFh, 3 dup(1)
db 5, 2, 2 dup(8), 10h, 20h, 0FEh, 2, 4
db 0E0h, 40h, 84h, 0FEh, 6 dup(0))
;****************
code ends
end begin
这是从网上down下的一个程序,但是其中的汉子点阵数据不知道是怎么来得,我也想要替换几个例外的字但是不改不了,那位大侠能帮下忙,也欢迎讨论下!
作者: yjh333x 发布时间: 2011-11-11
去找UCDOS的HZK16文件
作者: Areslee 发布时间: 2011-11-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28