当前位置: 首页 > article >正文

实验四 中断实验

一、实验目的               

掌握中断服务程序的编写。

二、实验电路

三、实验内容

1.实验用PC机内部的中断控制器8259A,中断源用TPC-ZK实验箱上的单脉冲电路,将单脉冲电路的输出接中断请求信号IRQ,每按一次单脉冲按键产生一次中断请求。

2.编写程序,要求每次主机响应外中断IRQ时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。

四、编程提示

1.本实验用TPC-ZK实验系统的USB接口,USB接口实验箱固定接到了PC机主片中断控制器8259的IRQ3上,即进行中断实验时,所用中断类型号为0BH,编程时要根据0BH中断类型号设置中断矢量。

2. PC机主片中断控制器8259的地址为20H、21H。主片8259中断屏蔽寄存器IMR对应位(IRQ3)要清零(允许中断):

IN AL,21H

AND AL,11110111B

OUT 21H,AL

中断服务结束前要使用中断结束命令:

MOV AL,20H

OUT 20H,AL

中断结束返回DOS时将IMR对应位置1,屏蔽中断。

IN AL,21H

OR AL,08H

OUT 21H,AL

五、实验程序(必须加注释)和结果

IRO_MASK EQU 11110111B ; 中断屏蔽码,二进制表示为11110111,用于设置8259A中断控制器的中断屏蔽寄存器

DATAS SEGMENT

    MS1 DB 0DH,0AH,'THIS IS A 8259A INTERRUPT!',0DH,0AH,'$' ; 定义字符串,用于显示中断信息

    MS2 DB 0DH,0AH,'PRESS ANY KEY TO EXIT!',0DH,0AH,'$' ; 定义字符串,用于提示用户按任意键退出

    MS3 DB 0DH,0AH,'guozhihong2022900624 AND mingruizhao2022900625',0DH,0AH,'$' ; 定义字符串,可能是作者信息

    CSREG DW? ; 用于存储旧的中断向量段地址

    IPREG DW? ; 用于存储旧的中断向量偏移地址

DATAS ENDS

STACKS SEGMENT

    ; 此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

    MOV ax,DATAS

    MOV ds,AX

   

    MOV dx,OFFSET MS3

    MOV ah,09H

    INT 21H ; 显示作者信息

   

    MOV DX,OFFSET MS1

    MOV ah,09H

    INT 21H ; 显示中断信息

   

    CLI ; 关中断,禁止其他中断发生

    MOV ax,350bh

    INT 21h ; 获取旧的中断向量

    MOV ax,es

    MOV CSREG,ax ; 存储旧的中断向量段地址

    MOV IPREG,bx ; 存储旧的中断向量偏移地址

    MOV ax,cs

    mov ds,ax

    MOV dx,offset INT_PROC

    MOV ax,250bh

    INT 21h ; 设置新的中断向量

    IN al,21h

    AND al,11110111b

    OUT 21h,al ; 设置8259A中断控制器的中断屏蔽寄存器

    MOV dx,offset MS2

    MOV ah,09h

    INT 21h ; 显示提示信息

    STI ; 开中断,允许其他中断发生

AG:

    MOV ah,1

    INT 16h

    JZ AG ; 等待用户按键

EXIT:

    CLI ; 关中断

    MOV dx,IPREG

    MOV ax,CSREG

    MOV ds,ax

    MOV ax,250bh

    INT 21h ; 恢复旧的中断向量

    IN al,21h

    or al,00001000b

    OUT 21h,al ; 恢复8259A中断控制器的中断屏蔽寄存器

    MOV ax,4c00h

    INT 21h ; 程序结束,返回操作系统

INT_PROC PROC

    PUSH ax

    PUSH dx

    PUSH ds

    MOV ax,DATAS

    MOV ds,ax

    MOV dx,offset MS1

    MOV ah,09h

    INT 21h ; 显示中断信息

    MOV al,20h

    OUT 20h,al ; 发送中断结束命令给8259A中断控制器

    POP ds

    POP dx

    POP ax

    IRET ; 中断返回

INT_PROC ENDP

CODES ENDS

END START

代码注释说明

IRO_MASK EQU 11110111B:定义了一个常量,用于设置8259A中断控制器的中断屏蔽寄存器。

DATAS SEGMENT:定义了数据段,包含了要显示的字符串和用于存储旧中断向量的变量。

STACKS SEGMENT:定义了堆栈段,但代码中没有具体内容。

CODES SEGMENT:定义了代码段,包含了程序的主要逻辑。

START:程序的入口点,包含了初始化和中断处理的代码。

INT_PROC PROC:定义了中断处理程序,用于处理8259A中断控制器产生的中断。

CODES ENDS:代码段结束。

END START:程序结束。

代码执行流程

程序开始,显示作者信息。

显示中断信息。

保存旧的中断向量。

设置新的中断向量,指向自定义的中断处理程序。

设置8259A中断控制器的中断屏蔽寄存器。

显示提示信息,等待用户按键。

用户按键后,恢复旧的中断向量。

恢复8259A中断控制器的中断屏蔽寄存器。

程序结束,返回操作系统。

代码中的关键操作

CLI和STI:用于关闭和开启中断。

INT 21H:用于调用DOS系统功能,如显示字符串和获取/设置中断向量。

IN和OUT:用于与8259A中断控制器进行数据传输。

PUSH和POP:用于保存和恢复寄存器的值。

IRET:用于从中断处理程序返回。

代码中的数据结构和变量

MS1、MS2和MS3:用于存储要显示的字符串。

CSREG和IPREG:用于存储旧的中断向量段地址和偏移地址。

代码中的函数和子程序

INT_PROC:中断处理程序,用于处理8259A中断控制器产生的中断。

代码中的输入输出操作

MOV dx,OFFSET MS1和MOV ah,09H:用于显示字符串。

IN al,21h和OUT 21h,al:用于与8259A中断控制器进行数据传输。

代码中的条件判断和循环结构

JZ AG:用于等待用户按键。

代码中的异常处理

代码中没有显式的异常处理逻辑,但通过中断处理程序可以处理8259A中断控制器产生的中断。

IRQ

二、实验电路

相关文章:

实验四 中断实验

一、实验目的 掌握中断服务程序的编写。 二、实验电路 三、实验内容 1.实验用PC机内部的中断控制器8259A,中断源用TPC-ZK实验箱上的单脉冲电路,将单脉冲电路的输出接中断请求信号IRQ,每按一次单脉冲按键产生一次…...

腾势品牌欧洲市场冲锋,科技豪华席卷米兰

在时尚与艺术的交汇点,米兰设计周的舞台上,一场汽车界的超级风暴正在酝酿,腾势品牌如一头勇猛无畏的雄狮,以雷霆万钧之势正式向欧洲市场发起了冲锋。其最新力作——腾势Z9GT的登场,仿佛是一道闪电划破夜空,…...

第五阶段:项目实践与后续学习指引

模块 10:综合项目实践 在这个模块中,我们将通过实际项目来综合运用前面所学的 Python 知识。我们会选择一个命令行记事本应用作为主要示例,同时简要介绍其他项目的思路。 项目:命令行记事本应用 1. 项目规划 良好的项目规划是…...

MoogDB数据库日常维护技巧与常见问题解析

在当今的数据驱动世界中,数据库作为信息存储与管理的核心组件,扮演着举足轻重的角色。MoogDB作为一款高性能、易扩展的数据库解决方案,越来越受到开发者和企业的青睐。为了确保MoogDB的稳定性与高性能,定期的日常维护及对常见问题…...

Java 中的各种锁详解

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

多店铺商城_多商户商城系统源码_免费开源!

在电商行业快速发展的今天,多店铺商城系统(B2B2C模式)已成为企业实现平台化运营的核心工具,就像我们平时用的淘宝,京东那样。如果你想做一个电商平台就需要这种多店铺商城系统。 本文将深入探讨多商户商城系统的核心功…...

【2025年泰迪杯数据挖掘挑战赛】A题 数据分析+问题建模与求解+Python代码直接分享

目录 2025年泰迪杯数据挖掘挑战赛A题完整论文:建模与求解Python代码1问题一的思路与求解1.1 问题一的思路1.1.1对统计数据进行必要说明:1.1.2统计流程:1.1.3特殊情况的考虑: 1.2 问题一的求解1.2.1代码实现1.2.2 问题一结果代码分…...

NO.95十六届蓝桥杯备战|图论基础-单源最短路|负环|BF判断负环|SPFA判断负环|邮递员送信|采购特价产品|拉近距离|最短路计数(C++)

P3385 【模板】负环 - 洛谷 如果图中存在负环&#xff0c;那么有可能不存在最短路。 BF算法判断负环 执⾏n轮松弛操作&#xff0c;如果第n轮还存在松弛操作&#xff0c;那么就有负环。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…...

ROS2模块库概览

一、核心通信与基础库&#xff08;最常用&#xff09; 客户端库 rclcpp (ROS Client Library for C) 核心API&#xff1a;create_node(), create_publisher(), create_subscription()高级特性&#xff1a; 生命周期节点&#xff1a;通过rclcpp_lifecycle实现configure/activate…...

在机器视觉检测中为何选择线阵工业相机?

线阵工业相机&#xff0c;顾名思义是成像传感器呈“线”状的。虽然也是二维图像&#xff0c;但极宽&#xff0c;几千个像素的宽度&#xff0c;而高度却只有几个像素的而已。一般在两种情况下使用这种相机&#xff1a; 1. 被测视野为细长的带状&#xff0c;多用于滚筒上检测的问…...

Linux应急中常用命令

pwdx {pid} 提供进程的 当前工作目录&#xff0c;即进程正在操作的目录。它显示的是进程的运行时工作目录&#xff0c;而不是启动时的可执行文件路径。等同于ls -al /proc//cwdps -aux 和 top 都是用来查看 Linux 系统中进程的命令&#xff0c;但它们的功能、输出格式和使用场景…...

Node.js 文件读取与复制相关内容

Node.js 文件读取与复制相关内容的系统总结&#xff0c;包括 同步读取、异步读取、流式读取、复制操作、两者对比及内存测试。 &#x1f9e9; 一、Node.js 文件读取方式总结 Node.js 使用 fs&#xff08;文件系统&#xff09;模块进行文件操作&#xff1a; 1. 同步读取&#…...

数据结构-串

串是数据结构中一种重要的数据类型&#xff0c;广泛应用于文本处理、信息检索等领域。本文将从串的基本概念、存储实现、应用举例以及总结核心知识点四个方面进行详细讲解&#xff0c;帮助大家更好地理解和掌握串这一数据结构。 一、串的基本概念及其抽象数据类型 1.1 串的定…...

Windows 下 MongoDB ZIP 版本安装指南

在开发和生产环境中&#xff0c;MongoDB 是一种非常流行的 NoSQL 数据库&#xff0c;以其灵活性和高性能而受到开发者的青睐。对于 Windows 用户来说&#xff0c;MongoDB 提供了多种安装方式&#xff0c;其中 ZIP 版本因其灵活性和轻量级的特点&#xff0c;成为很多开发者的首选…...

在 Spring Boot 中实现服务器端推送(SSE):两种方法的比较与实践

在现代 Web 应用中&#xff0c;实时数据推送是一个常见的需求。无论是实时消息通知、股票行情更新&#xff0c;还是在线游戏的实时数据交互&#xff0c;服务器端推送&#xff08;Server-Sent Events&#xff0c;简称 SSE&#xff09;都是一种高效且易于实现的解决方案。在 Spri…...

2025年十六届蓝桥杯Python B组原题及代码解析

相关试题可以在洛谷上测试用例&#xff1a; 2025 十六届 蓝桥杯 Python B组 试题 A&#xff1a;攻击次数 答案&#xff1a;103 print(103)代码&#xff1a; # 初始化敌人的血量 x 2025# 初始化回合数 turn 0# 模拟攻击过程 while x > 0:# 回合数加一turn 1# 第一个英…...

数据清洗到底在清洗什么?

在大数据时代&#xff0c;数据是每个企业的五星资产&#xff0c;被誉为“新石油”&#xff0c;但未经处理的数据往往参杂着大量“杂质”。这些“脏数据”不仅影响分析结果&#xff0c;严重的甚至误导企业决策。数据清洗作为数据预处理的关键环节&#xff0c;正是通过“去芜存菁…...

Microsoft Azure 基础知识简介

Microsoft Azure 基础知识简介 已完成100 XP 2 分钟 Microsoft Azure 是一个云计算平台&#xff0c;提供一系列不断扩展的服务&#xff0c;可帮助你构建解决方案来满足业务目标。 Azure 服务支持从简单到复杂的一切内容。 Azure 具有简单的 Web 服务&#xff0c;用于在云中托…...

mysql表类型查询

普通表 SELECT table_schema AS database_name,table_name FROM information_schema.tables WHERE table_schema NOT IN (information_schema, mysql, performance_schema, sys)AND table_type BASE TABLEAND table_name NOT IN (SELECT DISTINCT table_name FROM informatio…...

数据库ALGORITHM = INSTANT研究过程

背景 偶然在团队中发现同事大量使用 ALGORITHM INSTANT 更新字段&#xff0c;根据固有的理解&#xff0c;平时字段的更新必然会涉及到表结构的更改&#xff0c;印象中数据库会加入MDL锁去保证表数据的一致性。 但是听说在Mysql8.0特性中&#xff0c;表明在更新字段的时候此方法…...

n8n 为技术团队打造的安全工作流自动化平台

AI MCP 系列 AgentGPT-01-入门介绍 Browser-use 是连接你的AI代理与浏览器的最简单方式 AI MCP(大模型上下文)-01-入门介绍 AI MCP(大模型上下文)-02-awesome-mcp-servers 精选的 MCP 服务器 AI MCP(大模型上下文)-03-open webui 介绍 是一个可扩展、功能丰富且用户友好的…...

基于Python的App流量大数据分析与可视化方案

一、引言 App流量数据通常包括用户的访问时间、停留时间、点击行为、页面跳转路径等信息。这些数据分散在不同的服务器日志、数据库或第三方数据平台中&#xff0c;需要通过有效的技术手段进行整合和分析。Python在数据科学领域的广泛应用&#xff0c;得益于其简洁的语法、强大…...

【Linux 并发与竞争实验】

【Linux 并发与竞争实验】 之前学习了四种常用的处理并发和竞争的机制&#xff1a;原子操作、自旋锁、信号量和互斥体。本章我们就通过四个实验来学习如何在驱动中使用这四种机制。 文章目录 【Linux 并发与竞争实验】1.原子操作实验1.1 实验程序编写1.2 运行测试 2.自旋锁实验…...

wx219基于ssm+vue+uniapp的教师管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

leetcode0079. 单词搜索-medium

1 题目&#xff1a; 单词搜索 官方标定难度&#xff1a;中 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字…...

SvelteKit 最新中文文档教程(20)—— 最佳实践之性能

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …...

在多系统环境中实现授权闭环,Tetra Pak 借助CodeMeter打造食品工业的安全自动化体系

一、 行业背景与安全新挑战 在食品加工自动化不断深化的背景下&#xff0c;食品安全、功能安全与知识产权保护的需求日益迫切。Tetra Pak 作为全球领先的食品加工和包装解决方案提供商&#xff0c;业务遍布 160 多个国家&#xff0c;涵盖从配料混合、碳酸化处理到全线自动包装。…...

复数概念的演进 3 —— 复数的意义

注&#xff1a;本文为 “从三次方程到复平面&#xff1a;复数概念的演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载&#xff0c;此为第 3 篇。 生料合辑&#xff0c;同主题文章未整理去重。 机翻&#xff0c;未校。 Complex number and its discovery history 复数及其发…...

三菱PLC

三菱PLC通信协议及读写 引言 三菱PLC&#xff08;Programmable Logic Controller&#xff0c;可编程逻辑控制器&#xff09;是工业自动化领域中广泛使用的一款PLC品牌。三菱PLC支持多种通信协议&#xff0c;包括Modbus、Ethernet/IP、Melsec Net等。本文将详细介绍三菱PLC的通…...

B端可视化方案,如何助力企业精准决策,抢占市场先机

在当今竞争激烈的商业环境中&#xff0c;企业需要快速、准确地做出决策以抢占市场先机。B端可视化方案通过将复杂的企业数据转化为直观的图表和仪表盘&#xff0c;帮助企业管理层和业务人员快速理解数据背后的业务逻辑&#xff0c;从而做出精准决策。本文将深入探讨B端可视化方…...