【汇编语言第3版】第7章 实模式下的中断程序设计解析
- 格式:ppt
- 大小:415.00 KB
- 文档页数:94
计算机硬件实验室实验报告
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。
第7章微机的中断系统版权所有, 2000 (c) 南京航空航天大学计算机科学与工程紊什么是中断•所谓中断,是指处理器在执行正常程序过程中,当出现某些异常情况或某个外部设备请求时,处理器暂时中止正在执行的程序,转而去执行其特定的服务程序,并在执行完服务程序后返回原来被中止的程序处继续执行的过程。
什么是异常?异常是指把因内部意外条件而改变程序执行流程以报告出错情况和非正常状态的过程称为异常中断(简称异常)。
中断和异常有什么区别?(1)中断处理异步发生的外部事件。
(2)异常处理同步发生的内部事件。
(3)硬件中断是作为外部事件的结果而发生的。
(4)中断是在当前指令执行完后才去执行服务程序的,在中断处理程序完成中断服务后,程序继续执行被中断指令之后的指令。
二、中断分类中断服务程序的入口地)组成及格式:节,段地址实方式下中断服务程序入口地址•中断类型号n与其对应的中断向量存放起始地址之间的关系是:起始地址=4×n;末地址=4×n+3即中断向量在4×n ~ 4×n+3指示的内存单元中•示例(例子)保护方式下中断服务程序入口地址•(1)通过中断类型号n从中断描述符表IDT中找出中断描述符。
–中断描述符首地址=中断类型号码n×8+IDT基地–从该地址开始取出8字节内容就是中断描述符。
•(2)通过中断描述符中的选择子从GDT或LDT中找出或求出段描述符。
•(3)据段描述符提供的段基地址与中断描述符提供的偏移地址合成物理地址。
•示例下,内存单元中有关单元存放的内容如右图所示,IDT的首地址为0028000000280000H H,GDT首地址为0050000000500000H H,求2020H H号中断服务程序入口地址。
解:保护方式与实方式中断主要区别•(1)表的大小不同–中断描述符表2KB;中断向量表1KB •(2)表的位置不同–保护方式下的中断描述符表可位于内存的任何位置,由中断描述符寄存器(IDTR)决定;实地址方式下的中断向量表只能固定在00000H~003FFH的最低内存1KB的区域。
汇编语⾔之中断学习计算机经常会遇到异常,会产⽣中断,发出中断请求。
中断分为内中断和外中断。
下⾯主要介绍的是内中断。
内中断,cpu什么时候会发出中断信号呢?⼀般有⼀下四种情况: ·除法指令 ·单步执⾏ ·int 0指令 ·int n指令 产⽣中断信号的情况⼜被称为中断源。
cpu接收到中断信号以后,要根据中断信号来确定中断情况。
所以,中断信息⾥⾯应该包括中断的来源以及中断的情况。
因此,CPU将定义⼀个变量来存储辨别中断信息,称为中断字节码(8位变量)可以⽤中断字节码表⽰256种情况。
每种中断情况都对应⼀种中断处理程序,但是CPU⼜如何确定相应中断处理程序在内存中的地址呢?如何确定相应中断处理程序的⼊⼝地址?so,中断向量应运⽽⽣。
中断向量就是中断处理程序的⼊⼝地址。
不同的中断情况对应不同的中断处理程序,⼜对应不同的中断向量,为了⾼效的处理中断,我们⼜定义了中断向量表,顾名思义,中断向量表⽤来存储中断向量,就是中断处理程序的⼊⼝地址。
⼀条中断向量有占⽤多少内存地址呢?中断向量⽤来存储中断处理程序的⼊⼝地址,包括段地址和偏移地址,所以占⽤两个字的存储单元,⾼地址字段⽤来存储段地址,低地址字段⽤来存储偏移地址。
CPU知道了相应中断处理程序的⼊⼝地址后,计算机处理中断,中断过程。
⽤中断字节码找到中断向量,来设置CS和IP,这个过程由计算机硬件来完成,这个过程叫做中断过程。
以8086CPU为例,在接收到中断信息后,要执⾏的操作: 1.(从中断信息中)找到中断字节码 2.标志寄存器的值⼊堆栈 3.设置标志寄存器的第8位TF和第9位IF值为0 4.CS 值⼊栈 5.IP值⼊栈 6.从内存地址为终端类型码4 和中断类型码4+2的两个字单元读取中断处理程序的⼊⼝地址,设置CS IP 中断处理程序 由于cpu随时都有可能检测到中断信息,也就是说cpu随时都要执⾏中断处理程序,所以,中断处理程序必须⼀致存储在内存某段空间中。
微机原理与接口技术第十八讲15:31第七章 微型计算机中断系统内容提要 内容提要7-1 概述 7-1 概述 7-2 中断处理过程 7-2 中断处理过程 7-3 中断优先级和中断向量 7-3 中断优先级和中断向量 7-4 可编程中断控制器 7-4 可编程中断控制器功能和引脚 内部结构 8259A的中断管理方式 8259A的编程方式 8259A的中断级联15:31 2§7-4 可编程中断控制器( 8259A)四、8259A的编程方法对8259的编程有两类命令字: 初始化命令字ICW 操作命令字OCW 系统复位后,初始化程序对8259置入初始化命令字。
初始化后可通过发出操作命令字OCW来定义8259的操作方 式,实现对8259的状态、中断方式和优先级管理的控制。
初始化命令字只发一次,操作命令字允许重置,以动态改变 8259的操作与控制方式。
15:313§7-4 可编程中断控制器1.初始化命令字初始化命令字完成的功能:【编程方法】设定中断请求信号触发形式:高电平触发或上升沿触发。
设定8259A工作方式,单片或级联。
设定8259A中断类型号基值,即IR0对应的中断类型号。
设定优先级设置方式。
设定中断处理结束时的结束操作方式。
【注意】:对8259A编程初始化命令字,共预置4个命令字:ICW1、ICW2、ICW3、ICW4。
初始化命令字必须顺序填写,但并不是任 何情况下都要置4个命令字,用户根据具体使用情况而定。
15:314§7-4 可编程中断控制器1.初始化命令字⑴ ICW1 —— 芯片控制初始化命令字【格式】 A0 D7 × × × 1 LTIM 0【编程方法】D0 SNGL IC4 1:需要设置ICW4 0:不需要设置ICW4 1:单级使用 0:级联使用 1:电平触发 0:边缘触发08086/8088 系统中不用标 志 位15:315§7-4 可编程中断控制器1.初始化命令字⑵ ICW2——设置中断类型号初始化命令字A0 D7【编程方法】D01T7 T6 T5 T4 T3中断类型的高5位0008259A中IR0端对应的中断类型号为中断类型号基值,它是可以被8整 除的正整数,ICW2用来设置这个中断类型号基值,由此提供外部中断的中 断类型号。
汇编语言中断指令汇编语言是一种低级别的计算机编程语言,它使用指令的助记符和操作码来直接控制计算机硬件。
在汇编语言中,中断指令是一种重要的操作指令,它可以使程序在执行过程中暂停并切换到指定的中断服务程序。
本文将介绍汇编语言中断指令的基本概念、使用方法和相关应用场景。
一、概述中断是计算机系统中常见的一种机制,它可以使程序在特定条件下暂停当前执行的任务,并转而执行一个中断服务程序。
中断指令是汇编语言中用于触发中断的一种特殊指令,它可以将系统控制权转移给中断服务程序,并在服务程序执行完毕后再返回到原来的程序继续执行。
二、中断指令的使用方法在汇编语言中,中断指令的使用方法如下:1. 设置中断向量表中断向量表是一个存储中断服务程序入口地址的表格,在程序执行过程中,当中断发生时,CPU会根据中断号去中断向量表中查找对应的中断服务程序的入口地址并跳转至该地址开始执行。
程序员需要在编写程序时,事先设置好中断向量表。
2. 触发中断在程序中,通过使用中断指令来触发中断操作。
一般来说,中断指令会附带一个中断号作为参数,告诉系统要执行哪个中断服务程序。
触发中断指令后,CPU会保存当前的程序状态,并将控制权转移到指定的中断服务程序。
3. 中断服务程序的执行当中断发生并切换到中断服务程序时,程序员可以在中断服务程序中编写相应的处理代码,来处理特定的中断事件。
中断服务程序执行完毕后,CPU会将控制权再次转回到原来的程序继续执行。
三、中断指令的应用场景中断指令在实际的计算机应用中有广泛的应用场景,下面列举几个典型的应用场景:1. 硬件设备的驱动程序计算机系统中的硬件设备通常会产生各种中断事件,例如键盘输入、鼠标点击、网络数据接收等。
通过编写相应的中断服务程序,可以及时响应这些中断事件,从而实现对硬件设备的驱动和控制。
2. 异常处理在程序执行过程中,可能会出现各种异常情况,例如除零异常、越界访问异常等。
通过设置相应的中断服务程序,可以在发生异常时及时捕获并处理异常,防止程序崩溃或数据损坏。
第七章中断调用和中断服务程序中断调用是指计算机暂时停止当前执行程序,转移到另一程序执行,执行结束后返回前面的程序继续执行。
中断调用类似于过程调用,和过程调用不同的是,中断调用可以通过硬件,或者指令INT 实现,前者称为硬中断调用,后者称为软中断调用。
中断所调用的过程称为中断服务程序。
在IBM-PC计算机系统中,中断服务程序一般是计算机系统所提供的一组程序,用于完成输入输出等操作。
程序员编写程序时,可在应用程序中直接调用中断服务程序,完成输入输出等操作,这给程序设计带来极大的方便。
中断服务程序可分为两部分:一部分驻留在ROM中,称为BIOS;另一部分由操作系统程序提供。
DOS操作系统提供的中断服务程序保存在磁盘文件中(IO.SYS和IBMDOS.SYS),在系统启动后装入内存。
对于同一功能操作,一般既能选择调用DOS中断服务程序,也能选择BIOS中断服务程序。
例如,通过键盘输入一个字符,可以调用DOS中断21H的01H子功能,也可以调用BIOS中断16H的01H子功能。
因为BIOS比DOS更靠近硬件,因此建议尽可能使用DOS功能,但是,在有些情况下必须使用BIOS功能,因为没有对应的等效的DOS功能。
BIOS和DOS的中断服务程序能处理大多数的输入输出操作,但是,有一些功能还没有提供,这就要考虑使用I/O指令在端口级上编程,这就需要详细了解端口的工作原理。
本章概要介绍BIOS和DOS这两部分中断服务程序,及其调用方法。
§7.1 中断向量和中断服务程序一、中断号和中断号分配IBM-PC 计算机系统给每个中断服务程序分配一个顺序编号,该编号称为中断号。
中断号分配如下:1.CPU内部控制的中断服务程序:0号:除0中断,当程序发生除0错误时系统自动执行该中断服务程序;1号:单步执行,当单步执行程序时,每执行一条指令后暂停程序执行;2号:不可屏蔽中断,分配给由CPU的不可屏蔽中断申请;3号:断点,程序执行到设置的断点时执行该中断服务程序;4号:溢出,产生溢出错误时执行;5号:打印屏幕,当按下PrintScreen键时执行;6号:保留;7号:保留。
第七章中断系统一、中断的概念设20H存放按键次数,每按键一次,20H加1。
也就是每次有中断,就要执行一条指令:INCB 20H程序的执行过程:若无按键按下,程序一直处于显示过程,显示20H中的按键次数,一旦按键按下,产生中断,程序中断显示过程,执行一条指令(INCB 20H),然后再回到显示过程,显示20H中的新内容。
MAIN:LCALL INITLOOP1:LCALL DISPLA YLJMP LOOP1问题:INCB 20H放在什么位置?解决方案:将INCB 20H放在单独的位置,将此指令的地址存入某固定地址(中断向量表:每种中断都有不同的地址),当中断产生时,将当前程序运行的PC指针的内容存入堆栈,然后CPU在某个固定地址中去寻找INCB 20H这条指令的存放地址,并将当前程序运行的PC指针的内容改成INCB 20H这条指令的存放地址,执行这条指令,指令执行完,通过RET指令,从堆栈中取出原来保存的程序中断前运行的地址,并根据此内容改变PC指针,使程序从中断处,继续运行。
程序清单:ORG 200EHDCW ANINTORG 2080HMAIN:LCALL INITLOOP1:LCALL DISPLA YLJMP LOOP1INIT:∞∞∞RETDISPLA Y:∞∞∞RETANINT:INCB 20HRET二、中断向量在CPU的地址空间中特殊规定的存储空间,里面存放特定中断服务程序的首地址,不同种类的中断有独立的中断向量。
一个中断向量占2个字节。
由不同种类的中断向量组成的集合叫中断向量表。
三 8098的中断系统1、中断源:共9种。
软件中断、外中断、串行口中断、软件定时器中断、HSI.0中断、高速输出中断、高速输入数据有效中断、A/D 转换完毕中断、定时器溢出中断。
2、中断优先级:当CPU 同时有几个中断申请,CPU 可根据不同种类的中断优先级,来判断先响应哪个中断。
见书P71-表3.13、8098中断结构图:见书P70-图3.1A 、 信号跳变检测器:8098所有中断源可分为两类,外部中断和内部中断。
;.汇编语言实验报告Assembly Language Programming LabReports______________________________________________________________________________班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________实验顺序:___实验____ 实验名称:____________中断程序设计________________ 实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________一.实验目的1.掌握中断的类型,软件中断和硬件中断。
2.掌握中断处理的过程,理解中断类型值,中断向量。
3.掌握系统中断以及功能调用。
4.可以自己设计中断程序______________________________________________________________________________二.实验环境操作系统:windows xp编译程序:masm 5.0______________________________________________________________________________三.实验原理1.CPU响应中断的条件(1)当前的指令周期结束(2)采样到有效的中断请求型号(3)如果是可屏蔽的中断请求INTR,检查中断允许标志IF是否为1(4)CPU正在执行的程序是不是中断服务程序,或者是中断优先级较低的中断服务程序2.中断响应过程(1)首先将标志寄存器FLAGS压入堆栈(2)将TF与IF清零,IF=0即关中断(3)将正在运行程序的断点CS和IP压入堆栈(4)从中断向量表中取出中断向量高两个字节的内容送入CS,取出低两个字节的内容送入IP(5)转到相应中断源的中断服务程序入口,执行中断处理服务程序______________________________________________________________________________四.实验步骤及结果分析1.修改已有中断处理程序。