中断INT 13H的扩展功能
来源:互联网 发布:专业制谱软件 编辑:程序博客网 时间:2024/06/05 17:21
中断INT 13H的扩展功能
由于旧有的INT 13H中断只能采用10位二进制来表示磁道,所以对于大于8.4G的硬盘它已不能完全读写了。扩展INT 13H又称为INT 13 Extension APIs,它主要就是用来对超过1024个磁道的硬盘进行读写的。
1.数据结构(Data Structure)
该数据结构是提供给扩展INT 13H使用的,它是建立在逻辑扇号之上的,具体结构如下:
disk_addr_pkt struc ; 磁盘地址包
packet_size db 16 ; 磁盘参数包的尺寸,必须为10H
reserved db 0 ; 保留,必须为零
block_count dw ? ; 传输的扇区数
buffer_addr dd ? ; 内存缓冲区地址(段:偏移)
block_num dq ? ; 起始绝对扇区号(即起始扇区的LBA号码)
disk_addr_pkt ends
结构中前两项是固定的,用到的是后三项。起始绝对扇区号即前面讲到的逻辑扇区号,从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_size dw 26 ;缓冲区的大小
Flags dw ? ;信息标志
Cylinders dd ? ;number of cylinders on disk
Heads dd ? ;number of heads on disk
Sec_per_track dd ? ;number of sectors per track
Sectors dq ? ;number of sectors on requested disk
Sector_size dw ? ;number of bytes per sector
失败则 CF=1, AH=错误码
错误码的定义与原来的相同,增加的几个在此用不到。
- 中断INT 13H的扩展功能
- INT 10H中断功能详解
- INT 13中断功能
- INT 13中断功能
- INT 13中断功能
- 扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构
- 扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构
- 扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构
- 扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构
- DOS下的int 10h中断
- X86 中断指令 INT 21H 功能记录
- 基于扩展INT 13H的光驱引导程序设计
- 浅析 Legacy INT 13h中断函数
- INT 10H中断
- INT 10H中断
- INT 10H中断
- 中断INT 21H
- 中断 INT 20H
- 嵌入式Linux 的Cramfs 根文件系统配置成可读可写
- 程序员:伤不起的三十岁
- Excel列序号生成字母表示
- HQL
- tree的实现 java, 二叉树的实现
- 中断INT 13H的扩展功能
- linux串口驱动分析
- static inner class和非static inner class的实例化问题
- linux 不删除文件,清空文件内容命令
- 获取信息的有关Windows API
- Eclipse C/C++开发环境搭建----Window版
- 单选复选设置为只读灰色
- 解析C语言中的sizeof
- J2ME/J2EE实现用户登录交互