装配换行符

时间:2012-07-03 22:31:56

标签: string assembly x86

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

enter image description here

这是我的代码:

有没有办法阻止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

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:2)

我相信发送\r会使光标返回到屏幕的左侧。因此,您应该使用\r\n或类似的东西来制作新行。

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