汇编语言11之中断和int指令以及端口

2023-11-17

中断第处理外部突发事件的一个重要技术

硬件中断

外部中断

​ 一般是外设发出的中断

内部中断

​ 硬件出错或运算出错引起的中断,不可被屏蔽

软件中断

中断处理程序

CPU必须建立中断信息和中断处理程序之间的联系

中断信息中包含(1byte)中断类型码,CPU根据此来定位中断处理程序

中断向量表:存放中断类型码和中断处理程序的对应关系的表,存放中断处理程序的入口地址

8086的中断向量表是放在内存起始位置总共256个中断类型,占用1024个字节

中断过程:

  • 取得中断类型码N
  • 标志位寄存器入栈,pushf
  • 设置标志寄存器的TF和IF为0。TF=0,IF=0
  • CS入栈,push cs
  • IP入栈,push ip
  • 获取中断类型码4和中断类型码*4+2两个字单元读取16段地址和16位偏移地址,获取中断入口,(ip)=(N4),(cs)=(N4+2)

中断处理程序的常规步骤:

​ (1) 保存用到的寄存器

​ (2) 处理中断

​ (3) 恢复用到的寄存器

​ (4)用iret指令返回,iret指令就相当于pop ip pop cs popf

编译器可以使用加减乘除减来处理两个常数的运算,减号两边的操作数必须在编译后就能确定数值,可以是标号,不能是寄存器

单步中断

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

响应中断的特殊情形:有些情况下CPU在执行完当前指令后,即便发生中断,也不会响应

例如:

​ 在执行完ss寄存器传送数据的指令后,即便检测到中断信号,也不会响应,因为ss和sp共同完成栈顶的位置,CPU响应中断是需要用到栈结构的,ss改变sp没有设置,指向不确定的栈顶

int指令

相当于引发一个n号中断,执行中断子程序,通常与iret指令相互配合,iret中断返回

执行过程:

​ (1)取中断类型码

​ (2)标志位寄存器入栈:TF=0,IF=0

​ (3)CS、IP入栈

​ (4)(ip)=nx4,(cs)=(nx4+2)

转去中断处理程序

]

image-20210813103620462

端口的读写(主要指的是硬件外设提供的端口)

​ CPU可以直接访问内存、端口、寄存器

​ 端口读写指令只有两条:in out

​ 访问端口:in al,60h从60h号端口读入一个字节

​ 无论读取还写出都是只能使用ax寄存器

PC机都有一个CMOS RAM芯片,共128个字节

该芯片有70h,71h两个端口

shl和shr

shl为逻辑左移

shr为逻辑右移

如果移动的位数大于1的时候,将移动的位数放入cl中才能使用

移动的过程中溢出的进入CF位

外中断源一共有两类:

可屏蔽中断

​ 不可屏蔽中断

CPU在检测到可屏蔽中断信息时

如果IF=1,CPU在执行完当前指令后响应中断

如果IF=0,不响应中断,在中断子程序的过程中,关闭IF

​ sti指令:设置IF=1

​ cli指令:设置IF=0

键盘的处理过程:

​ 按下一个键产生的扫描码为通码

​ 松开一个键产生的扫描码为断码

​ 两者相差80H

BIOS提供int 9处理中断输入

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编语言11之中断和int指令以及端口 的相关文章

  • 预处理丨去趋势(Matlab和C++)

    预处理丨去趋势 Matlab和C 预处理丨去趋势 Matlab和C 介绍 原理 MATLAB 实现 C 实现 本科没学过信号处理 对采集的数据需要做预处理 如去趋势 本文介绍一下去趋势的作用和方法 介绍 1 去趋势波动分析 detrende
  • anaconda+pyCharm安装教程

    1 前往官网下载anaconda 官网下载地址 https www anaconda com products individual 无脑next就完事了 记得修改安装路径 D盘或其他盘都行 这两个框都勾选上 省下配置环境的烦恼 2 接下来

随机推荐

  • MD5算法 —— C语言实现(字符串的加密)

    网上找到的实现md5函数代码 包括一个头文件md5 h和一个源文件md5 c 用下面的测试代码test c测试通过 各文件依次如下 h文件 md5 h ifndef MD5 H define MD5 H typedef struct uns
  • 格式文档时使用替换删除空白行

    格式文档时使用替换删除空白行 手动的话 可以使用替换 选上正则 匹配栏 n s 2 n s 匹配大于等于2个换行的 替换栏 1 然后一键替换即可
  • kotlin 一用就爱上

    前言 前晚谷歌大会正式宣布 kotlin正式成为官方开发语言 圈里顿时闹得沸沸扬扬 之前也有去捣鼓一下 就是每次下载插件的时候会失败 然后就没捣鼓 但是谷歌昨天正式宣布了所以得去捣鼓了 刚刚开始的时候下载的时候也会弹出个失败窗口 直接复制图
  • jenkins部署微服务项目

    新手上路 对着视频做了一个谷粒的在线教育项目 测试跑通之后 想要自己试着部署到自己的云服务器上 闲着也是闲着不是 言归正传 简介 在微服务架构中 随着服务越来越多 服务的打包部署就会成为一个相当麻烦的事情 比如说我的edu online项目
  • 函数写不好后面的人都会遭殃,如何写一个更好的Python函数?

    Python虽然好用 但用好真的很难 尤其是函数部分 只要写不好 后面的一连串人都会遭殃 看又看不懂 测试起来也麻烦 维护又维护不动 真是让人头疼 那怎么写好一个Python函数呢 Writing Idiomatic Python 一书的作
  • 2020年深圳杯C题

    C题 无线可充电传感器网络充电路线规划 摘要 物联网的快速发展带动了无线传感器网络WSN在生活中的广泛运用 无线传感器网络中包括若干传感器以及一个数据中心 这些传感器的电池均需要移动充电器提供能量来维持正常的工作 移动充电器的能量一方面用于
  • 物联网(AIOT)--下一个技术风口

    物联网 AIOT 下一个技术风口 我们现在身边越来越多的硬件设备正在被嵌入芯片 软件 从而实现更多的功能和更紧密的联系 物联网其实是借助互联网的力量 实现万物互联 如果说互联网是联系你我 让信息的交换更加自如 物联网是让人体自身 身边的各种
  • AIGC:人人可用的新时代,ChatGPT背后的技术将深刻改变工作模式,重塑商业形态...

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年8月份全网热门报告合集 ChatGPT提词示例 让你的ChatGPT聪明100倍 超百页干货资料 AI应用的难点 痛点与未来 202
  • 【VULNHUB靶机】Corrosion: 1

    在家隔离 好久没玩靶机了 现在来整一个 靶机信息 下载地址 https www vulnhub com series corrosion 491 下载之后直接导入到vmeware即可 打靶过程 信息收集 nmap masscan 发现有22
  • 2022年高教社杯全国大学生数学建模竞赛-【比赛规则篇】比赛规则及比赛指导

    目录 前言 比赛规则 1 开题说明 2 竞赛结束前 1 参赛作品的组成 2 参赛作品的提交
  • 解决Eclipse找不到或无法加载主类问题

    1 projiet clean 2 再次运行程序 就可以成功运行
  • C++ lock_guard 自动释放锁

    概述 根据对象的析构函数自动调用的原理 c 11推出了std lock guard自动释放锁 其原理是 声明一个局部的lock guard对象 在其构造函数中进行加锁 在其析构函数中进行解锁 最终的结果就是 在定义该局部对象的时候加锁 调用
  • 函数,形参 实参,递归

    打开网页 include
  • 28-React state提升、组件组合或继承

    Lifting State Up state提升 对于在React应用程序中更改的任何数据 应该有一个单一的数据源 通常 都是将state添加到需要渲染的组件 如果其他组件也需要它 您可以将其提升到最接近的共同祖先 而不是尝试在不同组件之间
  • PowerDesigner和MySql Workbench

    1 Power Designer 是Sybase公司的CASE工具集 使用它可以方便地对管理信息系统进行分析设计 他几乎包括了数据库模型设计的全过程 利用Power Designer可以制作数据流程图 概念数据模型 物理数据模型 还可以为数
  • statsmodels.tsa.stattools.adfuller()结构及用法详解

    statsmodels是一个Python模块 提供了大量统计模型的类和函数 主要功能有 regression Generalized least squares including weighted least squares and le
  • spring中@Qualifier注解的使用

    该注解可以使用在类上 属性上 参数上 方法上 1 当使用在类上的时候 如下代码 Qualifier注解里面填写的值就是当前类注入到IOC容器的bean的唯一标识 id 再使用到该Bean的地方就可以直接根据唯一标识 id 从IOC容器中获取
  • 图片归一化 img/255.0 和img/127.5 - 1对比

    在代码中看到图像的2种处理方式 img 255 0 img 127 5 1 第一种是对图像进行归一化 范围为 0 1 第二种也是对图像进行归一化 范围为 1 1 这两种只是归一化范围不同 为了直观的看出2种区别 分别对图像进行两种处理 从图
  • 题目 1056: 二级C语言-温度转换

    输入一个华氏温度 要求输出摄氏温度 公式为 保留两位小数 样例输入 40 00 样例输出 40 00 这道题很简单 数据代入公式就行 记得设置double或者float的浮点型 用于保留两位小数 对于保留小数 1是可以用iomanip的co
  • 汇编语言11之中断和int指令以及端口

    中断第处理外部突发事件的一个重要技术 硬件中断 外部中断 一般是外设发出的中断 内部中断 硬件出错或运算出错引起的中断 不可被屏蔽 软件中断 中断处理程序 CPU必须建立中断信息和中断处理程序之间的联系 中断信息中包含 1byte 中断类型