中断向量表修改(自定义时钟中断)

前置知识

I/O端口

I/O 接口与端口_微机原理i/o接口与端口的区别-CSDN博客
8086系统中的I/O端口编制方式_8086微机系统对存储器和io端口是如何编址的-CSDN博客
汇编语言中OUT和IN的用法_百度知道 (baidu.com)
总结

  1. 由于种种原因,I/O设备将会通过接口来与总线相连,从而实现与CPU通信。这里的接口可以理解为一个中转站。
  2. CPU要和 I/O 设备数据传送,在接口中必须设置特定寄存器(一个或多个)供给 CPU 直接存取访问。这些个寄存器就是所谓的端口。
  3. 一个接口里可以有多个端口,例如控制端口,数据端口等等
  4. 端口会进行编址,从而可以像访问内存地址一样来访问端口
  5. i8086采用独立编址方式,通过IN/OUT指令实现端口的读取写入

当然,现在的计算机中很少通过端口来访问I/O设备了,大部分使用更先进的技术

8253芯片

微机 —— 可编程定时器/计数器 8253/8254 - 柯星 - 博客园 (cnblogs.com)
总结:

  1. 8253可通过编程手段来实现定时/计数,可通过端口访问到
  2. 要编程控制8253,首先需要按照指定格式写入控制字,写入的端口为43h。随后选择对应的通道(计数器)写入计算初值(地址为40H-42H,例如通道0就是40H)
  3. 想要实现重复计时,一般都是使用模式3工作

中断向量表,自定义中断,8259芯片

汇编_修改中断向量表_自定义中断-CSDN博客(虽然这篇博文是以DOS为例,但是主要的知识点依然是共通的)
操作系统开发系列—8.时钟中断 - 是非猫 - 博客园 (cnblogs.com)
总结:

  1. 修改中断向量表就是修改一下中断向量
  2. 需要自己实现一个中断服务例程(别忘了用iret返回)
  3. 时钟中断在地址20H处(8乘4=20H)
  4. 需要对8259芯片做一些设置,例如打开定时器中断(IQR0),屏蔽从8259的中断(手动在设置一下确保不会出错)
  5. bios会将EOI设置为非自动模式,所以在中断服务例程中要手动发送EOI

实验流程

首先设置虚拟地址+初始化寄存器+上滚清屏

随后修改中断向量
在这里插入图片描述

之后设置时钟中断
在这里插入图片描述

然后完成中断服务例程(换行打印helo,world!)

在这里插入图片描述

最后补上0和结束符,实现MBR的格式

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 中断处理程序的编写:中断处理程序需要根据不同的中断类型进行不同的处理,需要深入了解硬件的操作方式和中断机制,才能编写出高效、稳定的中断处理程序。 2. 中断嵌套和优先级:当一个中断正在处理时,另一个中断到来,就会产生中断嵌套。中断嵌套的处理需要考虑中断优先级,以避免低优先级中断被高优先级中断所屏蔽。 3. 中断共享和竞争:多个设备可能会共享同一个中断,因此需要考虑中断共享和竞争的问题。如果多个设备同时请求同一个中断,就需要进行竞争处理,以保证中断的正确性和稳定性。 4. 中断状态保存和恢复:中断处理程序需要保存和恢复CPU的状态,以便在中断处理完毕后能够正确地返回到原来的程序。对于多个中断的嵌套,需要保存多个中断的状态,以防止状态丢失或混乱。 5. 中断向量的管理:中断向量是用来存放中断处理程序入口地址的数据结构,需要考虑中断处理程序的添加、删除和修改等操作,以及向量的大小和位置等问题。 6. 中断屏蔽和使能:操作系统需要实现中断屏蔽和使能的功能,以便控制中断的开关。中断屏蔽可以防止某些中断被处理,中断使能可以允许某些中断被处理。这些功能需要考虑中断优先级和嵌套等问题。 7. 中断处理时间的可控性:中断处理程序的执行时间对系统的响应速度和实时性有很大的影响,需要考虑如何控制中断处理时间,以避免系统响应过慢或实时性差的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值