当前位置:  开发笔记 > 编程语言 > 正文

如何使用BIOS下的USB闪存驱动器执行低级IO(与软盘相比)?

如何解决《如何使用BIOS下的USB闪存驱动器执行低级IO(与软盘相比)?》经验,为你挑选了1个好方法。

我最近一直在研究一些用于软驱的bootstrap代码.我的目标是修改程序,以便它使用我的USB闪存驱动器.现在我看到INT 13H功能如何与软盘设备一起使用,但我想我的问题是,与USB驱动器的通信将如何不同?

例如,这是一个软盘代码片段(GNU汇编程序):

    movb    $0x00,%dl       /* select 1st floppy */

    /* later */

    movw    sec,%cx     /* get sector number */
    movw    head,%dx    /* get head number */

    movw    $0x0201,%ax /* read 1 sector */
    int $0x13

现在我已经读过将0x80移动到%dl将选择BIOS中的第一个HDD.在我的特定BIOS中,我可以更改驱动器顺序,其中包括USB驱动器.我很确定这会依赖于BIOS,但我认为BIOS中列出的顺序可能与我进入%dl的值相对应.我需要追踪一些文档......

我真的不熟悉使用块设备,有人能指出我开始学习更多的好地方吗?

谢谢!



1> Mike Gonta..:

简单的答案是,如果BIOS可以从USB闪存驱动器启动,则可以使用用于软盘/硬盘驱动器访问的相同BIOS功能.

令人高兴的答案是,一种简单的技术允许相同的引导扇区代码访问USB闪存驱动器上的软盘映像,无论它是使用软盘模拟还是硬盘驱动器模拟引导的.如果dl = 80h(硬盘仿真)

获取驱动器参数
int 13h,ah = 8
返回:
ch =最大扇区号(与每个磁道的扇区数相同)
dh =最大磁头数(只需加1即可获得磁头数)

此返回的信息描述了仿真设备的几何形状(如果dl = 0则为标准软盘几何 - 每个磁道18个扇区和2个磁头).这可用于计算所需的气缸盖扇区信息:

READ SECTOR(S)
int 13h,ah = 2

WRITE SECTOR(S)
int 13h,ah = 3

见拉尔夫布朗的中断名单 - int 13h

在这里看我的帖子:USB Booting Secrets

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有