社区
数据结构与算法
帖子详情
怎样在turboc2.0下显示时间??? (flrQ急求)
wplian
2001-02-26 07:31:00
我想编个程序,运行时可不停(即动态且不消失)的显示当前的系统时间,
又不影响其他语句执行的流畅性,请问用什么方法实现呢?
...全文
294
21
打赏
收藏
怎样在turboc2.0下显示时间??? (flrQ急求)
我想编个程序,运行时可不停(即动态且不消失)的显示当前的系统时间, 又不影响其他语句执行的流畅性,请问用什么方法实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wplian
2001-03-03
打赏
举报
回复
很抱歉,这几天服务器不好,上不了csdn,一直没联系
感谢圣火的帖子,我这几天查到了资料,确实是因为驻留程序不能
调用DOS核心函数(例如printf),不过ASM我没有学过,以后会自学的,关于这个问题我调试后还会联系大家…………
谢谢,E-mail:wplian@citiz.net
没有好的服务器,只好用这个不要服务器的了,希望与我多联系
holyfire
2001-03-02
打赏
举报
回复
上面两个不知啥鸟的方法其实也可行,如果你想知道,我们可以讨论一下。
holyfire
2001-03-02
打赏
举报
回复
要使用,最好使用ASM。
holyfire
2001-03-02
打赏
举报
回复
现在我只取时间,判断一下,秒变化时才显示。这个程序不是很好,你参考一下就行了。
holyfire
2001-03-02
打赏
举报
回复
只要这段代码和你的代码在一个程序中运行,是不要驻留内存的。
死循环的原因可能是你的中断函数太占资源,比如使用了tc的某些函数(printf?)。
holyfire
2001-03-02
打赏
举报
回复
void main()
{
void interrupt ( * f )();
char c;
f = getvect( 0x1c );
setvect( 0x1c , showtime );
printf( "\n\nPress ESC to Level!" );
while( ( c = getch() ) != 0x1b )
{
((char *)VEIDO)[ 160 ] = c;
}
setvect( 0x1c , f );
}
holyfire
2001-03-02
打赏
举报
回复
if( sec != curtime.ti_sec )
{
time[0] = curtime.ti_hour/10 + '0';
time[2] = curtime.ti_hour%10 + '0';
time[6] = curtime.ti_min/10 + '0';
time[8] = curtime.ti_min%10 + '0';
time[12] = curtime.ti_sec/10 + '0';
time[14] = curtime.ti_sec%10 +'0';
memcpy( VEIDO , time , 16 );
sec = curtime.ti_sec;
}
enable();
}
holyfire
2001-03-02
打赏
举报
回复
void interrupt showtime()
{
int x , y;
struct time curtime;
static sec = 0;
disable();
gettime( &curtime );
holyfire
2001-03-02
打赏
举报
回复
#include <conio.h>
#include <dos.h>
#include <mem.h>
char * time = " \x15 \x15:\x15 \x15 \x15:\x15 \x15 \x15";
void far * VEIDO = MK_FP( 0xB800 , 0 );
holyfire
2001-03-02
打赏
举报
回复
下面的程序我已调试通过,但取得时间的方法还须改进,有谁知道还请赐教。
holyfire
2001-03-02
打赏
举报
回复
你说的很对,看来不光堆栈,中断也会有麻烦,应该直接对bios区取时间,直接写屏显示字符,我的资料不全,没法直接给你答复。
vehicle
2001-03-01
打赏
举报
回复
输出时一定不要使用printf,二要使用poke
wplian
2001-03-01
打赏
举报
回复
holyfire 谢谢你的回复
其实我也知道应该用int 08h 或int 1ch 编写新中断驻留函数
但是我编成的程序一运行就是死循环(只能不停的显示时间),
且无法进行我本来要做的事(在程序中),所以才向大家求救,
你的程序有一点错误,思想同我以前想的一样,只是没有驻留内存,
进行堆栈处理,你认为我说的对吗?(期待你的回复)
holyfire
2001-02-27
打赏
举报
回复
不好意思,我的贴子一大就贴不上去,只好分开。
我现在Win2k下,没调试过。你自己试试看吧。
holyfire
2001-02-27
打赏
举报
回复
#include <conio.h>
#include <dos.h>
#include <stdio.h>
void interrupt showtime()
{
int x , y;
struct time curtime;
disable();
gettime( &curtime );
x = wherex();
y = wherey();
gotoxy( 0 , 0 );
printf( "%2d:%2d:%2d", curtime.ti_hour , curtime.ti_sec , curtime.ti_min );
gotoxy( x , y );
enable();
}
holyfire
2001-02-27
打赏
举报
回复
void main()
{
void interrupt ( * f )();
f = getvect( 0x1c );
setvect( 0x1c , showtime );
getch();
setvect( 0x1c , f );
}
holyfire
2001-02-27
打赏
举报
回复
edyang的方法可行。
ls_heshang
2001-02-27
打赏
举报
回复
在turboc中有好多带的函数,比如time()之类,只要你的类型与系统一致,是可以取系统时间的!查查资料吧!
wplian
2001-02-27
打赏
举报
回复
请大家注意,我主要想得到一个类似于计时器的东西
例如:如果在程序需要用户输入时,而用户停住不输,按照上面两个不知啥鸟(开个玩笑)
的方法,此时还会不停的显示当时的系统时间吗?
zzbsw
2001-02-26
打赏
举报
回复
還有一种基本的方法,使用循環.其中顯示時間只是其中的一個子項.較容易理解,且不用使用底層函數(中斷).
加载更多回复(1)
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0
turboc2
.0汉化版
很好用的,窗口小,还有汉化包,容量也小!很不错的c
turbo c 2.0(英文版)
turbo c 2.0 英文版本,经典的版本,免费下载
Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全
Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全
Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全1111111111
Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全Turbo C2.0实用大全_Turbo C2.0实用大全_Turbo C2.0实用大全
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章