首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MASM32:显示当天的时间

MASM32:显示当天的时间
EN

Stack Overflow用户
提问于 2018-06-25 16:13:25
回答 1查看 124关注 0票数 1

我需要显示一天内的时间,并打印上午,下午或晚上。

1.早上(4:00AM - 11:59AM)下午(12:00 12 5:59 12)3.晚上(下午6:00-凌晨3:59)

我使用时间格式为24小时的GetTimeFormat。根据系统时间的不同,ecx实际上包含1-24个。

代码语言:javascript
复制
 invoke GetTimeFormat, 0, 0, 0, ADDR timeformat, ADDR time_buf, 50
 mov ecx, offset time_buf
 push ecx
 push ecx
 push ecx
 add ecx, eax; add length returned by GetTimeFormat      

 pop ecx
 cmp ecx, 4 
 je AM
 jg AMNN
 jl PM

 AMNN:   
 pop ecx
 cmp ecx, 12         
 jl AM
 jge NNPM

 NNPM:   
 pop ecx
 cmp ecx, 18 
 jl NN
 jge PM

此代码始终输出PM消息。:(

有什么帮助吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-25 20:26:10

移动ecx,偏移量time_buf

此指令加载ECX寄存器中的time_buf地址。

它是与4比较的地址本身(4应该是一个小时指示)。这就解释了为什么你总是收到PM消息。

您需要像在cmp dword [ecx], 4中那样取消引用。

因为GetTimeFormat返回text,所以您必须与字符"4“进行比较。

添加ecx、eax;添加GetTimeFormat pop ecx返回的长度

请验证添加到此处的ECX寄存器是否没有用,因为紧随其后的是pop ecx

推送ecx推送ecx推送ecx

为什么是3次推送?cmp指令不会破坏ECX中的值,因此您可以在几个分支中继续使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51018894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档