菜鸟问题

chilamchueng 2003-08-26 10:09:01
8253测时间间隔

汇编语言编写
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chilamchueng 2004-01-24
  • 打赏
  • 举报
回复
所谓有容为大是能包含万物,融洽共存。这才是道之所至,黄河虽然是经常为患,威力之大,所到之处一片沧夷,可是当它流进大海,同样被大海所容纳,做人处世也一样,要是碰到什么困难阻碍,只要你懂得包容,那么一切困境自然就会解开。懂得包容,就可以从一切事物中学习,然后渗入做人处世方面
idontlikenickname 2003-08-26
  • 打赏
  • 举报
回复


测时间间隔就通过两次读取8253的计数器的值然后相减就可以了~
80x86机上的8253有3个计数器0,1,2,一般使用计数器0,其他几个控制着内存刷新,乱用会带来灾难性的后果~~
这是读取计数器0计数值的程序:

mov dx, 43h ; 控制寄存器口地址 -> dx
mov ax, 0h ; 控制字 -> ax
out dx, ax ; 输出到控制寄存器
mov dx, 40h ; 选择计数器0
in al, dx ; 读计数值的低8位
mov ah, al ;
in al, dx ; 读计数值的高8位
xchg al, ah ; 调整顺序

这时ax里就是计数值~

idontlikenickname 2003-08-26
  • 打赏
  • 举报
回复


测时间间隔就通过两次读取8253的计数器的值然后相减就可以了~
80x86机上的8253有3个计数器0,1,2,一般使用计数器0,其他几个控制着内存刷新,乱用会带来灾难性的后果~~
这是读取计数器0计数值的程序:

mov dx, 43h ; 控制寄存器口地址 -> dx
mov ax, 0h ; 控制字 -> ax
out dx, ax ; 输出到控制寄存器
mov dx, 40h ; 选择计数器0
in al, dx ; 读计数值的低8位
mov ah, al ;
in al, dx ; 读计数值的高8位
xchg al, ah ; 调整顺序

这时ax里就是计数值~

021850524 2003-08-26
  • 打赏
  • 举报
回复
你把它的口地址给出来呀,就是一个记数器.
idontlikenickname 2003-08-26
  • 打赏
  • 举报
回复


这不是很完整吗?

...
mov dx, 43h ; 控制寄存器口地址 -> dx
mov ax, 0h ; 控制字 -> ax
out dx, ax ; 输出到控制寄存器
mov dx, 40h ; 选择计数器0
in al, dx ; 读计数值的低8位
mov ah, al ;
in al, dx ; 读计数值的高8位
xchg al, ah ; 调整顺序
mov var1, ax ; 保存到变量var1

... ; 被测时间的程序段

mov dx, 43h ; 控制寄存器口地址 -> dx
mov ax, 0h ; 控制字 -> ax
out dx, ax ; 输出到控制寄存器
mov dx, 40h ; 选择计数器0
in al, dx ; 读计数值的低8位
mov ah, al ;
in al, dx ; 读计数值的高8位
xchg al, ah ; 调整顺序

... ; 计算var1和ax的查支不就完了?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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