当前位置: 代码迷 >> 汇编语言 >> 时间与二进制关系解决办法
  详细解决方案

时间与二进制关系解决办法

热度:3251   发布时间:2013-02-26 00:00:00.0
时间与二进制关系
时间在计算机中如何存储啊?比如说19:10:15   转换成二进制是什么啊?

------解决方案--------------------------------------------------------
1楼的同志有误导人的嫌疑
MS-DOS中 21h中断的2ch功能是获取系统当前时间,

mov ah,2ch
int 21h
后,系统在ch中返回当前小时,cl中返回当前分钟,dh为当前秒
比如19:10:15 即为
ch=000010011b=13h
cl=000001010b=0ah
dh=000001111b=0fh
------解决方案--------------------------------------------------------
你是想知道系统时间还是计时?
系统时间在存储在电脑的一个芯片中的,她是一个值,可能精确到秒,也可能精确到毫秒。他一般是自从某个时间点后的秒/毫秒 数。如在1970-01-01 00:00:00 以来的毫秒数。这个可以通过bios的例程得到其值。返回的可能是格式化好的数据(已经将年月日时分秒单独求出)。操作系统的API(dos下的int21,windows下的API函数)提供了一些函数(该函数最终将调用bios例程),这些函数一般用结构体指针作为入参,结构体中一般包含年月日时分秒等字段。 如:win32API 函数 VOID GetLocalTime(
SYSTEMTIME* lpSystemTime // address of system time structure
);

typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;

至于计时则一般采用这样的方法:
1。调用一次取timestamp 的函数,获取一个时钟,这个时钟一般是自电脑开机后的 clock(注泛指,不一定是计算机内部时钟)。
2。再调用一次去timestamp 的函数,两者相减得到的值为者两点的时间间隔。
取系统timestamp的函数有多个,其精度也不相同,在windows平台,有
1。函数GetTickCount :可精确到毫秒级
2 函数QueryPerformanceCounter:可精确到微秒级
3。机器指令 RDTSC,精确与你的计算机主频有关,1G的CPU 可精确到 10的9次方分之1秒,3.6G的cpu则能精确到 1/3.6 * 10^-9秒.这3个函数的详细含义和用法详见:http://blog.csdn.net/liangbch/archive/2007/04/13/1563407.aspx
  相关解决方案