我想在x86 Assembly(NASM)中创建一个打印功能,以在不使用任何OS(即不使用任何系统调用)的情况下将字符串打印到终端。
到目前为止,我编写了以下代码:
main.asm
[org 0x7c00] ; load our boot sector here
%include "print_function.asm" ; the print function is declared outside this file
mov bx, msg ; mov the message to BX
call print ; call the print function
jmp $ ; hang
msg:
db "Hello World!", 0 ; our string
times 510-($-$$) db 0 ; padding
dw 0xaa55 ; magic number
print_function.asm
print:
pusha ; push all register to the stack before anything lese
mov ah, 0x0e ; tty mode
int 0x10 ; print to the screen(with an interrupt)
popa ; pop all the values
ret ; return to the caller
问题是,当我打开运行二进制文件时,它只打印一个字符('U')而已。
那么这段代码是什么问题呢?
我该怎么做才能解决它?