用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码

简介: 用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码

这几天在用MASM32按Time Protocol(RFC868)协议编写网络对时程序,现在基本完成了。将其中一些有用的函数代码整理了一下。

 我们需要将本地系统时间转换为UTC格式发送给时间服务器,相关转换代码如下:

BaseTimeLow equ 0D53E8000h
BaseTimeHigh equ 19DB1DEh
;:::::::::::::::::::::::::::::::::::::::::::::::::::
FileTime2DateStamp proc lpFileTime: dword
;:::::::::::::::::::::::::::::::::::::::::::::::::::
 mov ecx, lpFileTime
 mov eax, [ecx]
 mov edx, [ecx+4]
 sub eax, BaseTimeLow
 sbb edx, BaseTimeHigh

 mov ecx, 10000000
 div ecx

 RET
FileTime2DateStamp endp


;::::::::::::::::::::::::::::::::::::::::
GetLocalTimeStamp proc
;::::::::::::::::::::::::::::::::::::::::
    local stSystemTime: SYSTEMTIME
    local stFileTime: FILETIME

    invoke GetSystemTime, addr stSystemTime
    invoke SystemTimeToFileTime, addr stSystemTime, addr stFileTime
    invoke FileTime2DateStamp, addr stFileTime

    ret
GetLocalTimeStamp endp

时间服务器返回的是从1900年1月1日午夜到现在的秒数,将其转换为本地时间的相关代码如下:

;::::::::::::::::::::::::::::::::::::::::::::::::::::
_MemCpy proc  lpD, lpS, dwSize
;::::::::::::::::::::::::::::::::::::::::::::::::::::
    mov     esi, lpS
    mov     edi, lpD
    mov     ecx, dwSize
    rep     movsb

    ret
_MemCpy endp


g_szFmtDateTime db "%d-%d-%d %d:%d:%d", 0
;::::::::::::::::::::::::::::::::::::::::::::::::::::
printDateTime proc dwTimeStamp: dword
;::::::::::::::::::::::::::::::::::::::::::::::::::::
    local buf[30]: byte
    local stSysTime: SYSTEMTIME
    local stFileTime: FILETIME
    local stLocFileTime: FILETIME
    local li: LARGE_INTEGER

    
    invoke RtlZeroMemory, addr stSysTime, sizeof stSysTime
    
    mov stSysTime.wYear, 1900
    mov stSysTime.wMonth, 1
    mov stSysTime.wDay, 1
    
    invoke SystemTimeToFileTime, addr stSysTime, addr stFileTime
    invoke _MemCpy, addr li, addr stFileTime, sizeof stFileTime

    mov eax,  dwTimeStamp
    mov  edx, 10000000
    mul  edx; edx=10000000

    lea edi, li.QuadPart
    add [edi], eax
    adc [edi+4], edx

    invoke _MemCpy, addr  stFileTime, addr li, sizeof li
    invoke FileTimeToLocalFileTime, addr stFileTime, addr stLocFileTime

    lea edi, stSysTime;push edi
    invoke FileTimeToSystemTime, addr stLocFileTime, edi    ;edi=addr stSysTime
    ;pop edi    movzx eax, (SYSTEMTIME ptr [edi]).wYear
    movzx ebx, (SYSTEMTIME ptr [edi]).wMonth
    movzx ecx, (SYSTEMTIME ptr [edi]).wDay
    movzx edx, (SYSTEMTIME ptr [edi]).wHour
    movzx esi, (SYSTEMTIME ptr [edi]).wMinute
    movzx edi, (SYSTEMTIME ptr [edi]).wSecond

    invoke wsprintf, addr buf, addr g_szFmtDateTime, eax, ebx, ecx,edx, esi, edi
    invoke StdOut, addr buf

    ret
printDateTime endp
相关文章
|
12天前
|
负载均衡 网络协议 算法
|
3天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
22 3
|
6天前
|
网络虚拟化
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性
生成树协议(STP)及其演进版本RSTP和MSTP,旨在解决网络中的环路问题,提高网络的可靠性和稳定性。本文介绍了这三种协议的原理、特点及区别,并提供了思科和华为设备的命令示例,帮助读者更好地理解和应用这些协议。
20 4
|
14天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
43 13
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
68 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
14天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
15天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
17天前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
1月前
|
机器学习/深度学习 编解码
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
本文介绍了九种常用的神经网络激活函数:Sigmoid、tanh、ReLU、ReLU6、Leaky ReLU、ELU、Swish、Mish和Softmax,包括它们的定义、图像、优缺点以及在深度学习中的应用和代码实现。
116 0
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
|
1月前
|
网络协议 数据安全/隐私保护 网络虚拟化
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
53 0

热门文章

最新文章