注册 登录
编程论坛 汇编论坛

一段代码,大家看看怎么改一下

qiuchen 发布于 2006-12-11 13:49, 479 次点击
这是一段俄罗斯方块的代码
是等待下一方块出现的模块
由于用到了Int15h 所以在Win2000/XP中的模拟16位环境并不真实,不支持15h的延时中断,导致速度过快.
大家有没有什么办法这个问题改掉 最好能用int21 多谢了
@wait: call @dispb ;显示当前新方块
push cx ;进入等待状态
xor cx,cx ;cx=等待时间(微秒)低字
mov dx,1000 ;dx=等待时间(微秒)高字
mov ah,86h
int 15h ;等待
pop cx ;退出等待状态
4 回复
#2
菜鸟上路2006-12-11 15:14

可以参考

[URL=http://bbs.bc-cn.net/viewthread.php?tid=85580]http://bbs.bc-cn.net/viewthread.php?tid=85580[/URL]
打字练习
#3
lefttime2006-12-11 20:08

用CX循环执行已经是最简了,不过用不着INT 15H和INT 21H吧;
例如:
MOV CX,2801
LOOP $
这样可以延时大约10ms,如果再进行循环嵌套的话,就可以变成要延时的时间啦

#4
hu9jj2006-12-11 20:14
3楼的方法延时时间可能会因CPU的不同而不同吧?不过对延时时间精确度要求不高的应用应该是可以的。
#5
lefttime2006-12-11 20:30

嗯,具体得参照CPU的时钟频率

1