哪些汇编指令存在于主引导记录中?

iok*_*ins 5 x86 mbr

想知道显式汇编指令实际构成X86架构上的主引导记录.感谢您的任何见解.

其他架构受到欢迎,但主要是针对X86.

t0m*_*13b 13

主引导记录由512个字节组成,最后两个字节必须为0x55 0xAA.剩下510个字节,分区表条目是16个字节,最多4个分区表项,即64个字节.是分区条目的样子.

剩下的是446个字节的汇编代码.通常前几个字节由一个引导标识符记录组成,描述引导加载程序的磁盘数据,例如标识符,系统ID,仅举几例,然后BIOS期望引导代码为0x000:0x07C00,然后它将自己重新定位在内存部分.有关引导加载程序的示例教程,请参见此处.有关于它维基的详细技术概述这里.

唯一需要注意的是,引导加载程序代码不得超过446字节,否则分区表会被搞砸,因此BIOS错误消息'错误.缺少操作系统'或类似!

将引导扇区编译的二进制文件写入磁盘将涉及一种混乱且危险的方式来拧紧计算机通常,在Linux下命令类似于:

# Assume that /dev/hda1 is the first hard disk then...
dd if=mybootldr.bin of=/dev/hda1 bs=512 cnt=1

另一种方法涉及使用低级磁盘编辑器程序,甚至使用普通的旧版DEBUG.EXE(可在旧的MSDOS磁盘上找到),甚至使用FreeDos.

C:\DEBUG.EXE mybootldr.bin 
-W 100 0 0 1 
-Q

如果我记得,DR.DOS(Digital Research DOS)是MS-DOS的竞争对手,在DR-DOS启动之前对引导加载程序代码使用了密码保护.

编辑:如果你真的很好奇,至于BIOS如何查找为0x0000:0x7C00,看看这个链接,可以在其中下载原始IBM XT的BIOS代码在这里.

希望这会有所帮助,最好的问候,汤姆.


Leo*_*das 4

在这里查找 grub1 中 stage1 中经过剖析的 MBR-bootloader:http://thestarman.pcministry.com/asm/mbr/GRUB.htm