汇编语言中如何设置延迟?

汇编语言中如何设置延迟?,第1张

1、首先在电脑中打开Masm for Windows 集成实验环境。

2、接着输入DATAS SEGMENT定义数据段,BUF0 DB 1定义一个字节型变量,名称是BUF0,初始值是01H。

3、DATAS SEGMENT定义数据段,BUF2 DW 1定义一个字型变量,名称是BUF2,初始值是0001H。

4、DATAS SEGMENT定义数据段,BUF4 DB 1 DUP(50)定义连续50个字节型变量,名称是BUF4,初始值是01H,DATAS ENDS;数据段定义结束。

5、最后完整段的Hello World程序,设置字符串变量DATAS  SEGMENT,就可以了。

1、是微秒,不是毫秒。

2、不要求精确。(如:最终延时了3微秒,也是可以接受的)

3、延时过程中,要求CPU占用率,要为零。不能是下面形式,下面while形式,cpu占用率是满爆的。

while(true)

{

读取精确到微秒时间

时间计数

计数比较

.........

}

4、std::this_thread::sleep_for(std::chrono::microseconds(1))这种方法试过来,实际上只是1毫秒,不是1微秒。

5、用Socket的select也试过了,struct timeval tv虽然有微秒的设置,但是,当tv_usec小于1000以下,全都是1毫秒。

6、std::timed_mutex mtx的成员函数try_lock_for(std::chrono::microseconds(1))也试过了,实际上,也只是1毫秒,不是1微秒。

Java中主要有两种方法来实现延迟,即:Thread和Timer\x0d\x0a\x0d\x0a1、普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如\x0d\x0atry \x0d\x0a{ \x0d\x0aThread.currentThread().sleep(1000)//毫秒 \x0d\x0a} \x0d\x0acatch(Exception e){} \x0d\x0a在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。\x0d\x0a\x0d\x0a2、但是如果要使用精确延时,最好使用Timer类:\x0d\x0aTimer timer=new Timer()//实例化Timer类 \x0d\x0atimer.schedule(new TimerTask(){ \x0d\x0apublic void run(){ \x0d\x0aSystem.out.println("退出") \x0d\x0athis.cancel()}},500)//五百毫秒 \x0d\x0a这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timer.schedule(new MyTask(), 1000, 2000)则每间隔2秒执行MyTask()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11904740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存