中断信号可以来自CPU内部或外部。

一. 8086CPU内部中断信号有

(1) 除法错误

(2) 单步执行

(3) 执行into指令

(4) 执行int指令

1. 中断码

8086用一个字节来描述中断码,可以表示256中不同的中断信息。

除法错误中断码为0

单步执行中断码为1

执行into指令中断码为4

执行int n指令中断码为n

2. 中断向量表

用来存放中断码对应中断处理程序的入口地址,一个地址包括段地址和偏移地址,高地址存放段地址,低地址存放偏移地址,需要四个字节来存储中断处理程序的入口地址,256个中断信号处理程序需要1024个字节来存储。8086CPU中断向量表存放在0地址处开始的1024个存储单元中,地址为0000:0000~0000:

03fff。

3. 中断处理程序

CPU在接收到中断信号后,停止当前正在执行的程序,跳转到由中断号对应的中断向量表地址处,去执行中断处理程序。

4. 中断过程(硬件自动完成)

(1) 由中断信息得到中断码

(2) 标志寄存器入栈

(3) 设置标志寄存器TF和IF为0

(4) cs入站

(5) ip入站

(6) 用中断向量表中地址设置cs和ip

5. 而iret指令是ip出栈,cs出栈和标志寄存器出栈

自己编写中断处理函数,只需要将中断处理函数的地址存放到相应的中断向量表处,然后调用iret指令返回。

6. 单步中断,CPU在执行完一条指令后,如果检测到标志寄存器TF位为1,则产生单步中断,触发中断过程。

7. int指令,直接触发一个n号中断

内部中断也就是通常所说的软中断。

二. 8086CPU外部中断,也就是通常所说的硬中断,理解什么是软中断什么是硬中断,就看是否是由电平信号去触发中断过程。

1. 可屏蔽中断,CPU根据标志寄存器IF位决定是否响应中断,IF=1,响应中断,IF=0,不响应中断。

2. 不可屏蔽中断,CPU必须响应中断。

8086汇编学习笔记9-中断相关推荐

  1. 8086汇编学习笔记10-端口

    8086CPU有两种地址空间,一是内存地址空间,二是端口地址空间,访问端口只能用in和out指令,分别用于从端口读数据和往端口写数据,CPU最多可以定位64KB个不同的端口,端口地址范围为0-6553 ...

  2. 8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等

    同类学习笔记总结: (一).8086汇编学习之基础知识.通用寄存器.CS/IP寄存器与Debug的使用 (二).8086汇编学习之DS寄存器.SS/SP寄存器 一.汇编程序的基本格式: 1.基本格式与 ...

  3. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  4. 汇编学习笔记——汇编指令

    目录 汇编指令 nop指令 mov.add.sub指令 adc.sbb指令 and.or指令 移位指令 逻辑左/右移指令 循环左/右移指令 算术左/右移指令 带进位循环左/右移指令 inc指令 pus ...

  5. 汇编学习笔记——伪指令

    目录 伪指令 段定义 结束标记 段关联标记 数据定义 标号 offset指令 seg指令 地址标号 数据标号 代码分段 程序标识 多文件系统 字符输入 重复定义 注释 重复汇编伪指令 伪指令汇总 伪指 ...

  6. 8086汇编学习小记-1

    8086汇编学习小记-1 View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT... datasg ENDSsta ...

  7. 汇编学习笔记:对抗反汇编实验2019092801

    汇编学习笔记:对抗反汇编实验2019092801 实验描述 实验环境 实验过程 实验结论 实验描述 使用相连的jz和jnz指令跳转到紧接着jnz指令的call指令的第二个字节.call指令实际上无效. ...

  8. 寄存器---汇编学习笔记

    第二章 寄存器 2.0 寄存器的绪论 一个典型的CPU由运算器.控制器.寄存器(CPU工作原理)等器件构成.内部总线实现 CPU 内部各个器件之间的联系,外部总线实现CPU和主板其他器件的联系. 在C ...

  9. GNU C内嵌汇编学习笔记

    前文所述,只是针对汇编格式的整理,本文将使用coreboot项目代码对其进行实例化.以方便.清晰了解到如何在C语言里使用内嵌汇编的方法.同样地,网络上也有众多文章涉及到这方面,所以本文更多是归纳总结. ...

最新文章

  1. 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架
  2. C语言运行时数据结构
  3. python基础课程6(看代码看注释)--pandas
  4. python从语音生成语谱图
  5. select * 与 count(*)数量不一致_技术分享 | MySQL:count(*)、count(字段) 实现上区别
  6. ibatis java 项目_iBatis搭建JAVA项目
  7. apt-cyg 代理设置
  8. 如何委婉地拒绝公司的offer?
  9. 如何更新一台计算机的驱动程序,怎样更新电脑最新驱动程序? -电脑资料
  10. “打砖块”H5游戏源码
  11. C语言运算符的优先级与结合性
  12. 导入(excel)+导出(excel)+国际化(i18n)+
  13. 十大靠谱“计算机视觉数据集”榜单
  14. 服务器美国视频网站吗,美国服务器可以做视频网站吗
  15. 编程之禅 (小赵译版)(2)
  16. 5G混战:改变世界不需要论资排辈
  17. Android 组件化代码中心化问题之.api化方案
  18. 远程桌面端口映射如何设置
  19. 解决Bean with name ‘XX‘ has been injected into other beans 问题
  20. 安卓开发仿微信图片拖拽_仿微信朋友圈发表图片拖拽和删除功能

热门文章

  1. 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
  2. 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )
  3. 关于MyEclipse连接SQLServer和Mariadbsql
  4. Vue引用其他组件,但组件某些部分不需要时的简单处理
  5. iOS 开发音视频流[1]---FFmpeg
  6. 为什么Java中有多态?
  7. 程序人生之回顾大学前两年----第一篇
  8. HDU3496-Watch The Movie
  9. 利用apache自带的工具 分割访问日志
  10. setjump longjump