中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 扩展INT 13中DAP的数据在内存中的情况???
作者:
标题: 扩展INT 13中DAP的数据在内存中的情况??? 上一主题 | 下一主题
ilbgh11
初级用户





积分 60
发帖 21
注册 2008-7-17
状态 离线
『楼 主』:  扩展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 ]

2008-9-12 10:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cjt211
新手上路





积分 8
发帖 2
注册 2006-4-11
状态 离线
『第 2 楼』:  

没有错,表示从lba7的地方读1个扇区到2000:100

2008-9-12 14:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netwinxp
高级用户





积分 741
发帖 366
注册 2007-7-25
状态 离线
『第 3 楼』:  

1、注意BlockCount不要超过127。
2、LBA地址是从0开始的。

2008-9-15 08:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: