【问题标题】:Can unicode characters be printed in emu8086?emu8086可以打印unicode字符吗?
【发布时间】:2017-10-05 16:13:44
【问题描述】:

我正在通过使用背景颜色和符号来表示花色,从一副纸牌中创建 A 的“图片”。我设法在卡片的左上角打印了“A”,但我对如何在右下角打印倒置的“A”(∀)感到困惑。这可以在emu8086中做到吗?我是汇编和 8086 方面的初学者。我在这里看到了一个关于打印 unicode 字符的类似问题的答案,但我不明白渲染或将 unicode 字形映射到字符表索引的含义。或者如果这是不可能的,有没有办法让打印的字符在emu8086中看起来反转?因为我还需要反转 4 个花色符号。

【问题讨论】:

    标签: assembly unicode emu8086


    【解决方案1】:

    像 emu8086 这样的 CPU 模拟器通常不仅模拟 CPU(CPU 没有屏幕!),还模拟一些硬件组件。

    我认为 8086 模拟器可以模拟一些 1980 年代或 1990 年代的图形适配器。

    图形适配器能够显示“固定”字符集(例如代码页 437)。

    更高级的适配器(例如 EGA 或 VGA 卡)也能够将默认设置的 256 个字符交换为 256 个用户定义的字符 - 但只有 256 个。

    此类适配器可以做的第三件事(除了纯文本适配器)是显示图形(例如 320x200、640x200、640x350 或 640x480 像素)。在这种情况下,您可以直接绘制箭头,而不是使用“A”来表示“向上箭头”。

    顺便说一句:代码页 437 有四个箭头(用于四个方向),您可以使用它来代替“A”。

    【讨论】:

    • 只是加上上面好信息的后果。在普通文本模式(VGA 80x25 字符)中,您不能显示 UTF8 文本,因为您最多只能定义 256 个不同的文本,而 80x25 = 2000,因此使用超过 256 个不同字形的文本将无法呈现。在图形模式下,您可以绘制任何您想要的字形(考虑到您设法使它在低分辨率屏幕上看起来不错,并且您设法将字体数据塞进内存中,这对于完整的 UTF8 来说可能也是不可能的,因为您只有大约 400-500kiB 的内存)。无论哪种方式,您都必须编写大量自己的代码才能做到这一点。
    • @OP:由于您只对绘制卡片组感兴趣,而不是任何 UTF8 文本,请探索旧的 VGA 默认字体以查看哪些符号已经可用,结果可能是足够了,或者使用自定义字体数据创建更多额外的字形,然后将它们作为文本的一部分输出。完全进入图形模式是另一种选择,将图像用于卡片,但我会从文本模式和 VGA 字符集开始,有常见的卡片符号,只有颠倒的字母不可用。 (上面的 UTF8 是指“unicode”字符。让我咯咯笑,PC 启动时 unicode 不存在)
    • 感谢您的帮助。我仅限于 VGA 80x25 字符,所以我想我只需要有创意并使用已经可用的符号。谢谢你们两个。
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多