中断向量

- 编辑:大众自然网 -

中断向量

  保藏

  查看我的保藏

  0

  有效+1

  已投票

  0

  编辑

  锁定

  本词条匮乏消息栏,添加合连实质使词条更完好,还能火速升级,马上来编辑吧!

  终止向量是指早期的微机编制中将由硬件出现的终止标识码(终止源的识别符号,可用来酿成相应的终止任事步骤的入口地点或存放终止任事步骤的首地点)。终止是指正在策画机实施步骤的进程中,当崭露极度境况或者非常苦求时,策画机搁浅现行的步骤的运转,转而对这些极度经管或者非常苦求的经管,经管已毕后再返回到现行步骤的终止处,连续实施原步骤。

  1

  观点先容

  2

  终止

  ?

  存放

  ?

  跳转

  3

  向量外

  编辑

  终止标识码(终止类型号):

  由硬件(一样是终止节制器)出现,以标识分歧的终止源。

  终止向量:

  终止任事步骤的入口地点。正在某些策画机中,终止向量的职位存放一条跳转到终止任事步骤入口地点的跳转指令。

  终止向量地点:

  存储终止向量的存储单位地点

  编辑

  存放终止任事步骤的入口地点

  来存放终止向量(共256个),称这一片内存区为终止向量外,地点规模是0~3FFH,如图所示。

  正在PC/AT中由硬件出现的终止标识码被称为终止类型号(当然,终止类型号尚有其他的出现法子,如指令中直接给出、CPU自愿酿成等),即正在终止反响时候8259A出现的是目今苦求终止的最高优先级的终止源的终止类型号。终止类型号和终止向量之间有下面的合连:

  终止类型号×4=存放终止子步骤首地点的存储区首地点=终止向量地点

  有了存放终止向量的首地点,从该地点入手的4个存储单位中取出的即是终止任事步骤的入口。

  跳转到终止任事步骤的入口地点

  正在AVR或ARM微经管器中,终止向量的巨细也是4个字节,但此中存放的不是终止程任事步骤的入口地点,而是可实施的代码。当反响终止时,硬件自愿实施相应终止向量处的跳转代码,然后跳转到完全的终止任事步骤的入口地点。

  编辑

  CPU是按照终止号获取终止向量值,即对应终止任事步骤的入口地点值。是以为了让CPU由终止号查找到对应的终止向量,就必要正在内存中成立一张盘查外,即终止向量外(正在32位扞卫形式下该外称为终止描绘符外)。80x86微机撑持256个终止,对应每个终止必要打算一个终止任事步骤。正在 80x86实形式运转体例下,每个终止向量由4字节构成。这4字节指懂得一个终止任事步骤的段值和段内偏移值。是以一切向量外的长度为1KB。当 80x86微机启动时,ROM BIOS中的步骤会正在物理内存入手地点0x0000:0x0000处初始化并树立终止向量外,而各终止的默认终止任事步骤则正在BIOS中给出。因为终止向量外中的向量是按终止号程序罗列,是以给定一个终止号N,那么它对应的终止向量正在内存中的职位即是0x0000:N×4,即对应的终止任事步骤入口地点保管正在物理内存0x0000:N×4职位处。

  正在BIOS实施初始化操作时,它树立了两个8259A芯片撑持的16个硬件终止向量和BIOS供应的终止号为0x10~0x1f的终止挪用成效向量等。看待本质没有运用的向量则填入权且的哑终止任事步骤的地点。今后正在编制辅导加载操作编制时会按照本质必要修削某些终止向量的值。比如,看待DOS操作编制,它会从新树立终止0x20~0x2f的终止向量值。而看待Linux编制,除了正在刚入手加载内核时必要用到BIOS供应的显示和磁盘读操作终止成效,正在内核平常运转之前则会正在setup.s步骤中从新初始化8259A芯片而且正在head.s步骤中从新树立一张终止向量外(终止描绘符外)。统统放手了BIOS所供应的终止任事成效。

  当Intel CPU运转正在32位扞卫形式下时,必要运用终止描绘符外(Interrupt Descriptor Table,IDT)来经管终止或极度。IDT是Intel 8086~80186 CPU中运用的终止向量外的直接替换物。其用意也相似于终止向量外,只是此中每个终止描绘符项中除了含有终止任事步骤地点以外,还包括相合特权级和描绘符种别等消息。Linux操作编制事业于80x86的扞卫形式下,是以它运用终止描绘符外来树立和保管各终止的"向量"消息。下面是80X86终止向量外各个地点示意的终止用处。

  内存地点(十六进制)

  对应向量号(十六进制)

  终止用处

  BASIC终止向量

  0x3C4-0x3FF

  F1-FF

  未运用

  0x218-0x3C3

  86-F0

  BASIC步骤运转时供应给BASIC外明步骤用意

  0x200-0x217

  80-85

  为BASIC保存

  0x1E0-0x1FF

  78-7F

  未运用

  0x1DC-0x1DF

  77

  硬件终止15

  0x1D8-0x1DB

  76

  硬件终止14

  0x1D4-0x1D7

  75

  硬件终止13

  0x1D0-0x1D3

  74

  硬件终止12

  0x1CC-0x1CF

  73

  硬件终止11

  0x1C8-0x1CB

  72

  硬件终止10

  0x1C4-0x1C7

  71

  硬件终止9

  0x1C0-0x1C3

  70

  硬件终止

  0x1A0-0x1BF

  68-6F

  未运用

  0x180-0x19F

  60-67

  为用户步骤保存的单位

  0x128-0x17F

  4A-5F

  保存

  0x124-0x127

  49

  指向键盘加强任事变换外

  0x120-0x123

  48

  PC机运用,用于把PC机的键盘代码变换为准则的键盘代码

  0x11C-0x11F

  47

  保存

  DOS终止向量

  0x118-0x11B

  46

  第二硬盘参数块

  0x114-0x117

  45

  保存

  0x110-0x113

  44

  PC机运用,用于指向低辩白率图形字符参数外

  0x108-0x10F

  42-43

  未运用

  0x104-0x107

  41

  硬盘参数块

  0x0C0-0x0CB

  34-40

  未运用

  0x0CC-0x0CF

  33

  鼠标终止

  0x0C0-0x0CB

  30-32

  未运用

  0x0BC-0x0BF

  2F

  众道任事终止

  0x0B8-0x0BB

  2E

  根本SHELL步骤装入

  0x0AC-0x0B7

  2B-2D

  未运用

  0x0A8-0x0AB

  2A

  Microsoft搜集接口

  0x0A4-0x0A7

  29

  火速写字符

  0x0A0-0x0A3

  28

  DOS安然运用

  0x09C-0x09F

  27

  终止并驻留步骤

  0x098-0x09B

  26

  绝对磁盘写成效

  0x094-0x097

  25

  绝对磁盘读成效

  0x090-0x093

  24

  主要差错经管(用户不行直接挪用)

  0x08C-0x08F

  23

  Ctrl+Break经管地点(用户不行直接挪用)

  0x088-0x08B

  22

  步骤中止时DOS返回地点(用户不行直接挪用)

  0x084-0x087

  21

  DOS编制成效挪用

  0x080-0x083

  20

  DOS终止返回

  数据外指针

  0x07C-0x07F

  1F

  图形字符扩展码

  0x078-0x07B

  1E

  软盘参数块

  0x074-0x077

  1D

  视频参数块

  供应给用户的终止

  0x070-0x073

  1C

  按时器节制的软终止

  0x06C-0x06F

  1B

  Ctrl+Break节制的软终止

  BIOS终止

  0x068-0x06B

  1A

  时钟经管

  0x064-0x067

  19

  辅导装入步骤--编制自举

  0x060-0x063

  18

  BASIC入口代码--ROMBASIC入口代码

  0x05C-0x05F

  17

  打印机输出

  0x058-0x05B

  16

  键盘I/O

  0x054-0x057

  15

  盒式磁带I/O

  0x050-0x053

  14

  RS-232串行通信口I/O

  0x04C-0x04F

  13

  磁盘I/O

  0x048-0x04B

  12

  测定存储器容量

  0x044-0x047

  11

  兴办检查

  0x040-0x043

  10

  屏幕显示I/O

  8259终止向量

  0x03C-0x03F

  F

  LPT2节制器终止--并行打印机(IRQ7)

  0x038-中断向量0x03B

  E

  磁盘节制器终止--软磁盘(IRQ6)

  0x034-0x037

  D

  LPT2节制器终止--硬磁盘(并行口)(IRQ5)

  0x030-0x033

  C

  异步通讯(primary)--串行通讯接口1(IRQ4)

  0x02C-0x02F

  B

  异步通讯(secondary)--串行通讯接口2(IRQ3)

  0x028-0x02B

  A

  彩色/图形(IRQ2)

  0x024-0x027

  9

  键盘(IRQ1)

  0x020-0x023

  8

  按时器(IRQ0)

  8088终止向量

  0x01C-0x01F

  7

  保存

  0x018-0x01B

  6

  保存

  0x014-0x017

  5

  打印屏幕

  0x010-0x013

  4

  溢出

  0x00C-0x00F

  3

  断点指令

  0x008-0x00B

  2

  非屏障终止

  0x004-0x007

  1

  单步(用于DEBUG)

  0x000-0x003

  0

  除以零

  终止向量地点和终止向量

  终止向量:终止任事步骤的入口地点

  终止向量地点:内存中存放终止任事步骤入口地点的地点


中断向量