我如何使用NASM访问系统时间? [英] How can I access system time using NASM?

查看:615
本文介绍了我如何使用NASM访问系统时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用种子当前系统时间我的随机数发生器。如何访问使用 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访问系统时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆