WAITP PROC
PUSH AX
XOR AX,AX
LOOP1: IN AL,61H
AND AL,10H
CMP AL,AH
JE LOOP1
MOV AH,AL
LOOP LOOP1
POP AX
RET
WAITP ENDP
这个程序有一个参数cx,调用之前须将它设置成15.08微秒的倍数,轮敬基假如要延迟0.5秒,那么cx就应该是33144(0.5s/15.08us=33144)如果要延迟2秒呢,很简单可以连续调用4次延迟0.5秒的程序,如:
mov bl,4
loop2:mov cx,33144
call WAITP
dec bl
jnz loop2
其它延迟时间可以照上面例子类推
1 sleep(2000)2 sleep简单,但是如局差果延时比较长,系统就如悔首同死机,下面的方法能在延时的时候处理消息:
COleDateTime starttime = COleDateTime::GetCurrentTime()
COleDateTimeSpan endtime = COleDateTime::GetCurrentTime()-starttime
while(endtime.GetTotalSeconds()<桐前皮2)
{
MSG msg
GetMessage(&msg,0,0)
PreTranslateMessage(&msg)
endtime = COleDateTime::GetCurrentTime()-starttime
}
首先是将R4减1,然后看等于0否,二是转移,减1后结果不是0,则转移到指定的地址,如EDL1,DEL2,结果=0,则往下执行。整个姿锋歼子程序是个两层循环的延时程序,开始,R3=7FH,是127,再是:R4=FFH,是255,下面开始循环,一条NOP空 *** 作,就是为基侍了延时的,然后DJNZ,R4减1,不为0,转移到EDL1,又是NOP延时,如此,循环255次后,R4=0,迹冲内层循结束,往下,R3减1,R3不为0,转移到DEL2,重新开始R4=FFH,再循环255次。外层循环是R3的127次,内层是R4的255次,一共循环是255*127次,结束返回。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)