Rok w asm

Feb 01, 2009 19 Replies

Witam,



Mo¿e pytanie trochê NTG, ale wie kto¶ jak siê zapisuje rok w dacie wiêkszy ni¿ 2107 w asm (hex)?



Pozdrawiam czaq


a dlaczemu 2107? To jakaś magiczna data?

2107 to 83Bh, 2108 to 83Ch. Problem zaczyna sie dopiero od 65535, ale do tego czasu 16 bitowe procesory chyba beda historia.

Waldek

U¿ytkownik "Waldemar Krzok" snipped-for-privacy@zedat.fu-berlin.de> napisa³

no w³a¶nie, tak patrze i widzê, ¿e Win XP nie pozwoli ustawiæ roku w systemie wy¿szego ni¿ ten 2107, wiêc jak to zapisaæ w asm? Chodzi mi o ca³y zapis roku, miesi±ca i dnia, da siê zmie¶ciæ to jaki¶ w 16 bitach?

Pozdrawiam czaq

Czaq pisze:

No kurcze chyba to proste, bez specjalnego pakowania dzień zajmie 0-32 więc 5 bitów miesiąc 0-16 wiec 4 bity na lata zostaje Ci 7 bitów i jak ci nie zależy na długowieczności masz te 128 lat jak w banku. pozdr Ak

U¿ytkownik "Andrzej Kmicic" snipped-for-privacy@poczta.onet.pl> napisa³

wiem, ale rozpatruje przypadki nietrywialne, a chyba ¿e czego¶ nie wiem - dopiero siê uczê.

no ok, ale je¶li dosta³bym zadanie, ¿e mam zapisaæ rok 5199, to jak mam to zrobiæ?

Ju¿ konkretnei chodzi mi o ca³± datê na 16 bitach.

Podobny problem mam z zapisem czasu: jak zapisaæ 6.31.59?

Wiem, ¿e sekundy zajmuj± 5 bajtów (nie wiem natomiast dlaczego), minuty 6 (tymbardziej nie wiem dlaczego:( przecie¿ sekund jest tyle co minut - i tu i tu 60) a godzina zajmuje 5 bajtów.

Znalaz³em te¿ wzór: Time=hours*2048+minutes*32+sec/2

wszystko ok jak mam sekundy parzyste, a jak sa nieparzyste to co mam zrobic? Ani liczba mniejsza ani wikesza nie pasuje.

A zdob to sobie jak chcesz. Myslisz, ze sa jakies odgorne wytyczne?

Dlatego, ze w starych systemach Microsoftu zapisywalo sie tylko parzyste sekundy, czyli rozdzielczosc wynosila 2s, co pozwalalo na zaoszczedzenie jednego bita. BTW, rozrozniasz bity od bajtow?

Nic, to jest ograniczenie stosowanego formatu zapisu. Jak ci to nie pasuje to zapisuj po swojemu, w czym problem?

U¿ytkownik "T.M.F." snipped-for-privacy@nospam.mp.pl> napisa³

w tym, ¿e mam zapisaæ tak, jak podaje nauczyciel.

Podobne zreszt± problemy napotka³em przy zabawach hexedytorem z plikami, FATem itp.

Tam nie mogê zmieniaæ jak mi siê podoba.

Tak, wiem, ¿e 1 bajt=8 bitów, jako¶ pokrêci³em.

Trzeba bylo od poczatku mowic, ze chodzi ci o zapis daty i czasu w FAT. Tam jest ograniczenie rozdzielczosci czasu do 2s, wlasnie po to, zeby czas dalo sie zapisac na 16-bitach. Gdybys chcial miec co do sekundy to trzebaby poswiecic dodatkowy bit, co w tym przypadku przeklada sie na caly dodatkowy bajt. Pewnie dlatego zrezygnowano z takiego pomyslu. W efekcie jesli czas ma np. 57s to mozesz zapisac 56 albo 58, jak wolisz.

U¿ytkownik "T.M.F." snipped-for-privacy@nospam.mp.pl> napisa³

i bêdzie to poprawne?

A jak z rokiem wiêkszym ni¿ 2107?

U¿ytkownik "T.M.F." snipped-for-privacy@nospam.mp.pl> napisa³

aha, i rozumiem wiêc, ¿e windows nigdy nie poka¿e we w³a¶ciwo¶ciach katalogu/pliku czasu gdzie sekundy bêd± nieparzyste?

Zdecyduj się o czym piszesz. Windows i jego data to inna bajka, data w systemach plików to inna. Systemy plików też są różne. FAT16, FAT32, NTFS, NFS, XFS, EXT, itd. Jedne zapiszą dokładny czas, inne nie. Dawniej oszczędzano bajtów, dziś gdy dyski mają już po terabajcie pojemności mamy to gdzieś... Co nie zmienia faktu, że rozdzielczość i tak wynosi 1s.

m.

U¿ytkownik "Marcin £ukasik" snipped-for-privacy@.milea.pl.> napisa³

tak, przepraszam.

Ale w wkoñcu zrozumia³em co¶, czego nie rozumia³em od dawna a napewno jeszcze duu¿o przede mn±;)

Czaq pisze:

heh :-), w 2107 roku nas i FAT-u już nie będzie na 100% wiec nie ma się co tym specjalnie przejmować.

Ja myslałem że meczysz jakiś micro-procesorek wiec nic nie stoi na przeszkodzie aby format zapisu daty stworzyć własny i aby zmiescić się w jakimś zakresie bitów.

pozdr AK

W ogolnosci jak chcesz :-)

musisz pamietac ze na 16 bitach mozna zakodowac tylko 65536 dni, wiec data bedzie z przedzialu niecalych 200 lat.

Masz chyba na mysli kodowanie daty pliku w MS-DOS/windows. godzin jest 24 wiec potrzeba 5 bitow [z nadmiarem]. Minut jest 60, wiec trzeba 6 bitow. sekund jest 60, wiec trzeba 6 bitow. Razem 17 .. wiec trzeba z czegos zrezygnowac. No to zaokraglamy do najblizszej parzystej sekundy.

A Unix ma to wszystko w d* i date/czas koduje jako ilosc sekund od

1.01.1970. Na 32 bitach ze znakiem. W 2038 bylyby klopoty, ale wszyscy licza ze do tego czasu wszystkie 32 bitowe systemy zastapione zostana 64 bitowymi.

J.

Andrzej Kmicic schrieb:

nas nie będzie, ale FAT pewnie ocaleje. Jak to było z tymi COBOLowymi programami w latach 60 ub. wieku?

no właśnie. W szkole powinni uczyć sposobów opisu problemu, wtedy z rozwiązaniem go mniejszy problem ;-)

Waldek

U¿ytkownik "Waldemar Krzok" snipped-for-privacy@zedat.fu-berlin.de> napisa³ w wiadomo¶ci news: snipped-for-privacy@mid.uni-berlin.de...

wypraszam sobie

U¿ytkownik "Ghost" snipped-for-privacy@everywhere.pl napisa³ w wiadomo¶ci news:gm6om6$rv6$ snipped-for-privacy@nemesis.news.neostrada.pl...

(ciap)

Marzy siê k±piel w ciek³ym azocie ?

W³odek

Do 2017 wymyślą pewnie coś chłodniejszego ;-)

m.

2107 znaczy się ;)

m.

Marcin Łukasik pisze:

Nie we wszystkich systemach plików i nie każdy z czasów. W takim na przykład NTFS są trzy czasy: utworzenia pliku (rozdzielczość

10ms), ostatniego zapisu do pliku (rozdzielczość 2 sekundy) oraz ostatniego dostępu do pliku (rozdzielczość 1 godziny).

formatting link
Pewnie w innych systemach (różniste unixy) jest jeszcze dziwaczniej.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required