【发布时间】:2018-06-15 03:47:46
【问题描述】:
我想设置系统时间,并获取显示时间。我已使用以下代码成功获取系统时间
mov ah,2ch ;get time
int 21h ;ch = hr, cl = min, dh = sec
但我无法设置系统时间,通过以下两种方法
mov ah,03h
mov ch,hr(in bcd)
mov cl,mm(in bcd)
mov dh,sec(in bcd)
mov dl,am_pm
int 1ah
和
mov ah,2dh
mov ch,hr
mov cl,mm
mov dh,sec
int 21h
【问题讨论】:
-
你是如何检查时间是否改变的?程序退出后,您是否在 DOS shell 中运行了
data?或者使用你的get-time程序?您意识到这只会在您运行 set-time 的 DOSBOX 或 emu8086 虚拟机的一个实例中设置时间,对吧,而不是您的主系统的时间(Windows/Linux/OS X)? -
糟糕,我的意思是
date,而不是data。或者我猜在 DOS 中的命令是time. -
我使用代码来获取时间并显示在dosbox中,但结果是00:00:00,我认为你是对的,它不会改变系统时间。所以我想知道我改变的时间?
-
您确定打印正确,还是设置了正确的时间(如果 00:00:00 出乎意料)?使用调试器!并发布minimal reproducible example。
-
从文档看来
int 21h / AH=2Dh应该可以工作。如果它不适合您,请发布 minimal reproducible example 您所做的事情。