|
|
发表于 2013-3-13 03:26:05
|
显示全部楼层
这个问题比较偏,你是论坛第一个这么问的,这么说吧,学过C的人知道C里面的有个函数好像叫sprintf,这里Win32汇编的叫wsprintf,C++也分宽字符和普通字符,Win32汇编的wsprintf就是宽字符,他入栈就是按照dword压入的,而stSysTime里面的数据可不是dword,例如年是的,但其他就....这就是问题所在!
写个简单的例子给你:
.data
lp1 db 32 dup(?)
sz1 db '本地时间:%d年%d月%d日%d点%d分%d秒',0
sz2 db '提示',0
T SYSTEMTIME<?>
;******************************************************************
.code
start:
invoke GetLocalTime,offset T
pushad
movzx eax,T.wSecond
movzx ebx,T.wMinute
movzx ecx,T.wHour
movzx edx,T.wDay
movzx edi,T.wMonth
movzx esi,T.wYear
invoke wsprintf,offset lp1,offset sz1,esi,edi,edx,ecx,ebx,eax
popad
invoke MessageBox,0,offset lp1,offset sz2,MB_OK
再警告一些人,切勿浮沙筑高楼!
|
|