中断发生时候 :: 凌辰三点
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=65722 存档链接: https://web.archive.org/web/20041029014127id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=65722
凌辰三点 记录一些自己资料 <<<直接IO读硬盘的例子 | 首页 | MBR加载过程>>> 中断发生时候 时间: 2004-01-03 中断发生时候,CPU自动调用相应的中断处理程序,这些中断处理程序的入口指针(被称作中断向量)一般被放在一个指定的位置,比如BIOS中断向量放在地址0-1K的空间内,每4个字节存放一个中断向量.而在保护模式下,BIOS中断不可用,中断向量被放在IDT中,当一个中断发生时,CPU将中断号作为索引到相应的中断处理程序表中(BIOS中断向量表(实模式)或IDT(保护模式))找到相应的中断处理程序的指针,并执行它. 另外,中断处理程序用C/C++还是ASM,还是机器语言写的并不重要,因为编译之后都是二进制机器指令或数据.但如果你的中断处理程序有空间和效率的限止,则一般使用汇编语言写,比如BIOS中断处理程序都是用汇编写的,被放在0xB0000-0xFFF00之间,而保护模式下,被OS开发者写的中断处理程序一般都是用C写的,比如linux.这些都不重要. 还有就是,BIOS中断处理程序被固化在ROM中,但BIOS中断向量表却是在PC启动时被POST(Power-On Self Test,是一段被固化在ROM中的程序)初始化在RAM中的,因此,你可以修改这些向量,让它们指向你自己写的程序.这样当中断发生时, CPU就会执行你所写的中断处理程序. 对于那些针对硬件操作的中断处理程序,我们看起来只要调用这些中断,就可以达到对硬件操作的效果(比如磁盘操作,显示器操作等等),但事实上,这只不过是中断处理程序直接调用I/O操作(in或out指令)来帮你完成了这一切罢了. seath 发表于 2004-01-03 03:27 引用(Trackback0) | 编辑 评论 发表评论 最后更新 我写的病毒疫苗程序 我编写的病毒Trojan.Dicta.5632 动态的查找Kernel32.dll的模块句柄与 GetProcAddress的API函数地址 WIN9X内核线程注入及进程不死技 SEH in ASM 研究 p2p蠕虫的代码 Elkern.C源代码 CIH1.2完全源程序 MBR加载过程 中断发生时候