Bochs无法加载img文件并加载
Bochs can't load img file and load it
目前,我正在尝试从头开始写一个小 OS。不幸的是,在第一步中,我遇到了一个让我抓狂的问题。我编写以下代码作为我的引导程序。
.code16 #generate 16-bit code
.text #executable code location
.globl _start;
_start: #code entry point
. = _start + 510 #mov to 510th byte from 0 pos
.byte 0x55 #append boot signature
.byte 0xaa #append boot signature
在下一步中,我使用以下命令编译它:
as bootloader.s -o bootloader.o
ld –Ttext 0x7c00 --oformat=binary bootloader.o –o bootloader.bin
然后我使用以下命令创建一个 img 文件:
dd if=/dev/zero of=boot.img bs=512 count=2880
dd if=bootloader.bin of=boot.img
最后,当我在终端中 运行 bochs 命令时,Bochs 只显示一个黑色 window 并且什么也没有出现。怎么了?
此外,我尝试了以下代码作为引导加载程序,但结果与之前的相同。
.code16 #generate 16-bit code
.text #executable code location
.globl _start;
_start: #code entry point
#print letter 'H' onto the screen
movb $'H' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'e' onto the screen
movb $'e' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'o' onto the screen
movb $'o' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter ',' onto the screen
movb $',' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print space onto the screen
movb $' ' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'W' onto the screen
movb $'W' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'o' onto the screen
movb $'o' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'r' onto the screen
movb $'r' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'd' onto the screen
movb $'d' , %al
movb [=13=]x0e, %ah
int [=13=]x10
. = _start + 510 #mov to 510th byte from 0 pos
.byte 0x55 #append boot signature
.byte 0xaa #append boot signature
您必须创建一个 bochs 文件才能正常工作。您也可以使用虚拟机。我测试了你的代码,它工作正常。
目前,我正在尝试从头开始写一个小 OS。不幸的是,在第一步中,我遇到了一个让我抓狂的问题。我编写以下代码作为我的引导程序。
.code16 #generate 16-bit code
.text #executable code location
.globl _start;
_start: #code entry point
. = _start + 510 #mov to 510th byte from 0 pos
.byte 0x55 #append boot signature
.byte 0xaa #append boot signature
在下一步中,我使用以下命令编译它:
as bootloader.s -o bootloader.o
ld –Ttext 0x7c00 --oformat=binary bootloader.o –o bootloader.bin
然后我使用以下命令创建一个 img 文件:
dd if=/dev/zero of=boot.img bs=512 count=2880
dd if=bootloader.bin of=boot.img
最后,当我在终端中 运行 bochs 命令时,Bochs 只显示一个黑色 window 并且什么也没有出现。怎么了?
此外,我尝试了以下代码作为引导加载程序,但结果与之前的相同。
.code16 #generate 16-bit code
.text #executable code location
.globl _start;
_start: #code entry point
#print letter 'H' onto the screen
movb $'H' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'e' onto the screen
movb $'e' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'o' onto the screen
movb $'o' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter ',' onto the screen
movb $',' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print space onto the screen
movb $' ' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'W' onto the screen
movb $'W' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'o' onto the screen
movb $'o' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'r' onto the screen
movb $'r' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'l' onto the screen
movb $'l' , %al
movb [=13=]x0e, %ah
int [=13=]x10
#print letter 'd' onto the screen
movb $'d' , %al
movb [=13=]x0e, %ah
int [=13=]x10
. = _start + 510 #mov to 510th byte from 0 pos
.byte 0x55 #append boot signature
.byte 0xaa #append boot signature
您必须创建一个 bochs 文件才能正常工作。您也可以使用虚拟机。我测试了你的代码,它工作正常。