Estoy intentando sembrar mi generador de números aleatorios con la hora actual del sistema. ¿Cómo puedo acceder a la hora del sistema usando NASM? (Estoy usando Linux)¿Cómo puedo acceder a la hora del sistema usando NASM?
Respuesta
%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
Esto utiliza NASM, y es de here.
Estoy un poco confundido. ¿Funciona esto suponiendo que el póster usa ventanas? – BigBeagle
Debería funcionar para cualquier sistema operativo en x86 que mantenga la fecha/hora del sistema. –
Acabo de probar - Desafortunadamente, "RTCaddress, al" falla en Vista64 debido al nivel de privilegio. – PhiS
Yo diría que, dependiendo de la plataforma en la que se encuentre, tendrá que usar una función de sistema operativo.
En Windows, intente GetSystemTime. En Linux, intente gettimeofday. Consulte la pregunta relacionada here.
el uso de Linux:
mov eax, 13
push eax
mov ebx, esp
int 0x80
pop eax
aparecerá la hora actual en UNIX EAX (basta con sustituir la última instrucción si usted quiere que surgió en otro registro).
Esta es una llamada al sistema sys_time (número de llamada del sistema 13) y devuelve la hora en la ubicación de la memoria en ebx, que es la parte superior de la pila.
Con NASM, si se dirigen a Linux x86-64, sólo tiene que hacer lo siguiente:
mov rax, 201
xor rdi, rdi
syscall
201
corresponde al número de llamadas al sistema de 64 bits para sys_time
(que se enumeran here). El registro rdi
se configura en 0 por lo que el valor de retorno después de realizar la llamada al sistema se almacena en rax
, pero también puede hacer que apunte a la ubicación de memoria que elija. El resultado se expresa en segundos desde la Época.
Más información sobre esta llamada al sistema se puede encontrar en el time man page.
- 1. ¿Cómo obtener la hora del sistema en Haskell usando Data.Time.Clock?
- 2. Cómo acceder a la hora del sistema más fino que 1 segundo en el iPhone
- 3. ¿Cómo mostrar la hora actualizada como hora del sistema en una etiqueta usando C#?
- 4. Obtener la hora actual del sistema?
- 5. ¿Cómo configuro el reloj del sistema de Windows a la hora local correcta usando C#?
- 6. Obtener la hora actual del sistema
- 7. ¿Cómo obtengo la hora del sistema local en PHP?
- 8. ¿Cómo puedo detectar si la hora del sistema ha cambiado? (de .net)
- 9. ¿Cómo acceder a bases de datos/tablas del sistema usando LINQ to SQL?
- 10. Configurar la hora del sistema del teléfono ROOTED
- 11. cómo convertir la hora del servidor a hora local
- 12. Convierte un QDateTime en UTC a hora local del sistema
- 13. Detección de cambios en la hora del sistema en JavaScript
- 14. Ejecutar como administrador: requireAdministrator & ClickOnce + emular la hora del sistema
- 15. ¿Cómo puedo obtener la hora local del usuario en lugar de la hora del servidor?
- 16. ¿Cómo leo la entrada de un solo carácter del teclado usando nasm (assembly) debajo de ubuntu?
- 17. ¿Qué especificamente son la hora del reloj de pared, la hora de la CPU del usuario y la hora de la CPU del sistema en UNIX?
- 18. Acceder a archivos usando Phonegap
- 19. Cómo puedo especificar la última hora del día con DateTime
- 20. Temporizador estable independiente de la hora del sistema
- 21. Cómo usar Scanf en NASM?
- 22. Usando Python, ¿cómo puedo acceder a una carpeta compartida en la red de Windows?
- 23. ¿Cómo programáticamente programar el despertar del sistema usando las preferencias del sistema en una Mac?
- 24. Cómo puedo configurar el formato de fecha y hora en Java que respeta la configuración del sistema operativo del usuario
- 25. ¿Puedo acceder al sistema de archivos de mi iPhone usando Xcode?
- 26. ¿Cómo puedo obtener la letra de la unidad del sistema?
- 27. ¿Cómo puedo comparar la hora de creación del archivo con la hora actual en Perl?
- 28. ¿Cómo puedo devolver la información del sistema en Python?
- 29. ¿Cómo puedo acceder a memcached con Javascript?
- 30. JavaScript setTimeout y cambios a la hora del sistema causan problemas
Una gran edición, pero traté de hacer la pregunta aproximada de lo que pensaba que estaba haciendo el OP ... –
¿Se puede usar el sistema de archivos system/'/ dev' system? –
Ejemplo de QEMU en modo real de trabajo de 16 bits: https://github.com/cirosantilli/x86-bare-metal-examples/blob/173111e0d0081701512a10d72dc0439f4ab1f55d/in_rtc.S ¿Se puede utilizar la llamada al sistema///sistema de archivos dev? –