C/H/S与LBA的转换关系

       为了与C/H/S寻址模式相兼容,大容量的硬盘一般也支持模拟的C/H/S寻址,此时的C/H/S参数都是模拟出来的,而不是实际的物理值。而且目前大多数的资料、磁盘工具类软件采用的硬盘参数介绍和计算方法,以及数据恢复技术中一般还是使用相对比较简单的C/H/S寻址模式进行定位,因此,应掌握C/H/SLBA的转换关系
1C/H/SLBA的转换规则
硬盘系统在写入数据时,是按照从柱面到柱面的方式进行的,即在上一个柱面写满数据后才移动磁头到下一个柱面,并从柱面的第一个磁头的第一个扇区开始写入,从而使硬盘性能最优。所以,在对物理扇区进行线性编址时,也会按照这种方式进行。
这里假设一个硬盘按物理扇区划分为1024个柱面、4个磁头、每磁道63个扇区,则C/H/SLBA的转换关系如表1-1所示。
1-1
C/H/S
LBA的转换关系

C/H/S地址

LBA编号

柱面

磁头

扇区

0 0 1 0
0 0 2 1
0 0 363 262
0 1 1 63
0 1 263 64125
0 2 163 126188
0 3 163 189251
1 0 1 252
1 0 263 253314
1 1 1 315

知识提示:物理扇区是指某个扇区在硬盘上的绝对位置,可以由柱面、磁头与扇区来唯一定位,即柱面、磁头、扇区与硬盘上每一个扇区有一一对应关系。
2C/H/SLBA的转换公式
掌握了C/H/SLBA的转换规则,就可以通过公式对两种寻址模式进行相互转换。这里首先讲解从C/H/SLBA的转换公式。
CHS分别表示当前硬盘的柱面号、磁头号、扇区号,CSHSSS分别表示起始柱面号、磁头号、扇区号,PS表示每磁道扇区数,PH表示每柱面总的磁道数。则C/H/SLBA的转换公式为:
LBA=C–CS)×PH×PS+H–HS)×PS+S–SS
一般情况下,CS=0HS=0SS=1PS=63PH=255,则根据上面公式,可知C/H/S=0/0/63时,LBA=62;当C/H/S=0/1/1时,LBA=63;当C/H/S=185/20/50时,LBA=2 973 334
3LBAC/H/S的转换公式
在介绍从LBAC/H/S的转换公式前,先来了解DIVMOD两种运算符(这里指对正整数的操作)。DIV是做整除运算,即被除数除以除数所得商的整数部分,如3 DIV 2=18 DIV 3=2MOD运算则是取余数,如5 MOD 3=210 MOD 3=1DIVMOD一般都结合使用,它们一个取整数部分,一个取余数部分。
各参数仍按照上述假设值,则从LBAC/H/S的转换公式为:
C=LBA DIVPH×PS+CS
H=LBA DIV PSMOD PH+HS
S=LBA MOD PS+SS
LBA=0时,根据上面公式可得C/H/S=0/0/1;当LBA=63时,得C/H/S=0/1/1,当LBA=2 973 334时,代入公式得C/H/S=185/20/50
若不想使用MOD运算符,只使用DIV运算符,则转换公式可改为:
C= LBA DIVPH×PS+ Cs
H=LBA DIV PSC-Cs)× PH + Hs
S=LBA–C–Cs)× PH
× PSH–Hs)×Ps + Ss

;------------------------------------------------------------------

实现LBA转C/H/S (这种转换好如给一个十进制整数,要你取得每一个十进制位,只不过进位有些不同1024 255 63):

逻辑扇区LBA=0        => C/H/S=0/0/1
逻辑扇区LBA=63       => C/H/S=0/1/1
逻辑扇区LBA=2973334  => C/H/S=185/20/50

绝对扇区=(逻辑扇区 mod 每个柱面的总扇区数) +1
绝对磁头=(逻辑扇区/每个柱面的总扇区数) mod 总磁头数
绝对柱面= 逻辑扇区/(每个柱面的总扇区数 * 总磁头数)

小技巧:

对于1.44软盘可以用下面的汇编段转换

DIV r/m16            DX:AX by r/m16, with result stored in
                               AX ← Quotient, DX ←Remainder

Lbachs:
xor  dx, dx
div  WORD [SectorsPerTrack]
inc  dl
mov  BYTE [absoluteSector], dl
xor  dx, dx
div  WORD [NumHeads]
mov  BYTE [absoluteHead], dl
mov  BYTE [absoluteTrack], al
ret

 

你可能感兴趣的:(c,汇编,div,工具,byte,磁盘)