本文介绍了我如何使用NASM访问系统时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用种子当前系统时间我的随机数发生器。如何访问使用系统时间? (我用的linux)
解决方案
%定义RTCaddress 0x70
%定义RTCdata 0x71;获取时间和日期从RTC.L1:MOV人,10;获得RTC寄存器A
出RTCaddress,人
在人,RTCdata
测试人,0x80的;正在进行更新?
JNE .L1;是的,等待 MOV人,0;获取秒(00〜59)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeSecond],人 MOV人,0X02;获取分钟(00〜59)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeMinute],人 MOV人,0×04;获取小时(见注)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeHour],人 MOV人,值为0x07;当月获取天(01〜31)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeDay],人 MOV人,0x08的;获取月份(01到12)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeMonth],人 MOV等,为0x09;获得年度(00至99)
出RTCaddress,人
在人,RTCdata
MOV [RTCtimeYear],人 RET
本使用NASM,距离。
I am trying to seed my random number generator with current system time. How can I access the system time using NASM? (I am using linux)
解决方案
%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
This uses NASM, and is from here.
这篇关于我如何使用NASM访问系统时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!