中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-31 09:39
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行
DOS开发编程 & 发展交流 (开发室) » 扩展INT 13中DAP的数据在内存中的情况???
可打印版本  1,642 / 2
第1楼 ilbgh11 发表于 2008-09-12 10:35
初级用户 发帖 21 积分 60
扩展INT 13中DAP的数据在内存中的情况???
我现在知道调用扩展INT13读写硬盘需要下面的参数:
AH=42/43(42读43写)
DL=驱动器号
DS:DI=DAP

其中DAP的结构是:
BYTE PacketSize; 数据包尺寸(恒为16字节)
BYTE Reserved; 保留,必须置0
WORD BlockCount; 要传输的数据块个数(以扇区为单位)
DWORD BufferAddr; 传输缓冲地址(segment:offset)
QWORD BlockNum; 磁盘起始绝对块地址

现在我想知道,假如我用下面的参数调用扩展INT13:

AH=42
DL=80
DS:DI=DAP
DS=1000
DI=0000
DAP
{
PacketSize=16
Reserved=0
BlockCount=1
BufferAddr=2000:0100
BlockNum=7
}

那么,在1000:0000处的数据是什么样子呢?
(从1000:0到1000:10的数据依次是什么)
会是下面这个样子吗?
10 00 01 00 00 01 00 20 07 00 00 00 00 00 00 00

这类程序我不常用,现在需要在DEBUG下运行,所以需要知道这些信息

[ Last edited by ilbgh11 on 2008-9-12 at 10:39 AM ]
第2楼 cjt211 发表于 2008-09-12 14:14
新手上路 发帖 2 积分 8
没有错,表示从lba7的地方读1个扇区到2000:100
第3楼 netwinxp 发表于 2008-09-15 08:34
高级用户 发帖 366 积分 741
1、注意BlockCount不要超过127。
2、LBA地址是从0开始的。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023