Assembly 如何在x86 Intel体系结构下运行的程序集引导加载程序中将内存从磁盘读取到RAM?

Assembly 如何在x86 Intel体系结构下运行的程序集引导加载程序中将内存从磁盘读取到RAM?,assembly,hardware,detection,bootloader,bios,Assembly,Hardware,Detection,Bootloader,Bios,这不是关于BIOS中断int 0x13 ah 0x02(=从驱动器读取扇区)服务的问题 这个问题的重点是 问题1。有没有一种方法可以在不使用BIOS中断的情况下将内存从磁盘读取到RAM(基于传统的引导过程,而不是UEFI) 问题2。如何在不使用BIOS中断的情况下将内存从磁盘读取到RAM 如果有一个方法,在一步一步的方式解释将不胜感激 这个问题的目的是 许多文章断言BIOS是如此过时和不可靠,所以我想避免使用它 如果有方法,它将在第一个引导扇区(0x7C00)中使用 这实际上是不可能的,因为

这不是关于BIOS中断int 0x13 ah 0x02(=从驱动器读取扇区)服务的问题

这个问题的重点是

问题1。有没有一种方法可以在不使用BIOS中断的情况下将内存从磁盘读取到RAM(基于传统的引导过程,而不是UEFI)

问题2。如何在不使用BIOS中断的情况下将内存从磁盘读取到RAM

如果有一个方法,在一步一步的方式解释将不胜感激

这个问题的目的是

  • 许多文章断言BIOS是如此过时和不可靠,所以我想避免使用它
  • 如果有方法,它将在第一个引导扇区(0x7C00)中使用

这实际上是不可能的,因为BIOS磁盘接口脱离了实际使用的磁盘控制器。磁盘
80h
很可能是一个带有自定义选项ROM的SCSI控制器,如果不询问BIOS,实际上无法找到引导磁盘对应的内容。即使你要找到答案,你也需要为这个设备编写一个驱动程序。祝你在512字节内完成所有这些工作,好运!在支持遗留BIOS的系统上,至少应该考虑到磁盘BIOS足够稳定,或者在那里会有大量的Bootloader软件。旧式BIOS正在逐步淘汰,但磁盘BIOS中断以实模式i(在支持旧式引导的系统上)运行实际上是首选的,特别是根据问题,考虑到您是从引导扇区运行此操作。但是,如果您的硬件支持,您可以查看一些基本功能,如直接使用ATA PIO模式:。一旦进入保护模式,您有两个选项(来回切换到实模式以进行BIOS调用,但这在没有传统BIOS的系统上不起作用,通常不是首选方法)或者直接编写驱动程序与硬件接口。如果你是为使用bios的系统开发的,我认为你不应该因为不使用中断而惩罚自己。bios一点也不过时,因为bios磁盘接口脱离了实际使用的磁盘控制器,所以这不可能实现。磁盘
80h
很可能是一个带有自定义选项ROM的SCSI控制器,如果不询问BIOS,实际上无法找到引导磁盘对应的内容。即使你要找到答案,你也需要为这个设备编写一个驱动程序。祝你在512字节内完成所有这些工作,好运!在支持遗留BIOS的系统上,至少应该考虑到磁盘BIOS足够稳定,或者在那里会有大量的Bootloader软件。旧式BIOS正在逐步淘汰,但磁盘BIOS中断以实模式i(在支持旧式引导的系统上)运行实际上是首选的,特别是根据问题,考虑到您是从引导扇区运行此操作。但是,如果您的硬件支持,您可以查看一些基本功能,如直接使用ATA PIO模式:。一旦进入保护模式,您有两个选项(来回切换到实模式以进行BIOS调用,但这在没有传统BIOS的系统上不起作用,通常不是首选方法)或者直接编写驱动程序与硬件接口。如果你是为使用bios的系统开发的,我认为你不应该因为不使用中断而惩罚自己。bios根本没有过时。