2
我想学习一个简单的helloworld引导程序程序。指这link。我已经使用nasm
汇编器成功生成了这个汇编代码的二进制文件,并使用仿真器bochs
运行,它工作正常。 但是,当我直接用硬盘做同样的事情时,我无法将字符串打印到屏幕上。打印helloworld的基本引导程序程序不起作用
请在下面找到我用过的代码。
[BITS 16]
[ORG 0x7C00]
MOV SI, HelloString
CALL PrintString
JMP $
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
PrintString:
next_character:
MOV AL, [SI]
INC SI
CALL PrintCharacter
OR AL, AL
JZ exit_function
JMP next_character
exit_function:
RET
HelloString db "Pell",0
TIMES 510 - ($ - $$) db 0
DW 0xAA55
像往常一样,你忘了初始化'DS'。 – Jester
您能否介绍一下DS的功能?我是初学者。 – skesh
我在另一个SO答案中有[Bootloader Tips](http://stackoverflow.com/a/32705076/3857942)。可能需要设置像_DS_一样的段寄存器。当你说硬盘驱动器,你的意思是你在真正的硬件上启动? –