8086汇编学习笔记9-中断
中断信号可以来自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-中断相关推荐
- 8086汇编学习笔记10-端口
8086CPU有两种地址空间,一是内存地址空间,二是端口地址空间,访问端口只能用in和out指令,分别用于从端口读数据和往端口写数据,CPU最多可以定位64KB个不同的端口,端口地址范围为0-6553 ...
- 8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等
同类学习笔记总结: (一).8086汇编学习之基础知识.通用寄存器.CS/IP寄存器与Debug的使用 (二).8086汇编学习之DS寄存器.SS/SP寄存器 一.汇编程序的基本格式: 1.基本格式与 ...
- 8086汇编学习小记-王爽汇编语言实验12
8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...
- 汇编学习笔记——汇编指令
目录 汇编指令 nop指令 mov.add.sub指令 adc.sbb指令 and.or指令 移位指令 逻辑左/右移指令 循环左/右移指令 算术左/右移指令 带进位循环左/右移指令 inc指令 pus ...
- 汇编学习笔记——伪指令
目录 伪指令 段定义 结束标记 段关联标记 数据定义 标号 offset指令 seg指令 地址标号 数据标号 代码分段 程序标识 多文件系统 字符输入 重复定义 注释 重复汇编伪指令 伪指令汇总 伪指 ...
- 8086汇编学习小记-1
8086汇编学习小记-1 View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT... datasg ENDSsta ...
- 汇编学习笔记:对抗反汇编实验2019092801
汇编学习笔记:对抗反汇编实验2019092801 实验描述 实验环境 实验过程 实验结论 实验描述 使用相连的jz和jnz指令跳转到紧接着jnz指令的call指令的第二个字节.call指令实际上无效. ...
- 寄存器---汇编学习笔记
第二章 寄存器 2.0 寄存器的绪论 一个典型的CPU由运算器.控制器.寄存器(CPU工作原理)等器件构成.内部总线实现 CPU 内部各个器件之间的联系,外部总线实现CPU和主板其他器件的联系. 在C ...
- GNU C内嵌汇编学习笔记
前文所述,只是针对汇编格式的整理,本文将使用coreboot项目代码对其进行实例化.以方便.清晰了解到如何在C语言里使用内嵌汇编的方法.同样地,网络上也有众多文章涉及到这方面,所以本文更多是归纳总结. ...
最新文章
- 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架
- C语言运行时数据结构
- python基础课程6(看代码看注释)--pandas
- python从语音生成语谱图
- select * 与 count(*)数量不一致_技术分享 | MySQL:count(*)、count(字段) 实现上区别
- ibatis java 项目_iBatis搭建JAVA项目
- apt-cyg 代理设置
- 如何委婉地拒绝公司的offer?
- 如何更新一台计算机的驱动程序,怎样更新电脑最新驱动程序? -电脑资料
- “打砖块”H5游戏源码
- C语言运算符的优先级与结合性
- 导入(excel)+导出(excel)+国际化(i18n)+
- 十大靠谱“计算机视觉数据集”榜单
- 服务器美国视频网站吗,美国服务器可以做视频网站吗
- 编程之禅 (小赵译版)(2)
- 5G混战:改变世界不需要论资排辈
- Android 组件化代码中心化问题之.api化方案
- 远程桌面端口映射如何设置
- 解决Bean with name ‘XX‘ has been injected into other beans 问题
- 安卓开发仿微信图片拖拽_仿微信朋友圈发表图片拖拽和删除功能
热门文章
- 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
- 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )
- 关于MyEclipse连接SQLServer和Mariadbsql
- Vue引用其他组件,但组件某些部分不需要时的简单处理
- iOS 开发音视频流[1]---FFmpeg
- 为什么Java中有多态?
- 程序人生之回顾大学前两年----第一篇
- HDU3496-Watch The Movie
- 利用apache自带的工具 分割访问日志
- setjump longjump