构建单片机虚拟实验仿真平台(1)(2)
2015-05-29 01:15
导读:图3 虚拟实验操作台(正在运行中)2.2.3 中断模块(8259A) 真正的8259A在编程的时候要将中断服务子程序入口地址放入中断向量表;在虚拟系统中,地址均由行号

图3 虚拟实验操作台(正在运行中)2.2.3 中断模块(8259A) 真正的8259A在编程的时候要将中断服务子程序入口地址放入中断向量表;在虚拟系统中,地址均由行号来代替,当用汇编指令获得一个子程序的地址时,实际上是取得了它的行号。当中断到来的时候实际上执行的也正是该行号对应的程序,所以其功能与真实的是一样的。为了能够更真实地模拟硬件,我们定义了状态机来负责管理8259A的工作。状态机的功能是:识别写入端口的是否是初始化数据,并可以根据写入的内容来确定下一步应该写入的内容,即从一个状态到另一个状态的转化;同时还记录8259A的一些工作状态,比如:优先级方式、中断结束方式等等。对于中断嵌套,我们使用堆栈进行处理。首先定义一个堆栈stack(实际上是由一个数组构成的存储区)负责在执行中断前将IP入栈,即行号入栈。每当程序执行到RETI指令的时候就从stack中取出一个行号放入IP(可称为出栈)。这样就保证了中断程序结束后顺利回到断点处继续执行,这时的断点可以在主程序中,也可以在某个中断程序中(即中断嵌套)。共2页: 1 [2] 下一页 论文出处(作者):
理想Web倒计时器的设计与实现
浅谈办公网络中防火墙的应用