本文代码来自于《Intel汇编语言程序设计》(第四版)第11章---------32位windows编程。
GetDateTime其实是作者Irvine32库文件中的一个函数,它用来返回一个64位的整数,这个数值是自1601年1月1日开始的以100纳秒为单位的计数值。重要的是微软使用这个数值来作为文件的日期和时间。WIN32 SDK文档中给出的获得系统日期和时间的步骤如下:
1.调用一个函数(例如GetLocalTime)来填写SYSTEMTIME结构。
2.用SystemTimeToFileTime函数来讲SYSTEMTIME结构转换到FILETIME结构。
3.将FILETIME结构中的结果拷贝到一个64位的QWORD中。
其中FILETIME结构将一个64位的QWORD值划分为2个DWORD值:
FILETIME STRUCT
loDateTime DWORD ?
hiDateTime DWORD ?
FILETIME ENDS
下面是GetDateTime函数代码:
;------------------------------------------------------------------------------------
GetDateTime PROC
pStartTime : PTR QWORD ; 程序接收一个指向QWORD的指针
LOCAL sysTime : SYSTEMTIME , fileTime : FILETIME ; 程序定义了两个局部变量,分别是SYSTEMTIME 类型和FILETIME 类型
;
; Gets and saves the current local date/time as a
; 64-bit integer ( in the Win32 FILETIME format).
;------------------------------------------------------------------------------------
; Get the system local time
INVOKE GetLocalTime , ; 按照微软的建议,先得到一个时间,将它填充到SYSTEMTIME 结构中
ADDR sysTime
; Convert the SYSTEMTIME to FILETIME
INVOKE SystemTimeToFileTime, ; 然后又按照微软的建议,将SYSTEMTIME 结构中的内容填充到FILETIME结构中
ADDR sysTime, ; SYSTEMTIME 结构
ADDR flTime ; FILETIME 结构
; Copy the FILETIME to a 64-bit integer
mov esi , pStartTime ; 然后我们再按照微软的建议执行第三步,这里先得到这个64位QWORD的地址
mov eax , flTime.loDateTime ; 将FILETIME 结构中的loDateTime段赋给eax
mov DWORD PTR [esi] , eax ; 讲eax 赋值到64位的pStartTime的低4字节中
mov eax , flTime.hiDateTime ; 将FILETIME 结构中的hiDateTime段赋给eax
mov DWORD PTR [esi+4] , eax ; 讲eax 赋值到64位的pStartTime的高4字节中
ret ; 按照微软的建议,我们得到了日期和时间,返回主函数
GetDateTime ENDP
代码结束。
分享到:
相关推荐
这对于学习和开发汇编语言程序非常有用,尤其是对于初学者来说,可以极大地简化编程流程,避免重复编写常见功能的代码。同时,这份文件的使用也需要注意其适用环境和版本兼容性问题,确保与目标操作系统和开发工具相...
首先,我们需要理解时间序列分析的基础,然后我们将详细讨论如何用C#编程语言与SQL Server进行交互,最后将介绍如何实现一个基本的时间预测模型。 时间序列分析是统计学中处理按时间顺序排列的数据集合的方法,这些...
在Android开发中,Log分析是调试应用程序不可或缺的一部分。它提供了程序运行时的详细信息,帮助开发者定位问题、优化性能和理解代码执行流程。本教程将深入探讨如何有效地利用Log进行分析,以提升Android应用的开发...
开发语言:ASP 版 权:支付宝()网络技术有限公司 制 作 者:支付宝技术部技术支持组 联系方式:https://support.open.alipay.com/alipay/support/index.htm 免责声明:DEMO仅供参考,实际开发中需要结合具体...
VBA(Visual Basic for Applications)是一种广泛应用于Microsoft Office等应用中的编程语言。它允许用户通过编写自定义脚本来自动化任务。在VBA中,正确声明变量非常重要,这有助于提高代码的可读性和维护性。 **...
public String getDatetime() { return Date; } public float getOpenPrice() { return Open; } public float getHighPrice() { return High; } public float getLowPrice() { return Low; } ...
示例代码分析 在示例代码中,我们首先定义了两个日期和时间:`dt` 和 `dt2`。然后,我们计算这两个日期之间的工作时间间隔,并输出结果。最后,我们计算下一个工作时间点,并输出结果。 本文介绍了使用 C# 语言...
通过分析这个文件,我们可以学习到如何编写高效且易于维护的工具类,同时也可以借鉴其中的编程技巧和最佳实践。 首先,让我们从字符串处理方面来看。在Java中,字符串操作是非常常见的,`ComUtils`可能包含一些如...
测试作业00 尝试测试作业00 ...getDateTime(): 2015-05-30T20:00 getDate(): 2015-05-30 getDateTime(): 2015-05-30T20:00 getDateTime(): 2015-05-31T10:00 getDate(): 2015-05-31 getDateTime(): 2015-05-31T1
每个服务都有对应的WSDL(Web服务描述语言)文件,这些文件详细描述了服务的接口、消息结构和操作。 Apache CXF是一个强大的工具,能够从WSDL文件自动生成Java客户端代码,使得开发者可以轻松地与Web服务进行交互。...
1. **农历日期转换:** 通过提供的代码片段可以看出,这是一个用于将公历日期转换为农历日期的工具类 `ChinaCalendar`。这类工具在很多应用场景中都非常有用,比如传统节日提醒、农历生日纪念等。 2. **农历属性:*...
《实时钟源代码解析》 ...通过阅读和分析源代码,我们可以深入了解RTC的编程方法,这对于嵌入式系统的开发,特别是需要精确时间同步的应用,如物联网设备、服务器和各种实时操作系统,都是非常有价值的。
在这样的系统中,通常存在一种需求:当用户在客户端对数据进行插入或修改操作时,需要记录这些操作的确切时间到数据库表中,以便后续进行基于时间的统计分析。 如果各个客户端和服务器之间的时间不一致,可能会导致...
这在数据分析、日志记录或者交易系统中尤其常见,因为这些场景通常需要对特定时间范围内的数据进行快速筛选。 首先,我们需要理解C++.NET如何与数据库进行交互。在C++.NET中,我们通常会使用ADO.NET(Microsoft的...
在开发过程中,开发者可能遇到了日期处理的问题,特别是"getDateTime",这通常涉及到日期和时间的获取、格式化和操作,这对于记录订单创建时间、更新时间等业务场景至关重要。 JSP是Java的一种动态网页技术,允许...
【TSQL编码规范】是确保Transact-SQL代码质量和可维护性的关键,它涉及一系列的指导原则和约定,旨在提高数据库开发的效率和一致性。以下是对这些规范的详细解释: **1. 基本原则** - **大小写敏感**:在编写TSQL...
以下是`GetDateTime()`函数的具体实现代码: ```c #include #include #include int GetDateTime(char *s, long int bill_long, char *d_str, char *t_str) { time_t timer, tim; struct tm tb, *tb1; int ...
- 多语言支持:内置多语言包,满足国际化需求。 3. **API接口**: - 初始化:通过JavaScript调用初始化函数,将My97DatePicker绑定到特定输入元素。 - 方法调用:如`getDateTime()`获取当前选中的日期和时间,`...
相关代码如下: procedure TForm1.SpeedButton1Click(Sender: TObject); begin if OpenDialog1.Execute then begin Edit1.Text := OpenDialog1.FileName; Edit2.Text := ''; end; end; procedure ...