中断向量表和中断程序是放在哪里的?
中断向量表
中断向量(矢量)表也称中断指示表。中断向量表放在存储单元地址的最低部位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的中断服务程序。
中断向量表和中断程序放在内存0:200内部中断固化在那也不好回答,要看那套BIOS,int21是中断,中断其实也就是跳转程序,跳转完了之后返回继续执行。