我指的是 BrokenThorn 的操作系统开发教程,目前正在阅读有关开发加载第二阶段的完整第一阶段引导加载程序的部分 - Bootloaders 4。
在将逻辑块地址 (LBA) 转换为气缸盖扇区 (CHS) 格式的部分中,这是使用的代码 -
LBACHS:
xor dx, dx ; prepare dx:ax for operation
div WORD [bpbSectorsPerTrack] ; divide by sectors per track
inc dl ; add 1 (obsolute sector formula)
mov BYTE [absoluteSector], dl
xor dx, dx ; prepare dx:ax for operation
div WORD [bpbHeadsPerCylinder] ; mod by number of heads (Absolue head formula)
mov BYTE [absoluteHead], dl ; everything else was already done from the first formula
mov BYTE [absoluteTrack], al ; not much else to do :)
ret
我无法理解这种转换背后的逻辑。我尝试使用一些示例值来遍历它并查看它是如何工作的,但这让我更加困惑。有人可以解释这种转换是如何工作的以及使用的逻辑吗?