# unix-timestamp umwandeln



## Calizo (4. Juli 2007)

Hiho!

Ich habe da eine Frage bzgl. eines kleinen programms, an dem ich gerade hocke.
Es geht um asm programmierung unter unix für die x86 architektur.
Und zwar soll ein programm geschrieben werden, welches sich per syscall den aktuellen unix timestamp holt.
Der timestamp ist, jedenfalls momentan noch ^^, eine 10 stellige Zahl, die die vergangene Zeit in Sekunden seit dem 1. Jan 1970 00:00Uhr angibt.
Aufgabenstellung ist es nun, hieraus (nur) die aktuelle uhrzeit zu ermitteln.
Ich habe mir auch bereits überlegt, wie das von statten gehen muss. 
Und zwar müsste es so laufen, dass ich mir den timestamp schnappe und ersteinmal durch 86400 (3600*24) teile, um die vergangenen Tage zu ermitteln.
Ab hier kann ich dann mit den nachkommastellen weiterarbeiten, um direkt die Stunden, Minuten und Sekunden der aktuellen Uhrzeit zu ermitteln.
Also nehme ich den nachkommateil *24 für die Stunden. Den Nachkommateil dieses Ergebnisses *60 für die Minuten, und dann den Nachkommateil dieses Ergebnisses wiederum *60 für die Sekunden.

Mein Prog sieht immo noch wie folgt aus:



> ;;;sys calls
> 
> %define SYS_CLOCK	0x0c
> %define SYS_WRITE	4
> ...




Bitte nicht direkt in ohnmacht fallen  ich hab mit asm leider nicht sehr viel erfahrung bisher.

Meine Probleme sind nun folgende:
wie man sieht, habe ich die stack operationen ersteinmal rausgenommen und versucht die vorkommazahlen (welche ich für die stunden, minuten und sekunden brauche, ersteinmal direkt auszugeben über einen ausgabebuffer.
Allerdings bekomme ich auf der console momentan nur ">>" ausgegeben. Ich weiß zwar, dass der code immo noch relativ schäbbich ist, allerdings finde ich nicht direkt den fehler.
Liegt es an meiner division? An der Abspeicherung der Werte oder an was völlig anderem?

Ausgabe soll später mal etwa so aussehen: 22:00:00

Vielen Dank schon einmal im voraus

MfG,
Calizo

edit: mir fällt gerade auf, kann es sein, dass das ergebnis des sysrufs in binärform vorliegt? War bisher ziemlich naiv von einer Dezimaldarstellung ausgegangen.
Wenns so wäre, und es ne Binärzahle ist, verkompliziert es die Sache leider glaube ich :/
Desweiteren habe ich glaub ich nen fehler in meiner Ausgabe entdeckt, kann es sein, dass ich den Wert, den ich ausgeben möchte, nicht bekomme, weil er von mir direkt bei der Ausgabe überschrieben wird?


----------



## Calizo (5. Juli 2007)

Kann mir niemand sagen, was genau ich falsch mache? :/


----------

