无需系统调用即可打印字符串的正确方法

时间:2018-07-10 15:16:59

标签: assembly x86 nasm

我想在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')而已。
那么这段代码是什么问题呢?
我该怎么做才能解决它?

0 个答案:

没有答案