NASM:如何正确访问SSD驱动器?

sta*_*wer 3 assembly solid-state-drive nasm hard-drive x86-16

我需要使用 NASM 16 位代码访问 SSD 驱动器。访问普通硬盘时,需要设置寄存器AX、DX、CX来选择柱面/磁道/扇区/扇区数(AH-选择读扇区功能,DL-选择盘号,CH-选择柱面,DH-选择磁盘上的面,CL - 选择磁道上的扇区,AL - 选择扇区数)。

但是,我想SSD磁盘还有一些其他结构,那么如何正确访问它们呢?

Bre*_*dan 6

假设将假几何图形转换为 LBA(最有可能的情况),“int 0x13, ah=0x02”最多只能处理 16515072 个扇区。每个扇区为 512 字节(也是最有可能的情况),计算结果为 8064 MiB 或大约 7.8 GiB。大约 20 年来,硬盘(包括 SSD)的容量一直比这个大;所以“int 0x13,ah=0x02”不是一个明智的选择。

相反,对于硬盘驱动器(包括 SSD),您需要使用“int 0x13, ah=0x42”(请参阅​​ http://www.ctyme.com/intr/rb-0708.htm)。该函数使用LBA地址,不使用CHS;并且(具有 64 位 LBA 地址和每个扇区相同的 512 字节)它可以处理(最多)8589934592 TiB 驱动器。