Conversione del settore logico in tupla CHS su un SSD


0

Mi sto abituando all'assemblaggio x86, quindi ho pensato di iniziare con alcuni programmi a 16 bit. Per mettermi alla prova, sto creando un programma che caricherà i dati da un disco, li copierà in memoria e li userà per il prossimo bit. Sostituirà l'MBR, quindi posso usare solo interrupt di base (la cosa completa sarà una sorta di "virus scherzo" solo per il mio uso).

L'interrupt per leggere i dati da un disco e metterlo in memoria richiede argomenti in formato CHS, tuttavia la mia unità principale è un SSD. Non riesco a trovare nulla online che mi aiuti in questa situazione, perché gli SSD ovviamente non funzionano su cilindri.

La mia domanda è, c'è un modo per "convertire" un numero di settore logico sul mio SSD in una tupla CHS per ingannare il programma, o è impossibile?

Risposte:


0

Era possibile cercare il numero di cilindri, teste e settori logici per un disco nel BIOS (come utente - è anche possibile farlo in modo programmatico, dato che l'utility fdisk di Linux usava farlo, ma non lo fa più ). È quindi possibile risolvere per c, h e s utilizzando la formula

A = (c ⋅ Nove + h) ⋅ Nsettori + (s - 1)

dove A è l'indirizzo LBA, Nheads è il numero di teste sul disco, Nsectors è il numero massimo di settori per traccia e (c, h, s) è l'indirizzo CHS (da 1 ).

È anche possibile modificare i valori della geometria CHS nel BIOS - ma non farlo, poiché renderà impossibile avviare qualsiasi sistema operativo che si basi su di esso, come Windows.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.