Windows – 如何在16位MASM程序集x86中创建一个睡眠功能?
发布时间:2020-12-14 04:34:43 所属栏目:Windows 来源:网络整理
导读:我正在尝试在16位MASM程序集x86中创建一个睡眠/延迟程序,例如,每500ms屏幕上打印一个字符. 从我所做的研究,似乎有三种方法来实现这一点 – 我想使用那个使用CPU时钟滴答的方法. 请注意,我在Mac OS X Snow Leopard上通过VMWare Fusion运行Windows XP – 我不
我正在尝试在16位MASM程序集x86中创建一个睡眠/延迟程序,例如,每500ms屏幕上打印一个字符.
从我所做的研究,似乎有三种方法来实现这一点 – 我想使用那个使用CPU时钟滴答的方法. 请注意,我在Mac OS X Snow Leopard上通过VMWare Fusion运行Windows XP – 我不知道是否影响任何事情. 有人可以指出我正确的方向,还是提供一个可以调整的代码的工作?谢谢! 我发现的代码应该是每秒在屏幕上打印“A”,但不起作用(我想使用毫秒). TOP: MOV AH,2C INT 21 MOV BH,DH ; DH has current second GETSEC: ; Loops until the current second is not equal to the last,in BH MOV AH,2C INT 21 CMP BH,DH ; Here is the comparison to exit the loop and print 'A' JNE PRINTA JMP GETSEC PRINTA: MOV AH,02 MOV DL,41 INT 21 JMP TOP 编辑:遵循GJ的建议,这是一个工作程序.只是叫它 DELAY PROC TIMER: MOV AH,00H INT 1AH CMP DX,WAIT_TIME JB TIMER ADD DX,3 ;1-18,where smaller is faster and 18 is close to 1 second MOV WAIT_TIME,DX RET DELAY ENDP
其实可以使用ROM BIOS中断1Ah功能00h,“读取当前时钟计数”.或者您可以在地址$40:$6C上阅读双字,但您必须确保原子阅读.它以约18.2 Hz的速度增加MS-DOS.
欲了解更多信息,请参阅:The DOS Clock (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 2018-2019-2 20165217《网络对抗技术》Exp2 后门原理与实践
- 多方视频对话使用skype web sdk在线发布Skype for business
- 通过Platform Builder将设备驱动程序添加到Windows CE 6.0
- windows – 无论如何从Win 7 beta升级到RC?
- .net – 如何配置Microsoft Enterprise Library日志记录应用
- windows – 增加最多(超过10个)TCP连接
- windows-server-2003 – 使用Robocopy进行文件服务器迁移
- windows-server-2008-r2 – 我可以直接将2003(不是R2)adpre
- windows – 我在哪里(安全地)获取libintl3.dll?
- windows-server-2003 – 如何禁用系统服务监听Windows Serv
推荐文章
站长推荐
- Windows Azure:无法将34 MB文件上载到blob
- typescript – 类型Window上不存在XMLHttpReques
- 在WIndows 7中使用带有英特尔高清显卡的OpenCL入
- .net – 在64位Win上缺少dll
- Windows中eclipse安卓模拟器的SD卡在哪里?
- windows – 两个DFS复制组类型之间有什么区别?
- active-directory – 如何使用security / sssd将
- 在windows_hyperv_admin中阻止尝试流浪者时出错
- 如何检测Windows机箱上是否安装了特定证书?
- windows – “(.hg not found)”从cygwin托管的存
热点阅读