我在Assembly(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
答案 0 :(得分:12)
嗯,显然:-)你的“print_string”子程序认真对待0x0a - 它被称为“LF”,它就是这样,前进到下一行。
我的猜测是使用0x0a 0x0d就可以了。
答案 1 :(得分:2)
我相信发送\r
会使光标返回到屏幕的左侧。因此,您应该使用\r\n
或类似的东西来制作新行。
我不确定没有更多细节。我不确定你的print_string程序是如何实现的。如果通过BIOS调用实现,例如通过使用int 0x10,AH = 0x0E遍历字符串,则上述解决方案将起作用,或者您可以执行类似于使用int 0x10,AH = 0x03来手动调整光标位置的操作。