首页
社区
课程
招聘
[求助]请问16位汇编如何显示'Hello World!我是李生'?
发表于: 2009-2-12 04:36 6495

[求助]请问16位汇编如何显示'Hello World!我是李生'?

2009-2-12 04:36
6495
请问在纯DOS汇编,如何才能显示汉字?

.model small
.stack 200h
.data
    szMsg db 'Hello World!我是李生',13,10,'$'
   
.CODE
START:
    mov ax,@data
    mov ds,ax
    lea dx,szMsg
    mov ah,9
    int 21h
   
    ;暂停,任意键关闭
    mov ah,1
    int 21h
    mov ah,4ch    ;结束,可以修改al设置返回码
    int 21h
   
END START

编译之后,这个“我是李生”是乱码,请教如何才能显示汉字?
谢谢先

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
DOS不能直接显示汉字

要显示很麻烦了

起码还得有个支持显示汉字的程序
2009-2-12 07:33
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问能不能细点说说?
我见过一个工控机,就是dos下的系统,显示有英文,也有汉字
但是屏幕下面没有那些类似UCDOS的外挂汉字系统

不知如何实现的?
2009-2-12 07:56
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
显示汉字很容易,你需要一个像UCDOS一样用的汉字字库文件,然后自己调用字库的点阵信息,直接写入显存显示即可。
2009-2-12 08:55
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能不能给点成功的例子?
我网上找到很多个tc的例子,调试都不成功
谢谢先
2009-2-12 09:39
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
DATA SEGMENT
DATA_1        DB 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
              DB 0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0
              DB 0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,0
              DB 0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0
              DB 0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1
              DB 0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0
              DB 0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,0
              DB 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
              DB 0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0
              DB 0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0
              DB 0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0
              DB 0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0
              DB 0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0
              DB 0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0
              DB 0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:             MOV AX,DATA
             MOV DS,AX
             MOV AH,0
             MOV AL,12H         ;set vga mode 640x480x16
             INT 10H
             MOV AX,OFFSET DATA_1
             MOV SI,AX
             MOV AH,0CH
             MOV DX,210
LOOP3:             MOV CX,200
LOOP1:             MOV AL,[SI]
             INT 10H                   ;write pin at 310,200
             INC CX
             INC SI
             CMP CX,216
             JZ LOOP2
             JMP LOOP1
LOOP2:             INC DX
             CMP DX,225
             JZ END_1
             JMP LOOP3
END_1:             xor ah,ah
             int 16h
             MOV AH,0
             MOV AL,3
             INT 10H
             MOV AX,4C00H
             INT 21H
CODE ENDS
END START

;;;;
很久之前写的一个简单些的,直接输出一个“建”字在屏幕上。
2009-2-12 09:53
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
附件是一个可以调用UCDOS字库显示汉字的程序,很久之前的代码,希望有帮助。
上传的附件:
2009-2-12 10:09
0
雪    币: 335
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
呵呵,好老,好怀念。
2009-2-12 11:09
0
雪    币: 199
活跃值: (102)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好像以前有个pdos95之类的命令,进入dos后执行它就可以了
2009-2-12 11:54
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
10
DOS显示汉字是图形模式显示的。也就是说实际上是“画”汉字,不是“写”汉字。字库文件其实就是汉字的像素点阵图。
2009-2-12 13:39
0
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
学习一下
2009-2-12 21:22
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢各位大侠的指点!
请问asmdebuger:我下载您的附件,直接与你选你那个china.com一闪而过,看不到没有任何显示。
我使用masmplus建立一个dos.exe工程,复制您那个china。asm源代码,运行是提示:
ml.exe /c /coff /nologo /Fo"CHINA.obj" "C:\TDDOWNLOAD\汉字库\xianshi\CHINA.ASM"
link.exe /SUBSYSTEM:WINDOWS /nologo /OUT:"CHINA.exe" "CHINA.obj"
CHINA.obj : fatal error LNK1190: invalid fixup found, type 0x0001

请问怎么办?对了,我电脑下载了那个UCDOS,但是也是一样

不知问题在什么地方?

请教请教,谢谢先
2009-2-12 21:55
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
我直接用Tasm编译通过的,生产的是COM文件,附批处理程序:
@ECHO OFF
tasm %1.asm   
if errorlevel 1 goto dela
tlink %1.obj /t
GOTO END
:dela
del %1.map
del %1.obj
pause
:edit %1.asm
goto end

:end
pause
运行需要TASM.EXE 和TLINK.EXE 程序支持。
CHina.COM我在XP2下运行可以显示,不知道你的什么系统,如果实在不行,可以先运行CMD,然后再运行CHINA.COM程序,只要字库文件在同一目录,运行时会显示汉字的。

注意:这样的方法显示汉字是画出来的,读字库的点阵信息再写显存的形式,所以并不需要UCDOS和PDOS95批处理运行。
2009-2-13 08:24
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我的也是Xp+sp2,但是电脑没有安装tasm和tlink
我平时使用的是masm32 10
2009-2-13 15:39
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
用32位编译器编译会出现类似错误。
搞汇编感觉还是装个98或者DOS最方便,省得很多麻烦,因为汇编有可能直接操作硬件接口,XP的虚拟实现不一定正确。
2009-2-14 09:10
0
雪    币: 217
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
强悍....
2009-2-14 11:03
0
游客
登录 | 注册 方可回帖
返回
//