我正在使用0xa
字符串末尾的指令来创建换行符,以便打印的最后一个字符串不会进入下一个。
mov bx, MESSAGE
call print_string
mov bx, ANOTHER
call print_string
hlt
print_string:
pusha
string_loop:
mov al, [bx]
cmp al, 0
jne print_char
popa
ret
print_char:
mov ah, 0x0e
int 0x10
add bx, 1
jmp string_loop
;global vars
MESSAGE: db 'Example string',0xa,0
ANOTHER: db 'Another example string',0xa,0
;padding/magic number
times 510-($-$$) db 0
dw 0xaa55
唯一的问题是,虽然字符串确实在最后一行下方打印了一行,但新行不会重置屏幕上的 x 位置,因此它不是直接在前一个字符串下方打印,而是在前一个字符串下方和之后打印.
示例输出:
Example string
Another example string
如何编写此代码以使字符串直接打印在前一个字符串下?