Frage

Ich versuche, meinen Zufallszahlengenerator mit aktueller Systemzeit auf Saatgut. Wie kann ich die Systemzeit mit NASM ? (Ich verwende Linux)

War es hilfreich?

Lösung

%define RTCaddress  0x70
%define RTCdata     0x71

;Get time and date from RTC

.l1:    mov al,10           ;Get RTC register A
    out RTCaddress,al
    in al,RTCdata
    test al,0x80            ;Is update in progress?
    jne .l1             ; yes, wait

    mov al,0            ;Get seconds (00 to 59)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeSecond],al

    mov al,0x02         ;Get minutes (00 to 59)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeMinute],al

    mov al,0x04         ;Get hours (see notes)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeHour],al

    mov al,0x07         ;Get day of month (01 to 31)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeDay],al

    mov al,0x08         ;Get month (01 to 12)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeMonth],al

    mov al,0x09         ;Get year (00 to 99)
    out RTCaddress,al
    in al,RTCdata
    mov [RTCtimeYear],al

    ret

Dieses verwendet NASM und ist von hier .

Andere Tipps

Unter Linux:

mov eax, 13
push eax
mov ebx, esp
int 0x80
pop eax

Wird die aktuelle Unix-Zeit in EAX Pop (nur die letzte Anweisung ersetzen, wenn Sie es in ein anderes Register knallte wollen).

Dies ist ein Systemaufruf SYS_TIME (System Rufnummer 13), und es gibt die Zeit in die Speicherstelle in EBX, die die Oberseite des Stapels ist.

Ich würde sagen, je nachdem, welche Plattform Sie sind auf, werden Sie eine OS Funktion nutzen zu können.

Ein Fenster, versuchen GetSystemTime . Unter Linux versucht gettimeofday - damit verbundene Frage hier

.

Mit NASM, wenn Sie Linux x86-64 zielen, können Sie einfach wie folgt vor:

mov rax, 201
xor rdi, rdi        
syscall

201 entspricht den 64-Bit-System Rufnummer für sys_time (wie aufgelistet hier ). Registrieren rdi auf 0 gesetzt ist, so ist der Rückgabewert nach dem Systemaufruf durchführt in rax gespeichert ist, aber man könnte es auch zu einem Speicherort Ihrer Wahl Punkt. Das Ergebnis wird in Sekunden seit der Epoche zum Ausdruck gebracht.

Weitere Informationen zu diesem Systemaufruf in den Zeit Menschen gefunden werden .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top