| Zeile 15: | Zeile 15: | ||
H = (LBA mod (mH*mS)) / mS | H = (LBA mod (mH*mS)) / mS | ||
S = ((LBA mod (mH*mS)) mod mS) + 1 | S = ((LBA mod (mH*mS)) mod mS) + 1 | ||
| + | |||
| + | == Beispiel == | ||
| + | Da es im bootsektor auf jedes byte ankommt habe ich mich darum bemüht die Umrechnung möglichst klein zu machen. | ||
| + | <asm> | ||
| + | ; in ax steht der Sektornummer | ||
| + | ; C | ||
| + | xor dx, dx ; dx leeren | ||
| + | mov bx, 2*18 ; Anzahl der Heads * Sektoren pro Cluster | ||
| + | div bx ; dx:ax / bx = ax rest dx | ||
| + | mov [tmpa], al ; al sichern | ||
| + | |||
| + | ; H | ||
| + | mov ax, dx ; mit dem Rest der Division wird jetzt weitergearbeitet | ||
| + | xor dx, dx ; dx wieder leeren | ||
| + | shr bx, 1 ; 36/2 = 18, also nur die Anzahl der Sektoren pro Cluster | ||
| + | div bx ; dx:ax / bx = ax rest dx | ||
| + | mov [tmpb], al ; al sichern | ||
| + | |||
| + | ;S | ||
| + | inc dx ; Den Rest um 1 erhöhen | ||
| + | mov [tmpc], dl ; Und ebenfalls sichern | ||
| + | </asm> | ||
[[Category:Glossar]] | [[Category:Glossar]] | ||
[[Category:Hardware]] | [[Category:Hardware]] | ||