汇编中如何实现相当于Sleep函数的功能?

wuyuan563 2010-05-01 04:28:10
如题!
...全文
1019 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
robin97 2011-11-23
  • 打赏
  • 举报
回复
这个跟语言没有关系,这个跟定时器和操作系统有关系。如果是单任务系统,可以采用循环检测的方式,对于多任务系统,就要涉及到任务切换。
jilianglijie 2011-11-18
  • 打赏
  • 举报
回复
这个帖子看到的太晚了,但还要喷一下我的思路,首先配置定时器间隔为一个合适的值这个值是活动可变的,然后执行hlt指令使CPU停机等待时钟中断后继续执行
redher 2010-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mydo 的回复:]

dos下可以调用定时器中断
[/Quote]

是需要重写08h中断吗?
没找到这个中断的具体说明.
侯兄给我们扫扫盲吧.

另外在百度dos帖吧看见一个这样用的


goto make

A100
mov ah, 0
int 1a
add dx, 0f
mov bx, dx
int 1a
cmp dx, bx
JB 109
int 20

RCX
11
NC:\sleep.com
WCS:100
Q

:make
DEBUG<sleep.bat

把以上代码保存为sleep.bat,直接点击,会在C盘下生成一个sleep.com的小文件。

然后再cmd下输入一串命令试验一下:
for /l %i in (0,1,9) do ( color %i & sleep)


感觉也是在循环.

大熊猫侯佩 2010-05-01
  • 打赏
  • 举报
回复
dos下可以调用定时器中断,win32中可以调用Sleep API。
redher 2010-05-01
  • 打赏
  • 举报
回复
_sleep proc
delay: push ax
push dx
mov dx,1000h ;;循化10000000h次,读者可根据CPU速度自行调解循化次数.
mov ax,0
s1: sub ax,1
sbb dx,0
cmp ax,0
jne s1
cmp dx,0
jne s1
pop dx
pop ax
ret
_sleep endp

引子王爽<<汇编语言>>第二版 p227的一段程序

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧