像没有内部Flash空间的51系列的单片机是需要外部存储器的,无论中断程序还是其它程序都是需要外部存储器存储的。而有Flash空间的单片机,通常情况下会将程序存储到Flash中缓毕,而Flash严格来说,不算是“外部存储器”改陆,因为它是在单片机内部的。
如果有 *** 作系统的单片机,根据不同的内存核哪顷管理方式,有可能会放在RAM中。
中断向量表和中断程序是放在哪里的?
中断向量表
中断向量(矢量)表也称中断指示表。中断向量表放在存储单元地址的最低部位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条)