中断向量表和中断程序是放在哪里的?

中断向量表和中断程序是放在哪里的?哪些内部中断的程序都是固化在BIOS中?还有INT 21的功能号也是表示地址的吗?请高手详解?

中断向量表和中断程序是放在哪里的?

中断向量表

中断向量(矢量)表也称中断指示表。中断向量表放在存储单元地址的最低部位0000H到003FFH,占有1K字节的存储空间。中断向量表分成256组(类型码),每组由两个字(即4个字节)组成一个双字长的指针。每个双字指针指示一种中断类型,最多能识别256种不同类型的中断。通过这张中断向量表产生出各个中断服务程序的入口地址。

在双字长指针的高地址中存放的字是中断服务程序入口地址所在的代码段的基址(CS),低地址字是中断服务程序入口地址相对于段基址的补偿值(IP)。CPU通过CS和IP的值得到一个20位的地址,它就是中断服务程序的实际入口地址,过程见图8-3。计算方法同求一个存储器单元实际地址的方法一样,就是将CS基址左移4位,然后加上IP的补偿值。

===================================================== 

哪些内部中断的程序都是固化在BIOS中?

int 1 -20 是bios中断, 固化在ROM芯片中

int21 专门用于dos中断。 

======================================================

INT 21的功能号也是表示地址的吗?

王爽汇编上给出的表述是:

        int指令的格式为: int n, n为中断类型码, 他的功能是引发中断.

        cpu执行int n指令, 相当于引发一个n号中断的中断过程, 执行过程如下.

        (1)  取中断类型码n;

        (2)  标志寄存器入栈,IF=0,TF=0

        (3)  CS、IP入栈

        (4)  (IP)=(n*4), (CS)=(n*4+2)

每个中断向量具有一个相应的中断类型号码,由中断类型号码确定在中断向量表中的中断向量。中断类型号码乘4,将给出中断向量表中的中断向量入口第一字节的绝对地址(因为每个中断向量占4个字节)。举例说明,若中断类型号码为3,它指出中断向量表的第4个入口,则这个向量的第一字节的地址为:

3类型码×4=1210=00001100B=00CH

若类型3中,我们安排放置的CS=1E00H和IP=0A00H,则它们形成的服务程序的入口地址为1EA00H。CPU一旦响应中断类型3,则将转去执行从地址1EA00H(1EA00H=10H*CS+IP=10H*1E00H+0A00H)开始的类型3的中断服务程序。

追问

首先非常感谢您能回答我的问题。不过您好像没有意会我的问题。
我是想问:(1)若执行INT 21中断,可以算出一个INT 21中断程序的入口地址。但是INT 21有好多的功能程序,这些功能程序是INT 21中断程序的子程序?
(2)按照您所说的INT0-INT20是固化在ROM中。但是int21 专门用于dos中断,那它的程序不也要固化的吗?它们又不是程序员在每个程序中编的。

追答

(1) int21中断里有很多子例程, 究竟调用哪个例程由ah传递过去的参数决定
例如: mov ax,4c00h
int 21h
调用的是21号中断的第4ch号子程序.
(2) bios中断是固化到rom内, 机器启动后自动加载到内存的指定位置
dos中断也是, 安装dos后, 被写入到硬盘中, 机器启动后,同样被加载到指定位置
这个位置上面已经说过了
; 因为电脑断电后,内存中的数据都丢失了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-19
中断向量表和中断程序放在内存0:200内部中断固化在那也不好回答,要看那套BIOS,int21是中断,中断其实也就是跳转程序,跳转完了之后返回继续执行。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网