BZBZR 2022-12-28 11:49 采纳率: 0%
浏览 60
已结题

nasm 点阵显示汉字出现问题

仿照网上很多人的代码我用nasm写了显示汉字的代码
但是可能是我用错了方法,点阵无法显现,一行只出现了一个点,照理说应该是按照0000110,出现两个点,但是结果是只有一个点,在6的位置
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

img

我找了很多的例子,大多都是这样的写法,但是用的都是masm,可能我用nasm就不行莫,那该怎么改呢?
有木有人可以解答呀,哭辽,搞了好久都搞不来这种办法的文字显示,徒手画太麻烦了~
  • 写回答

3条回答 默认 最新

  • |__WhoAmI__| 2022-12-28 12:32
    关注

    在代码中,使用了一个名为 TW 的数据段,并将一些十六进制数存储在其中。还定义了一个名为 start 的位置,并使用 jmp 指令将程序转移到 start 位置。然而,没有在 start 位置提供任何代码,所以程序不会执行任何操作。

    为了使代码能够正常工作,需要在 start 位置提供代码,使用 TW 数据段中的信息来显示汉字。这可能需要使用一些特定的指令或函数,具体取决于汉字显示器的类型和硬件平台。

    此外可能需要使用汉字显示器提供的文档或其他资料来了解如何使用 TW 数据段中的信息来显示汉字。这些文档可能会提供更多有关如何使用 TW 数据段的信息以及如何使用其他指令或函数来完成任务的详细信息。
    望采纳。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 赞助了问题酬金15元 12月28日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择