Deleni na '51 - word/byte

Pavel Hudecek pavelhudecek
Středa Březen 17 12:06:58 CET 2004


Pouzijte LBA a nebudete muset delit. Funguje to
na jakemkoli IDE, krome tech uplne nejstarsich,
ktere uz jsou stejne plne vadnych sektoru, takze
je urcite do niceho noveho nedate.

Komunikace je stejna, jen pouzijete tyto zmeny
v adresovani:

device/head(6)=1 pro sdeleni, ze adresa je LBA
sector n = LBA(0-7)
cyl low = LBA(8-15)
cyl high = LBA(16-23)
head = LBA(24-27)

Nyni si uz nemusite delat starosti s prevodem, nebot
adresa LBA je rovnou logicky sektor pocitany tak,
ze prvni ma cislo 0 a dalsi souvisle nasleduji.
Muzete zcela vypustit starosti, jako kolik je sektoru na
stopu a podobne zbytecnosti, protoze to disk udela
sam za vas (on by to stejne delal i pri CHS, protoze
disky jiz dost casto maji fyzicky vice nez 255 sektoru
na stopu).
Pavel Hudecek

From: "Jiri Drozd" <jirkonf@seznam.cz>
| hraju si s pripojenim harddisku (IDE) k AT89C51. Zatim umim precist
| libovolny sektor disku znam-li jeho CHS parametry (zkousim to na 80MB
disku,
| takze problemy s velkymi disky zatim nemam). Chtel jsem naucit tenhle muj
| bastl cist disky s FAT16 a pri programovani sem narazil na problem deleni
| ctyrbajtoveho cisla (double word) cislem jednobajtovym. Potrebuju totiz
| udelat prevod z cisla sektoru na CHS (kdyz je treba precist sektor cislo
| 23654 tak aby to spocitalo ze je to cylinder X, hlava Y a sektor Z). Takze
| potrebuju delit cislo postupne jednotlivymi pocty sektoru, hlav a cylindru
a
| z toho vypocitat X, Y a Z. Problem je v tom, ze '51 zna na deleni pouze
| instrukci DIV AB, ktera vydeli dve jednobytova cisla. Premyslel jsem jak
to
| udelat, vychazeje trebas z normalniho pisemneho deleni





Další informace o konferenci Hw-list