8254 数字跳跃实验
实验内容:
文本模式下在屏幕中央显示一个数字,数值从 0-9 跳跃,每秒 1 次。

思路:
8254 的 OUT0 与 8259 的 IRQ0 连接,因此,控制 8254 的 CNT0 产生每秒 1 次的脉冲信号,就相当于每秒产生 1 次 IRQ0 中断,BIOS 初始化时,IRQ0 对应 INT8,在中断向量表的地址是 8<<2=0x20,自定义该中断向量的中断服务程序即可。
实际上由于数值大小的限制,8254 的 CNT0 并不能产生每秒 1 次的脉冲信号,但是可以产生每秒 20 次的脉冲信号,然后在程序中设置一个计数器进行分频即可。
Overall, life would have been better if IBM had originally programmed the timer to interrupt after 59659 hardware ticks. This would have produced an interrupt 20 times per second, which would have been more convenient for everyone, with very little change in performance. (Isn’t 20/20 hindsight wonderful?)
Jim Lyon's review on https://blogs.msdn.microsoft.com/oldnewthing/20041202-00/?p=37153, December 2, 2004 at 9:02 am.
参考资料:
Last updated