Konvertieren eines logischen Sektors in ein CHS-Tupel auf einer SSD

354
Irrationality

Ich gewöhne mich an die x86-Assembly, also dachte ich, ich würde mit einigen 16-Bit-Programmen anfangen. Um mich selbst zu testen, erstelle ich ein Programm, das Daten von einer Festplatte lädt, in den Speicher kopiert und dann für das nächste Bit verwendet. Es wird den MBR ersetzen, also kann ich nur grundlegende Interrupts verwenden (das Ganze wird nur eine Art "Scherzvirus" für meine Verwendung sein).

Der Interrupt, um Daten von einer Platte zu lesen und im Speicher abzulegen, erfordert Argumente im CHS-Format. Mein Hauptlaufwerk ist jedoch eine SSD. Ich kann nichts online finden, was mir in dieser Situation helfen wird, da SSDs offensichtlich nicht für Zylinder funktionieren.

Meine Frage ist, gibt es eine Möglichkeit, eine logische Sektornummer auf meiner SSD in ein CHS-Tupel "umzuwandeln", um das Programm zu überlisten, oder ist das unmöglich?

0

1 Antwort auf die Frage

0
Robin Green

Früher war es möglich, die Anzahl der logischen Zylinder, Köpfe und Sektoren für ein Laufwerk im BIOS zu ermitteln (als Benutzer - dies ist auch programmgesteuert möglich, da das Linux-Dienstprogramm fdisk dies getan hat, dies jedoch nicht mehr tut) ). Sie können dann mit der Formel nach c, h und s suchen

A = (c ⋅ Nheads + h) ⋅ Nsectors + (s - 1)

Wenn A die LBA-Adresse ist, ist Nheads die Anzahl der Köpfe auf der Platte, Nsectors ist die maximale Anzahl von Sektoren pro Spur und (c, h, s) ist die CHS-Adresse (von 1 ).

Es ist auch möglich, die CHS-Geometriewerte im BIOS zu ändern. Tun Sie dies jedoch nicht, da Betriebssysteme, die darauf angewiesen sind, wie Windows, nicht mehr bootfähig sind.