2

我用汇编(NASM 语法)编写了一个简单的引导加载程序,但是当我在 QEMU 中运行它时,换行符显示如下:

在此处输入图像描述

这是我的代码:

有没有办法阻止0Ah向前推进线路?

.loop_top:

mov si, text_string ; Put string position into SI
call print_string   ; Call our string-printing routine

loop .loop_top

jmp $           ; Jump here - infinite loop!


text_string db "This is my cool new OS!", 0Ah, 0
4

2 回答 2

12

好吧,显然 :-) 你的“print_string”子例程认真对待 0x0a——它被称为“LF”,它就是这样做的,前进到下一行。

我的猜测是使用 0x0a 0x0d 就可以了。

于 2012-07-03T22:36:09.007 回答
2

我相信发送 a\r会使光标返回到屏幕的左侧。所以,你应该使用\r\n或类似的东西来制作新的线条。

我不确定没有更多细节。我不确定您的 print_string 过程是如何实现的。如果通过 BIOS 调用实现,例如使用 int 0x10, AH=0x0E 循环遍历字符串,则上述解决方案将起作用,或者您可以执行类似使用 int 0x10, AH=0x03 手动调整光标位置的操作。

于 2012-07-03T23:00:29.617 回答