- UID
- 1
- 精华
- 244
- 积分
- 75929
- 威望
- 743 点
- 宅币
- 24239 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 最后登录
- 2024-4-23
- 在线时间
- 2297 小时
- QQ
用户组: 管理员
一只技术宅
- UID
- 1
- 精华
- 244
- 威望
- 743 点
- 宅币
- 24239 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 在线时间
- 2297 小时
- 注册时间
- 2014-1-26
|
LBA转CHS寻址的方式,c语言的表示方法如下:
柱面号 = (LBA / 每磁道扇区数) / 磁头数;
磁头号 = (LBA / 每磁道扇区数) % 磁头数;
扇区号 = (LBA % 每磁道扇区数) + 1;
16位汇编实现的代码:- mov ax,[LBA]
- mov bx,缓冲区
- mov es,段
- xor dx,dx
- div word[每磁道扇区数]
- inc dx ;dx=扇区
- mov cl,dl
- xor dx,dx
- div word[磁头数]
- ;此时ax=柱面, dx=磁头
- mov ch,al
- mov dh,dl
- mov dl,驱动器号
- mov ax,0x0201 ;读取1个扇区
- int 0x13 ;读取
- jnc .ReadOK ;读取成功,跳转
复制代码 |
|