gpt4 book ai didi

assembly - 使用 16 位模式打印没有 bios 例程的字母

转载 作者:行者123 更新时间:2023-12-04 10:58:33 26 4
gpt4 key购买 nike

我意识到在保护模式下,可以通过修改内存位置 0xb8000 等来使用内存映射 I/O 来打印字母......
我们可以在 16 位实模式下做到这一点吗? (使用分段访问位置,然后对其进行修改)

这是我的汇编代码...

[bits 16]
mov ax,0xb800
mov ds,ax #This is the segment register that should hopefully give me 0xb8000
mov byte[ds:0x0000],'X'
mov byte[ds:0x0001],0x0f

times 510-($ -$$) db 0
dw 0xaa55

这不起作用顺便说一句..

[编辑]
结果我最后需要 jmp $ 以防止任何随机代码执行并且代码按预期工作

最佳答案

它应该可以工作,但有两种可能的失败原因:

  • 如果您尚未处于文本模式,则 B800 段不用于在屏幕上呈现文本。 (很可能使用现代 BIOS)
  • 如果您有单色屏幕,您的图形卡可能会决定使用 B000 而不是 B800。 (现代 BIOS 不太可能)。
  • 关于assembly - 使用 16 位模式打印没有 bios 例程的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59005405/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com