int13h:中断INT 13H的扩展功能的实现

由于旧有INT13H中断只能采用10位二进制来表示磁道所以对于大于8.4G硬盘它已不能完全读写了扩展INT13H又称为INT13ExtensionAPIs,它主要就是用来对超过1024个磁道硬盘进行读写

1.数据结构(DataStructure)
该数据结构是提供给扩展INT13H使用它是建立在逻辑扇号之上具体结构如下:

disk_addr_pktstruc;磁盘地址包
packet_sizedb16;磁盘参数包尺寸必须为10H
reserveddb0;保留必须为零
block_countdw?;传输扇区数
buffer_addrdd?;内存缓冲区地址(段:偏移)
block_numdq?;起始绝对扇区号(即起始扇区LBA号码)
disk_addr_pktends

结构中前两项是固定用到是后三项起始绝对扇区号即前面讲到逻辑扇区号从0开始编号

2.扩展读功能
入口:AH=42H
DL=驱动器号(硬盘是80H)
DS:SI=磁盘地址包(即前面数据结构地址)
出口:成功则CF=0,AH=0
失败则CF=1,AH=
3.扩展写功能
入口:AH=43H
AL=0(不校验)
=1(校验)
DL=驱动器号
DS:SI=磁盘地址包
出口:成功则CF=0,AH=0
失败则CF=1,AH=
注:般取AL=0
4.获得驱动器参数
入口:AH=48H
DL=驱动器号
DS:SI=返回结果地址
出口:成功则CF=0,AH=0
DS:SI指向返回数据结构地址:

Info_sizedw26;缓冲区大小
Flagsdw?;信息标志
Cylindersdd?;numberofcylindersondisk
Headsdd?;numberofheadsondisk
Sec_per_trackdd?;numberofsectorspertrack
Sectorsdq?;numberofsectorsonrequesteddisk [Page]
Sector_sizedw?;numberofspersector

失败则CF=1,AH=
定义与原来相同增加几个在此用不到
Tags:  int13扩展 中断irq19int int中断 int13h

延伸阅读

最新评论

发表评论