org 0x8400
jmp start
TW DB 01H,00H,01H,00H,01H,20H,05H,10H,19H,00H,09H,70H,0FH,80H,38H,90H,0AH,0A0H,0CH,40H,38H,0C0H,0CBH,24H,18H,14H,08H,0CH,00H,04H,00H,00H
DB 00H,00H,00H,20H,08H,20H,08H,40H,10H,58H,2CH,0E8H,75H,08H,46H,88H,74H,48H,44H,48H,44H,08H,3CH,08H,24H,28H,00H,10H,00H,00H,00H,00h
DB 00H,40H,10H,40H,08H,40H,00H,40H,00H,40H,30H,7CH,0D3H,0C0H,10H,40H,10H,40H,14H,40H,18H,40H,10H,40H,00H,40H,00H,40H,00H,40H,00H,00H
db 08H,58H,0FH,60H,08H,90H,15H,00H,23H,0C0H,04H,40H,07H,40H,04H,40H,07H,0C0H,04H,7EH,7FH,0C0H,04H,40H,04H,40H,08H,40H,10H,40H,00H,00H
db 10H,00H,10H,00H,10H,00H,10H,70H,1CH,90H,70H,0A0H,10H,0A0H,18H,0A0H,34H,0A0H,51H,22H,91H,22H,12H,1EH,14H,00H,10H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,0E0H,0FH,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,0FCH,7EH,00H,00H,00H,00H,00H,00H,00H,00H,00H
db 00H,40H,08H,40H,08H,80H,08H,9CH,11H,0E0H,31H,40H,52H,40H,94H,78H,10H,40H,10H,40H,10H,78H,10H,40H,10H,40H,00H,40H,00H,40H,00H,00H
db 00H,00H,00H,00H,00H,0F0H,0FH,00H,01H,00H,01H,00H,09H,30H,09H,0C0H,09H,00H,09H,00H,09H,00H,09H,0FCH,0FEH,00H,00H,00H,00H,00H,00H,00H
db 01H,20H,09H,40H,05H,00H,0FH,0F8H,70H,08H,4FH,0D0H,48H,80H,07H,00H,01H,0E0H,0FH,20H,09H,20H,09H,60H,09H,20H,01H,00H,01H,00H,00H,00H
start:
MOV AL,13H
MOV AH,00H
INT 10H
;输出 ‘我的计算机工作正常’--------------------
MOV AX,0A000H ;VGA写入起始段地址
MOV ES,AX ;设置传送目标段地址
CLD ;CLD指令使DF=0,正向传输字
MOV CX,9 ;连续的字数,此处“我的计算机工作正常”共9字
MOV SI,TW ;需写入汉字字模的首地址
MOV DI,320*20
DIS1:
PUSH CX ;多重循环,CX入栈
PUSH SI
PUSH DI
MOV CX,16
DISWORD1:
MOVSW
ADD DI,318 ;转到下一行字模写入位置,一个汉字16*16,故需写16行
LOOP DISWORD1
POP DI
POP SI
POP CX
ADD SI,32 ;读取下一个汉字的字模数据,由于一个汉字占用32byte,故加上32
ADD DI,10 ;开始写下一个汉字,默认写在上一个字右边
LOOP DIS1
在代码中,使用了一个名为 TW 的数据段,并将一些十六进制数存储在其中。还定义了一个名为 start 的位置,并使用 jmp 指令将程序转移到 start 位置。然而,没有在 start 位置提供任何代码,所以程序不会执行任何操作。
为了使代码能够正常工作,需要在 start 位置提供代码,使用 TW 数据段中的信息来显示汉字。这可能需要使用一些特定的指令或函数,具体取决于汉字显示器的类型和硬件平台。
此外可能需要使用汉字显示器提供的文档或其他资料来了解如何使用 TW 数据段中的信息来显示汉字。这些文档可能会提供更多有关如何使用 TW 数据段的信息以及如何使用其他指令或函数来完成任务的详细信息。
望采纳。
如果你在运行这个程序时遇到问题,可以尝试检查以下方面:
确保点阵数据的正确性。
确保程序的语法正确。
确保硬件设备正常工作。
nasm 与 masm 的语法可能略有不同,所以你可能需要对这个程序进行一些修改,才能在 nasm 中运行。
具体来说,你可以尝试以下方法来改写这个程序:
将所有的 masm 语法替换为对应的 nasm 语法。例如,mov ax,0A000h 可以改写为 mov ax,0A000。
将所有的 masm 内存修饰符替换为对应的 nasm 内存修饰符。例如,db 可以替换为 times。
检查所有的操作码是否与 nasm 兼容。例如,nasm 不支持 masm 中的 int 10h 指令。
确保所有的变量都被正确声明。
有关汉字系统的关键技术/纯汇编显示中文/汉字显示/Nasm源码
借鉴下
https://blog.csdn.net/jiaguoxinzhi/article/details/2918588