tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1049
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Calizo Calizo ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    2
    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
    %define SYS_READ 3
    %define SYS_EXIT 1

    ;;;file ids
    %define STDIN 0
    %define STDOUT 1

    section .data

    opa: dd 86400
    opb: dd 24
    opc: dd 60

    section .bss

    outbuf: resb 32

    section .text

    global _start

    _ausgabe:
    mov eax, SYS_WRITE
    mov ebx, STDOUT
    mov ecx, outbuf
    mov edx, 1

    int 80h
    ret

    _start:

    timestamp:

    mov eax, SYS_CLOCK
    mov ebx, 0

    dontcare:
    mov ebx, [opa]
    div ebx

    stunden:
    mov ebx, [opb]
    mov eax, edx
    mul ebx
    ;push ax
    mov [outbuf], ax
    call _ausgabe


    minuten:
    mov ebx, [opc]
    mov eax, edx
    mul ebx
    ;push ax
    mov [outbuf], ax
    call _ausgabe

    sekunden:
    mov ebx, [opc]
    mov eax, edx
    mul ebx
    ;push ax
    mov [outbuf], ax
    call _ausgabe


    end:
    mov eax, SYS_EXIT

    mov ebx, 0

    int 80h

    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?
    Geändert von Calizo (05.07.07 um 00:03 Uhr) Grund: anmerkung
     

  2. #2
    Calizo Calizo ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    2
    Kann mir niemand sagen, was genau ich falsch mache? :/
     

Ähnliche Themen

  1. mysql datetime in unix timestamp umwandeln?
    Von bad taste im Forum PHP
    Antworten: 7
    Letzter Beitrag: 18.12.10, 12:52
  2. Oracle timestamp to unix timestamp konvertieren
    Von tplanitz im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 22.04.08, 09:36
  3. Datum in Unix-Timestamp umwandeln
    Von qsrs im Forum PHP
    Antworten: 14
    Letzter Beitrag: 12.05.07, 16:49
  4. Antworten: 4
    Letzter Beitrag: 13.09.06, 12:28
  5. Unix Timestamp mix xsl umwandeln
    Von DeeFour im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 27.10.04, 17:01