第10幸中断和输入/输出程设计 1.外部中断 8086有两条外部中断请求线NM和INTR。NM为非屏蔽中 断,INTR为可屏蔽中断。NM用于重要的中断源,如电源掉电 等,它的类型号是2。CPU不禁止NM线上的中断请求,但可由 指令STI(中断允许标志置“1)和CLI(中断允许标志置“0)允许 和禁止ⅣNTR线上的中断请求,即CPU可用ST和CL指令开、关 中断,当关中断时,CPU将不响应ⅠNTR线上的中断请求
第10章 中断和输入/输出程序设计 1.外部中断 8086有两条外部中断请求线NMI和INTR。NMI为非屏蔽中 断,INTR为可屏蔽中断。NMI用于重要的中断源,如电源掉电 等,它的类型号是2。CPU不禁止NMI线上的中断请求,但可由 指令STI(中断允许标志置“1”)和CLI(中断允许标志置“0”)允许 和禁止INTR线上的中断请求,即CPU可用STI和CLI指令开、关 中断,当关中断时,CPU将不响应INTR线上的中断请求
第10幸中断和输入/输出程设计 2.内部中断 1)除法指令 在执行除法指令时,若发现除数为0或商超过了寄存器所 能表达的范围,则立即产生一个类型0的内部中断。 2)溢出中断指令INTO 若上一条指令使溢出标志OF置1,那么当执行溢出中断指 令INTO时,立即产生一个类型4的中断;若标志OF为0,则此 指令不起作用
第10章 中断和输入/输出程序设计 2.内部中断 1) 除法指令 在执行除法指令时,若发现除数为0或商超过了寄存器所 能表达的范围,则立即产生一个类型0的内部中断。 2) 溢出中断指令INTO 若上一条指令使溢出标志OF置1,那么当执行溢出中断指 令INTO时,立即产生一个类型4的中断;若标志OF为0,则此 指令不起作用
第10幸中断和输入/输出程设计 3)ⅠNTn指令 CPU执行完ⅠNTn指令时立即产生一个中断,所以又称它为 “软件中断”。中断的类型由指令中的n指明。因为ⅠNT指令中 可以指定任何的类型号,故此指令可方便地用来调试为外设编 写好的中断服务程序 4)单步中断 若单步标志IF为1,则在每条指令执行后,CPU自动产生 个类型1的中断(单步中断),使程序单步执行,它提供给用户 强有力的调试手段
第10章 中断和输入/输出程序设计 3) INT n指令 CPU执行完INTn指令时立即产生一个中断,所以又称它为 “软件中断”。中断的类型由指令中的n指明。因为INT指令中 可以指定任何的类型号,故此指令可方便地用来调试为外设编 写好的中断服务程序。 4) 单步中断 若单步标志IF为1,则在每条指令执行后,CPU自动产生 一个类型1的中断(单步中断),使程序单步执行,它提供给用户 强有力的调试手段
第10幸中断和输入/输出程设计 8086规定这些中断的优先权从高到低的顺序是: ●除法错误、INTO、INTn NMI ●INTR: ●单步中断
第10章 中断和输入/输出程序设计 8086规定这些中断的优先权从高到低的顺序是: ● 除法错误、INTO、INT n; ● NMI; ● INTR; ● 单步中断
第10幸中断和输入/输出程设计 3.中断矢量表 中断矢量表占用内存中00000到003FFH的1KB空间。表 中内容分为256项,对应于类型号0~255,每一项占用4个字节, 用来存放相应类型的中断服务程序的入口地址,高两字节存放 入口地址的段地址部分,低两字节存放段内偏移地址部分,如 图10-2所示。对于任一指定类型的中断,CPU只要将其类型号 乘4就可以得到其中断矢量(即此类中断在中断矢量表中占用的4 个字节的最低字节的地址),然后取出它所占有的4个字节的内 容分别送到IP和CS,就实现了中断服务程序的调用,所以中断 矢量表是中断类型号与其对应的中断服务程序之间的连接链
第10章 中断和输入/输出程序设计 3.中断矢量表 中断矢量表占用内存中00000H到003FFH的1 KB空间。表 中内容分为256项,对应于类型号0~255,每一项占用4个字节, 用来存放相应类型的中断服务程序的入口地址,高两字节存放 入口地址的段地址部分,低两字节存放段内偏移地址部分,如 图10-2所示。对于任一指定类型的中断,CPU只要将其类型号 乘4就可以得到其中断矢量(即此类中断在中断矢量表中占用的4 个字节的最低字节的地址),然后取出它所占有的4个字节的内 容分别送到IP和CS,就实现了中断服务程序的调用,所以中断 矢量表是中断类型号与其对应的中断服务程序之间的连接链