2025年3月13日 星期四 甲辰(龙)年 月十二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

怎样在DOS程序中建立一个延时器(delay timer)?

时间:01-03来源:作者:点击数:57

我们这些程序员很幸运,因为Microsoft公司的专家认为建立一个独立于硬件的延时器是一个好主意。显然,这样做的目的在于,无论程序运行在什么速度的计算机上,都可产生一段固定的延迟时间。下面的程序说明了如何在DOS中建立一个延时器:

  • # include <stdio. h>
  • # include %dos. h>
  • # include <stdlib. h>
  • void main(int argc,char ** argv)
  • {
  • union REGS regs:
  • unsiged long delay;
  • delay = atoI(argv[1]) ; /* assume that there is an argument */
  • /* multiply by 1 for microsecond-granularity delay */
  • /* multiply by 1000 for millisecond-granularity delay */
  • /* multiply by 1000000 for second-granularity delay */
  • delay * =1000000;
  • regs. x. ax = 0x8600 ;
  • regs. x. cx= (unsigned int )((delay & 0xFFFF0000L)>>16) ;
  • regs. x. dx = (unsigned int ) (delay & 0xFFFF)
  • int86 (0x15, &regs, &regs) ;
  • }

上例通过DOS中断15H的86H功能来实现延时,延迟时间以微秒为单位,因此,上述延时程序认为你可能要使用一个非常大的数字,于是它分别用CX和DX寄存器来接受延时值的高16位和低16位。上述延时程序最多可以延时49.亿微妙---大约等于1.2小时。

上例假设延时值以微秒为单位,它把延时值乘以一百万,因此在命令行中可以输入以秒为单位的延时值。例如,“delay 10”命令将产生10秒的延时。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门