繁体   English   中英

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

[英]Using 16 bit mode to print a letter WITHOUT bios routines

我意识到在保护模式下,可以通过修改内存位置 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 不太可能)。

结果我只需要最后的 jmp $ 来防止任何随机代码执行..代码按预期工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM