主题:调用中断的问题
euclid
[专家分:1670] 发布于 2005-06-12 09:34:00
通过汇编语言的学习,我明白了原来中断的调用和函数的调用很类似,都要用堆栈来保存与返回函数地址。但是中断的不同之处在于它要从一个固定的地址表(中断失量表)中调用中断子程序,而很多中断子程序如BIOS,都以固化在ROM中,
那么我的问题是每次启动计算机时都要先把BIOS子程序地址放入矢量表中吗???
回复列表 (共5个回复)
沙发
hk18 [专家分:2230] 发布于 2005-06-12 11:04:00
我觉得你所说的固定的地址表(中断失量表)中的内容只是cs,ip,那么当调用时,就应该从cs:ip中去调用.
板凳
euclid [专家分:1670] 发布于 2005-06-12 11:58:00
大哥你好像没有理解我的问题?
首先中断矢量表其实是主存中0x00000000~0x00003FFF的地址,主存中的内容不是固化的,每次启动时主存都没有内容,即使是矢量表也不例外是空值,那我的问题就是此时是否把ROM中的子程序地址放入主存中呢?
3 楼
hk18 [专家分:2230] 发布于 2005-06-12 17:48:00
哦.
这我不太清楚,和操作系统有关了.
资源是os分配的.
对了,你上面提到的计算机是32的?至于32位系统是不是和16的系统采取相同的策略,我没找资料考证过.
不过,我本人认为为了追求跟快的速度,启动主存,此时把ROM中的子程序地址放入你所谓的主存中是必然的.
你认为的内存,只是ram吗?内存由ram和rom,其中ram一般是dram, rom中内容被映射到ram中加以利用,这映射,就需要采用一些策略了.
4 楼
euclid [专家分:1670] 发布于 2005-06-13 13:42:00
哦,主存是ram
5 楼
心思飞 [专家分:710] 发布于 2005-06-26 11:00:00
要在那个下面设?是在8259A芯片呢,还是什么东西!8259A的就6条指令!
我来回复