Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 是否在空虚拟机实例中运行程序集?_Assembly_Virtualbox_Hobby Os - Fatal编程技术网

Assembly 是否在空虚拟机实例中运行程序集?

Assembly 是否在空虚拟机实例中运行程序集?,assembly,virtualbox,hobby-os,Assembly,Virtualbox,Hobby Os,如何在空的虚拟机(virtualbox、vmware)实例中运行程序集代码 我想尝试编写一个简单的引导加载程序。我的目标是为一个爱好操作系统工作 您必须在虚拟硬盘上写入正确的主引导记录。为了做到这一点,我们必须了解引导过程到底是如何工作的,以及代码在哪个地址执行。这里没有足够的空间来写所有的细节,但是有很多描述它们的网页。简单地说,在初始引导post(开机自检)之后,BIOS搜索存储设备,直到找到第一个扇区的最后两个字节包含小端字AA55h(MBR引导签名)的存储设备。然后BIOS将引导扇区从可

如何在空的虚拟机(virtualbox、vmware)实例中运行程序集代码


我想尝试编写一个简单的引导加载程序。我的目标是为一个爱好操作系统工作

您必须在虚拟硬盘上写入正确的主引导记录。为了做到这一点,我们必须了解引导过程到底是如何工作的,以及代码在哪个地址执行。这里没有足够的空间来写所有的细节,但是有很多描述它们的网页。简单地说,在初始引导post(开机自检)之后,BIOS搜索存储设备,直到找到第一个扇区的最后两个字节包含小端字AA55h(MBR引导签名)的存储设备。然后BIOS将引导扇区从可引导设备加载到地址0000h:7C00h(请注意,这都是在实x86模式下完成的),并将执行转移到引导代码。MBR只有512字节的空间限制,因此引导通常被转发到下一个阶段,即MBR中的小代码用于将另一个引导代码从磁盘加载到内存中的某个位置,然后将执行转移到内存中。从虚拟软盘引导可能有些不同。
在现代系统中,MBR与GPT交换。正如您所看到的,这里涉及到很多事情,尽管不像看上去那么困难。

在虚拟机中写入引导扇区与在真实机器上写入引导扇区是一样的。您必须创建一个引导光盘,该光盘将在目标驱动器上安装引导加载程序。因此,您必须基本上执行以下步骤:

1. Write a bootloader and put it in an imagefile. (http://wiki.osdev.org/Babystep1)
2. create a boot disc, which will put the image into the bootsecotr of your target harddisc (This can be a simple DOS disk or a linux environment, hwatever. (http://wiki.osdev.org/Bootable_CD)
3. boot from the loader in your environment.

查看我在上面第一条评论中发布的链接,应该可以详细解释所有这些问题。

因为这个问题相当广泛,你可能会考虑看这里:与真正的机器没有什么不同。虽然这个问题特别需要虚拟箱,但值得注意的是QEMU将很高兴地运行NASM Out-Box汇编程序所生成的.bin文件。首先,谢谢你的回答。我知道编写引导加载程序是一个广泛的问题。我只是想问,是否可以在一个空的虚拟框中开始写作?好的,我想提供更多的信息:)为了编写任何需要文本编辑器和编辑器支持的基础结构的内容。这些不存在于空虚拟机中。