微机原理与汇编语言.ppt_第1页
微机原理与汇编语言.ppt_第2页
微机原理与汇编语言.ppt_第3页
微机原理与汇编语言.ppt_第4页
微机原理与汇编语言.ppt_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章输入 输出与中断 7 1I O接口概述7 2CPU与外设之间数据传送的方式7 3中断技术7 48086 8088中断系统7 5可编程中断控制器Intel8259A 7 1I O接口概述 7 1 1I O接口的作用 图7 1主机与外设的连接 7 1 2CPU与外设交换的信息主机与I O设备之间交换的信息可分为数据信息 状态信息和控制信息三类 1 数据信息数据信息又分为数字量 模拟量和开关量三种形式 1 数字量数字量是计算机可以直接发送 接收和处理的数据 例如 由键盘 显示器 打印机及磁盘等I O外设与CPU交换的信息 它们是以二进制形式表示的数或以ASCII码表示的数符 2 模拟量当计算机应用于控制系统中时 输入的信息一般为来自现场的连续变化的物理量 如温度 压力 流量 位移 湿度等 这些物理量通过传感器并经放大处理得到模拟电压或电流 这些模拟量必须先经过模拟量向数字量的转换 A D转换 后才能输入计算机 反过来 计算机输出的控制信号都是数字量 也必须先经过数字量向模拟量的转换 D A转换 把数字量转换成模拟量才能去控制现场 3 开关量开关量可表示两个状态 如开关的断开和闭合 机器的运转与停止 阀门的打开与关闭等 这些开关量通常要经过相应的电平转换才能与计算机连接 开关量只要用一位二进制数即可表示 2 状态信息状态信息作为CPU与外设之间交换数据时的联络信息 反映了当前外设所处的工作状态 是外设通过接口送往CPU的 3 控制信息控制信息是CPU通过接口传送给外设的 CPU通过发送控制信息设置外设 包括接口 的工作模式 控制外设的工作 7 1 3I O接口的基本结构 输入 输出操作所用到的地址总是对端口而言 而不是对接口而言的 接口和端口是两个不同的概念 若干个端口加上相应的控制电路才构成接口 7 1 4I O端口的编址1 I O端口与内存单元统一编址 2 I O端口与内存单元独立编址 地址总线的低16位 20根地址线 3 I O端口的地址译码微机系统常用的I O接口电路一般都被设计成通用的I O接口芯片 一个接口芯片内部可以有若干可寻址的端口 因此 所有接口芯片都有片选信号线和用于片内端口寻址的地址线 例如 某接口芯片内有四个端口地址 则该芯片外就会有两根地址线 I O端口地址译码的方法有多种 一般的原则是把CPU用于I O端口寻址的地址线分为高位地址线和低位地址线两部分 将低位地址线直接连到I O接口芯片的相应地址引脚 实现片内寻址 即选中片内的端口 将高位地址线与CPU的控制信号组合 经地址译码电路产生I O接口芯片的片选信号 7 2CPU与外设之间数据传送的方式 7 2 1程序传送方式1 无条件传送方式微机系统中的一些简单的外设 如开关 继电器 数码管 发光二极管等 在它们工作时 可以认为输入设备已随时准备好向CPU提供数据 而输出设备也随时准备好接收CPU送来的数据 这样 在CPU需要同外设交换信息时 就能够用IN或OUT指令直接对这些外设进行输入 输出操作 由于在这种方式下CPU对外设进行输入 输出操作时无需考虑外设的状态 故称之为无条件传送方式 图7 5无条件传送方式 a 无条件传送数据输入 b 无条件传送数据输出 读取速度慢 数据保留时间长 无条件传送方式特点 无条件传送方式下 程序设计和接口电路都很简单 但是为了保证每一次数据传送时外设都能处于就绪状态 传送不能太频繁 对少量的数据传送来说 无条件传送方式是最经济实用的一种传送方法 2 查询传送方式查询传送也称为条件传送 是指在执行输入指令 IN 或输出指令 OUT 前 要先查询相应设备的状态 当输入设备处于准备好状态 输出设备处于空闲状态时 CPU才执行输入 输出指令与外设交换信息 为此 接口电路中既要有数据端口 还要有状态端口 查询传送方式的流程图见图7 6 从图中可以看出 采用查询方式完成一次数据传送要经历如下过程 1 CPU从接口中读取状态字 2 CPU检测相应的状态位是否满足 就绪 条件 3 如果不满足 则重复 1 2 步 若外设已处于 就绪 状态 则传送数据 图7 6查询传送方式的流程图 图7 7查询式输入的接口电路 图7 8查询式输出的接口电路 查询传送方式的主要优点是能保证主机与外设之间协调同步地工作 且硬件线路比较简单 程序也容易实现 查询传送方式有两个突出的缺点 浪费CPU时间 实时性差 所以 查询传送方式适用于数据输入 输出不太频繁且外设较少 对实时性要求不高的情况 不论是无条件传送方式还是查询传送方式 都不能发现和处理预先无法估计的错误和异常情况 为了提高CPU的效率 增强系统的实时性 并且能对随机出现的各种异常情况做出及时反应 通常采用中断传送方式 7 2 2中断传送方式中断传送方式是指当外设需要与CPU进行信息交换时 由外设向CPU发出请求信号 使CPU暂停正在执行的程序 转去执行数据的输入 输出操作 数据传送结束后 CPU再继续执行被暂停的程序 查询传送方式是由CPU来查询外设的状态 CPU处于主动地位 而外设处于被动地位 中断传送方式则是由外设主动向CPU发出请求 等候CPU处理 在没有发出请求时 CPU和外设都可以独立进行各自的工作 目前的微处理器都具有中断功能 而且已经不仅仅局限于数据的输入 输出 而是在更多的方面有重要的应用 例如实时控制 故障处理以及BIOS和DOS功能调用等 中断传送方式的优点是 CPU不必查询等待 工作效率高 CPU与外设可以并行工作 由于外设具有申请中断的主动权 故系统实时性比查询方式要好得多 但采用中断传送方式的接口电路相对复杂 而且每进行一次数据传送就要中断一次CPU CPU每次响应中断后 都要转去执行中断处理程序 且都要进行断点和现场的保护和恢复 浪费了很多CPU的时间 故这种传送方式一般适合于少量的数据传送 对于大批量数据的输入 输出 可采用高速的直接存储器存取方式 即DMA方式 7 2 3直接存储器存取 DMA 传送方式1 DMA传送方式简介DMA传送方式是在存储器和外设之间 存储器和存储器之间直接进行数据传送 如磁盘与内存间交换数据 高速数据采集 内存和内存间的高速数据块传送等 传送过程无需CPU介入 这样 在传送时就不必进行保护现场等一系列额外操作 传输速度基本取决于存储器和外设的速度 DMA传送方式需要一个专用接口芯片DMA控制器 DMAC 对传送过程加以控制和管理 在进行DMA传送期间 CPU放弃总线控制权 将系统总线交由DMAC控制 由DMAC发出地址及读 写信号来实现高速数据传输 传送结束后DMAC再将总线控制权交还给CPU 一般微处理器都设有用于DMA传送的联络线 图7 9DMA系统结构框图 7 3中断技术7 48086 8088中断系统7 5可编程中断控制器8259A 中断与中断源 1 中断在CPU正常运行程序时 由于内部事件 外部事件或由程序预先安排的事件所引起的CPU暂时停止正在运行的程序 而转去执行请求CPU服务的内部 外部事件或预先安排事件的服务程序 待服务程序处理完毕后又返回去继续执行被暂停的程序2 中断源发出中断请求的外部设备或引起中断的内部原因称为中断源常见的中断源有 1 故障中断 如电源掉电 内存奇偶错等 2 软件中断 如CPU执行某些指令或操作引起的中断等 3 输入输出设备中断 如打印机 CRT 磁盘等 4 实时时钟 如定时器提供的实时信号等 3 中断识别即找出是哪一个中断源发出的中断请求中断识别的目的是要形成该中断源的中断服务程序的入口地址 以便CPU将此地址置入CS IP寄存器 从而实现程序的转移 返回 中断系统的功能 中断系统是指实现中断功能的软硬件的统称功能1 正确识别中断请求 实现中断响应 中断处理及中断返回2 实现中断优先级排队3 实现中断嵌套 返回 中断处理过程 中断请求 软件中断源 硬件中断源 中断响应 条件 1 开中断 2 CPU在执行完现行指令之后 保护断点中断处理 1 保护现场 2 执行中断服务程序 3 恢复现场 中断返回 IRET指令 返回 中断优先级 软件查询法硬件排队电路专用中断控制芯片 1 软件查询法 INAL nTESTAL 80H 1号外设有请求 JNZII1 有 转1号中断服务程序TESTAL 40H 2号外设有请求 JNZII2 有 转2号中断服务程序 2 硬件排队电路 3 专用中断控制芯片 在微型机中普遍使用一种可编程的中断控制器 如Intel8259A 实现中断优先级的管理 中断的多级嵌套 一个中断请求尚未处理完 又转而处理新的中断请求 称为中断的多级嵌套或称为多级中断 例题 如图 设8255的端口地址为60H 63H 8253的端口地址为40H 43H 现要求用中断的方法 使每隔55ms 8255的PC7所接的LED的亮暗发生一次变化 写出对应的控制程序 主程序1 2 Codesegmentassumecs codeStart movdx offsetled 将中断服务程序入口 地址置入中断向量为 02H的中断向量表中movax segledmovds axmovah 25hmoval 02hint21h 主程序2 2 MOVAL 00110110B 8253计数器0初始化 二进制计数OUT43H ALMOVAL 0AAH 计数初值是65450D FFAAHOUT40H ALMOVAL 0AAHOUT40H 0FFHMOVAL 10000000B 8255初始化OUT63H ALMOVAL 00001110B 用位置位的方法 使8255的PC7 开始时为低 不影响其它位MOVBL AL BL寄存器用作参数传递OUT63H AL Looper jmplooper 中断服务程序 LED PUSHAX 保护AX现场XORBL 00000001B 对BL的最低位取反 其它位不 改变 即只对位置位字的最低位取反MOVAL BLOUT63H AL 8255的PC7取反POPAX 恢复AX现场IRET 中断返回Codeendsendstart 7 48086的中断结构 7 2 18086的中断类型外部中断内部中断7 2 2中断向量和中断向量表7 2 3中断向量的装入7 2 48086的中断响应过程外部中断响应过程内部中断响应过程 7 4 18086的中断类型 外部中断是由外部硬件请求产生的中断 所以又称为硬件中断 内部中断是由指令的执行或者软件对标志寄存器中某个标志的设置产生的中断 所以又称为软件中断 每一个中断都有一个8位的中断类型号 共256个 00H FFH CPU依赖中断类型号来区分各个中断源 32 255 32 255 1 软件中断 内部中断 1 专用中断 在中断向量表中 类型号0 4中除了类型号2的NMI非屏蔽中断外 其余均为专用的软件中断 它们通常是由某个标志位引起的中断 0型中断 除法出错中断 1型中断 单步中断 TF 1 3型中断 断点中断 INT3 4型中断 溢出中断 INTO指令 2 指令中断INTn指令 其类型号就是给定的n 2 硬件中断 外部中断 1 非屏蔽中断NMI 用户不能用软件屏蔽的中断 上上升沿触发 2 可屏蔽中断INTR 8086的INTR中断请求信号来自中断控制器8259A 是电平触发方式 高电平有效 中断类型号由外设向数据总线输出 注 对于非屏蔽中断和软件中断 其中断类型号由CPU内部自动提供 不需去执行中断响应周期读取中断类型号 3 8086 8088中断源的优先级 8086 8088中断源的优先级顺序由高到低依次为 软件中断 除单步中断外 非屏蔽中断 可屏蔽中断 单步中断 在PC机系统中 外设的中断请求通过中断控制器8259A连接到CPU的INTR引脚 外设中断源的优先级别由8259A进行管理 中断指令 INTn n为中断类型号0 255一些固定用法 1 INTO 同INT4 2 在程序中设置断点 同INT3 3 除法错中断 4 非屏蔽中断 NMI IRET 中断返回指令注 对外部的中断 在程序中一般不要写出其对应的指令 如非屏蔽中断NMI 只要输入到NMI的信号符合要求时 CPU自动进入中断类型号为02H的中断服务程序 INTR同此 即什么时候中断是由外设决定的 而不是由编程来决定的 7 4 2中断向量和中断向量表 中断向量是中断服务程序的入口地址 把系统中所有的中断向量集中起来放到存储器的某一区域内 这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表 中断向量表的每一个向量的序号就是中断类型号 共256个中断类型 中断向量在表中的位置称为中断向量地址中断向量地址 中断类型号 4 5个 27个 224个 例题 若8086从8259A中断控制器中读取的中断类型号为76H 其中断向量在中断向量表中的地址指针 开始地址 是多少 设从0000 005AH开如的6个存贮单元中的内容分别为00H 01H 02H 03H 04H 05H 则执行指令INT17H后 CS中的内容为多少 IP中的内容为多少 7 4 38086的中断响应过程 1 内部中断响应过程2 外部中断响应过程 1 内部中断响应过程 过程 1 将类型号乘4 计算出中断向量的地址 2 CPU的标志寄存器入栈 以保护各个标志位 此操作类似于PUSHF指令 3 清除IF和TF标志 屏蔽新的INTR中断和单步中断 4 保存断点 即把断点处的IP和CS值压入堆栈 先压入CS值 再压入IP值 5 根据第一步计算出来的地址从中断向量表中取出中断服务程序的入口地址 段和偏移 分别送至CS和IP中 6 转入中断服务程序执行 特点 中断由CPU内部引起 中断类型号的获得与外部无关 CPU不需要执行中断响应周期去获得中断类型号 除单步中断外 内部中断无法用软件禁止 不受中断允许标志IF的影响 内部中断何时发生是可以预测的 这有点类似于子程序调用 2 外部中断响应过程 1 非屏蔽中断响应 NMI中断不受IF标志的影响 也不用外部接口给出中断类型号 CPU响应NMI中断时也没有中断响应周期 2 可屏蔽中断响应 当INTR信号有效时 如果中断允许标志IF 1 则CPU就在当前指令执行完毕后 产生两个连续的中断响应总线周期 8086中断处理的基本过程 例题 设一8086的中断向量表如左图所示 试分析下面程序的运行情况 MOVAX 0F05HMOVBL 0HDIVBL ADDAX BXINTO MOVCX 0030HINT17H 此时NMI引脚有中断请求 0302 0100 INT1 MOVAX 7865H IRET 0706 0504 INT2 MOVAX 3333H IRET 0B0A 0908 INT3 MOVBL 98H IRET 0307 0605 INT4 MOVCL 90H 0000 0008H05H0000 0009H06H0000 000AH07H0000 000BH03H 中断向量的装入 中断向量并非常驻内存 而是开机上电时 由程序装入内存指定的中断向量表中 系统配置和使用的中断所对应的中断向量由系统软件负责装入 若系统中 如单板机 未配置系统软件 就要由用户自行装入中断向量 中断向量的装入 一般置于主程序开头 1 DOS系统功能调用法功能号 AH 25H 入口参数 AL 中断类型号 DS 中断服务程序入口地址的段地址 DX 中断服务程序入口地址的偏移地址 下面程序段完成中断类型号为60H的入口地址置入 PUSHDS 保护DSMOVDX OFFSETINT60 取服务程序偏移地址MOVAX SEGINT60 取服务程序段地址MOVDS AXMOVAH 25H 送功能号MOVAL 60H 送中断类型号INT21H DOS功能调用POPDS 恢复DS 2 直接装入法用传送指令直接将中断服务程序首地址置入矢量表中 设中断类型号为60H 此类型号对应的矢量表地址为从00180H开始的四个连续存储单元 程序段如下 XORAX AXMOVDS AXMOVAX OFFSETINT60MOVDS 0180H AX 置服务程序偏移地址MOVAX SEGINT60MOVDS 0180H 2 AX 置服务程序所在代码段的段地址 中断向量的装入 编程举例 用中断的方法实现在屏幕上显示字符串 Thisisa 设中断类型号为60H DatasegmentMesgdb Thisisa DataendsCodesegmentassumecs code ds dataStart movax datamovds axpushdsmovdx offsetdisp60movax segdisp60movds axmovah 25hmoval 60hint21h POPDSINT60HMOVAH 4CHINT21HDISP60PROCFARMOVDX OFFSETMESGMOVAH 09HINT21HIRETDISP60ENDPCODEENDSENDSTART 7 5可编程中断控制器8259A 7 5 18259A的内部结构和引脚特性7 5 28259A的工作过程7 5 38259A的工作方式7 5 48259A的级联电路7 5 58259A的编程命令7 5 68259A编程举例 7 3 18259A的内部结构和引脚特性 8259A的内部结构8259A的引脚特性 1 8259A的内部结构 2 8259A的引脚特性 返回 图7 228259A引脚 7 3 28259A的工作过程 1 中断源通过IR0 IR7向8259A发中断请求 使得8259A的中断请求寄存器IRR的相应位置1 2 IRR中经中断屏蔽寄存器IMR允许后的置位位进入优先权判别器PR PR将其中最高优先权的中断请求从INT输出 送至CPU的INTR端 3 若CPU处于开中断状态 则在当前指令执行结束后 启动中断响应总线操作 发出两个负脉冲作为响应信号 4 8259A接收到第一个负脉冲 完成如下工作 1 使ISR相应位置1 表示CPU已为该中断请求服务 2 使IRR的相应位清0 5 8259A接收到第二个负脉冲 将中断类型号送上数据总线 中断类型号由用户编程和中断请求引脚IRi的序号i共同决定 CPU读取中断类型号 经响应过程后 进入中断服务程序 直到服务结束返回 6 若8259A工作在自动结束中断方式AEOI 则8259A清除ISR的相应位 否则直至中断服务结束 发出EOI命令 才能使ISR中的相应位清0 7 3 38259A的工作方式 1 中断屏蔽方式2 中断嵌套方式3 优先级控制方式4 中断结束方式 1 中断屏蔽方式 1 普通屏蔽方式 利用操作命令字OCW1 使屏蔽寄存器IMR中的一位或数位置1来屏蔽一个或数个中断源的中断请求 2 特殊屏蔽方式 在某些场合 执行某一个中断服务程序时 要求允许另一个优先级比它低的中断请求被响应 此时可采用特殊屏蔽方式 2 中断嵌套方式 1 全嵌套方式 中断优先级按IR0 IR7顺序进行排队 并且只允许中断级别高的中断源去中断级别低的中断服务程序 但不能相反 在对8259A进行初始化以后 没有设置其他优先级方式 则自动按此方式工作 2 特殊全嵌套方式 当执行某一级中断服务程序时 可响应同级的中断请求 从而实现对同级中断请求的特殊嵌套 特殊全嵌套方式用于多片级联 3 优先级控制方式 1 优先级自动循环方式 优先级顺序不是固定不变的 一个设备得到中断服务后 其优先级自动降为最低 其初始的优先级顺序规定为IR0 IR1 IR2 IR7用于系统中多个中断源优先级相等的场合 2 优先级特殊循环方式 其初始的优先级不是固定IR0为最高 然后开始循环 而是由程序指定IR0 IR7中任意一个为最高优先级 然后再按顺序自动循环 决定优先级 4 中断结束方式 1 自动中断结束方式 在中断服务程序中 中断返回之前 不需要发出中断结束命令就会自动清除该中断源所对应的ISR位 实际上在CPU发出第二个INTA信号时 8259即自动清除ISR中的对应位 用在多个中断不会嵌套的系统中 2 非自动中断结束方式 在中断服务程序返回之前 必须发中断结束命令才能使ISR中的当前服务位清除 返回 7 3 48259A的级联电路 返回 7 3 58259A的编程命令 初始化命令字ICW操作命令字OCW 1 初始化命令字1 ICW1ICW1主要用于设置工作方式 其格式及各位的定义如图7 24所示 图7 24ICW1的作用 D0 IC4 用于设置用不用ICw4DI SNGL 用于设置用不有ICw3 2 ICW2ICW2用于设置中断类型号 写入A0 1的端口 其格式如图7 25所示 图7 25ICW2的作用 3 ICW3ICW3用于设置级联 写入A0 1的端口 格式如图7 26所示 图7 26ICW3的作用 4 ICW4ICW4用于设置8259A的工作方式 写入A0 1的端口 格式如图7 27所示 ICW1的IC4位为1时 才写入ICW4 图7 27ICW4的作用 2 初始化编程8259A初始化流程图如图7 28所示 任何一种8259A的初始化都必须发送ICWl和ICW2 只有在ICWl中指明需要ICW3和ICW4以后 才发送ICW3和ICW4 一旦初始化以后 若要改变某一个ICW 则必须重新再进行初始化编程 不能只是写入单独的一个ICW 例如 PC AT机中8259A的主片定义为 上升沿触发 在IR2级联从片 有ICW4 非AEOI方式 中断类型号08H 0FH 一般的中断嵌套方式 端口地址是20H 21H 从片定义为 上升沿触发 级联到主片的IR2 有ICW4 非AEOI方式 中断类型号为70H 77H 一般的中断嵌套方式 端口地址是A0H A1H 初始化过程如下 初始化主片初始化从片MOVAL 11HMOVAL 11HOUT20H ALOUT0A0H ALMOVAL 08HMOVAL 70HOUT21H ALOUT0A1H ALMOVAL 04HMOVAL 02HOUT21H ALOUT0A1H ALMOVAL 01HMOVAL 01HOUT21H ALOUT0A1H AL 1 初始化命令字ICW 初始化命令字ICW1 置工作方式 初始化命令字ICW2 置中断类型号 初始化命令字ICW3 设置级联 初始化命令字ICW4 置工作方式 图7 29OCW1的作用 MX 1表示屏蔽中断源IRX MX 0表示来自IRX的中断请求得到允许 例如 若OCW1 03H 说明IR0和IR1上的中断请求被屏蔽 1 OCW1OCW1的功能是设置和清除中断屏蔽寄存器的相应位 写入A0 1的端口 格式如图7 29所示 3 操作命令字 图7 30OCW2的作用 2 OCW2用于设置优先级循环方式和中断结束方式 写入A0 0的端口 格式如图7 30所示 3 OCW3OCW3的功能有三个方面 设置和撤消特殊屏蔽方式 设置中断查询方式以及设置对8259A内部寄存器的读出 OCW3写入A0 0的端口 格式如图7 31所示 4 259A的读操作在PC机中8259A的端口地址为20H和21H 常用的读操作有如下几种 1 读出IRR的值 先向20H端口写0AH OCW3RR 1 RIS 0 再读20H端口 例如 MOVAL 0AH OCW3 0AHOUT20H AL OCW3写入8259AINAL 20H 读出IRR内容 2 读出ISR的值 先向20H端口写0BH OCW3RR 1 RIS 1 再读20H端口 例如 MOVAL 0BH OCW3 0BHOUT20H AL OCW3写入8259AINAL 20H 读出ISR内容 3 读查询字 读出最高级别的中断请求IR 先向20H端口写0CH OCW3P 1 再读20H端口 例如 MOVAL 0CH OCW3 0CHOUT20H AL OCW3写入8259AINAL 20H 读出查询字内容 4 读IMR的值 随时可用奇地址读IMR的值 并对其作修改 例1 INAL 21H 读IMRANDAL 7FH 开放IR7中断OUT21H AL 修改IMR例2 INAL 21H 读IMRORAL 80H 关闭IR7中断OUT21H AL 修改IMR 5 8259A应用举例 图7 328259A在PC XT机中的连接 从图中可以看出8259A的IR2端是保留端 其余都已被占用 现假设某外设的中断请求信号由IR2端引入 要求编程实现CPU每次响应该中断时屏幕显示字符串 WELCOME 已知主机启动时8259A中断类型号的高5位已初始化为00001 故IR2的类型号为0AH 00001010B 8259A的中断结束方式初始化为非自动结束 即要在服务程序中发EOI命令 8259A的端口地址为20H和21H 程序如下 DATASEGMENTMESSDB WELCOME 0AH 0DH DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX SEGINT2MOVDS AXMOVDX OFFSETINT2MOVAX 250AH INT21H 置中断矢量表INAL 21H 读中断屏蔽寄存器ANDAL 0FBH 开放IR2中断OUT21H ALSTILL JMPLL 等待中断INT2 MOVAX DATA 中断服务程序MOVDS AXMOVDX OFFSETMESSMOVAH 09INT21H 显示每次中断的提示信息MOVAL 20HOUT20H AL 发出EOI结束中断INAL 21HORAL 04H 屏蔽IR2中断 OUT21H ALSTIMOVAH 4CHINT21HIRETCODEENDSENDSTART 7 3 68259A编程举例 例7 3以IBMPC AT 80286 微机中的8259A为例说明其初始化编程方法 1 分析 2 设计 1 分析 在286以上的PC机中 共使用了两片8259A 新型的PC中已将中断控制器集成到了芯片组中 但功能上与8259A完全兼容 两片级联使用 共可管理15级中断 主片8259A的IRQ2 即IR2 中断请求端用于级联从片8259A 所以相当于主片的IRQ2又扩展了8个中断请求端IRQ8 IRQ15 中断向量地址指针主片8259A的端口地址为20H 21H 中断类型号为08H 0FH 从片8259A的端口地址为A0H A1H 中断类型号为70H 77H 主片的8级中断已全被系统使用 其中IRQ2被从片占用 从片尚保留4级未用 其中IRQ0用于日历时钟中断 08H IRQ1用于键盘中断 09H 扩展的IRQ8用于实时时钟中断 IRQ13来自协处理器80287 除上述中断请求信号外 所有其它的中断请求信号都来自I O通道的扩展板 2 设计 8259A初始化编程 主片8259A的初始化MOVAL 11H 写入ICW1 设定边沿触发 级联方式OUT20H ALJMPINTR1 延时 等待8259A操作结束 下同INTR1 MOVAL 08H 写入ICW2 设定IRQ0的中断类型号为08HOUT21H ALJMPINTR2INTR2 MOVAL 04H 写入ICW3 设定主片IRQ2级联方式OUT21H ALJMPINTR3INTR3 MOVAL 11H 写入ICW4 设定特殊全嵌套方式 一般EOI方式OUT21H AL 从片8259A的初始化MOVAL 11H 写入ICW1 设定边沿触发 级联方式OUT0A0H ALJMPINTR5INTR5 MOVAL 70H 写入ICW2 设定从片IR0 即IRQ8的中断类型号为70HOUT0A1H ALJMPINTR6INTR6 MOVAL 02H 写入ICW3 设定从片级联到主片的IRQ2OUT0A1H ALJMPINTR7INTR7 MOVAL 01H 写入ICW4 设定普通全嵌套方式 一般EOI方式OUT0A1H AL 级联工作编程 读ISR的内容MOVAL 0BH 写入OCW3 读ISR命令OUT0A0H ALNOP 延时 等待8259A操作结束INAL 0A0H 读出ISR 向从片发EOI命令MOVAL 20HOUT0A0H AL 写从片EOI命令 向主片发EOI命令MOVAL 20HOUT20H AL 写主片EOI命令 返回 7 4中断调用 7 4 1DOS和BIOS中断的调用方法7 4 2DOS系统功能调用字符设备I O控制文件管理定时系统中断向量的修改7 4 3BIOS功能调用显示器的BIOS调用磁盘的BIOS调用键盘的BIOS调用打印机的BIOS调用 返回 7 4 1DOS和BIOS中断的调用方法 1 将入口参数送入指定的调用寄存器 如果没有入口参数 就不需要这一步 2 将功能号送入AH寄存器 将子功能号送入AL寄存器 如果没有子功能号 不需要送AL 3 产生一个软中断INTn 转入子程序入口 4 通过CPU的返回寄存器返回中断处理结果 出口参数 如果没有返回值 也就不需要返回寄存器 例7 4 使用INT21H的2BH系统功能设置日期为2004年5月1日 MOVDL 1 入口参数送入指定寄存器 把日子放入DL中MOVDH 5 把月份放入DH中MOVCX 2004 把年份放入CX中 CX中的年份值是以1980为基准的偏移值SUBCX 1980 减去1980才为年份设定值MOVAH 2BH 设置日期功能号送入AH寄存器INT21H 执行DOS调用CMPAL 0FFH 根据出口参数AL 00H 设置成功 AL FFH 判断失败JEERROR 不成功 转错误处理 成功 往下执行ERROR 略 返回 7 4 2DOS系统功能调用 字符设备I O控制文件管理定时系统中断向量的修改 1 字符设备I O控制 表7 2字符设备的系统功能 例7 5 从键盘输入一个字符 并同时在显示屏上输出 当键入字符 时 则停止操作 DON1 MOVAH O1H 置单字符输入INT21HCMPAL 是结束字符吗JZDON2 是 转向DON2MOVDL ALMOVAH 02H 显示输出字符INT21HJMPDON1DON2 INT0 程序结束 例7 6 从键盘输入一串字符 并在显示屏上显示出来 注意09H功能显示字符串时是以 符号结束的 因此 要显示的字符串一律以 结尾DATASEGMENTBUFSIZEDB50 最多可键入50个字符ACTLENDB 实际键入的字符数CHRASDB50DUP 20H 实际键入的字符从此开始存放DB 为显示而加的字符串结束符DATAENDSCODESEGMENTASSUMECS CODE DS DATA MOVDX OFFSETBUFSIZE 键入缓冲区起始偏移地址送DXMOVAH 0AH 字符串输入功能INT21H 输入字符串并放入缓冲区 MOVDX OFFSETCHARS 输入的字符串起始地址送DXMOVAH 09H 字符串显示功能INT21H 显示键入的字符串 2 文件管理 表7 3文件管理的DOS系统功能 例7 7 在磁盘中建立一个文件 并显示完成的结果 假设BUF1中存放正常信息 BUF2中存放错误信息LEADX FILEBUFMOVCX 0MOVAH 3CH 建立文件INT21HJCERRORLEADX BUF1 无错 提示正常信息MOVAH 09HINT21HJMPDONERROR LEADX BUF2 有错 提示错误信息MOVAH 09HINT21HDON INT0 程序结束 例7 8 打开某文件 并向其中写入内容 LEADX FILENAMEMOVAL 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论