第八章 输入输出程序设计 输入输出功能是计算机的重要组成部分,是 人—机交互功能的主要承担者。在早期的计算机系 统中,通常把输入输出设备或功能作为次要的部分, 而把CPU作为主要研究对象。但现在随着输入输出 设备的日益丰富、功能要求越来越复杂,输入输出 部分在整个计算机系统中的地位也得到了进一步提.

Slides:



Advertisements
Similar presentations
第五章 微型计算机和外设的数据传输 5.1 为什么用接口电路? 5.2 CPU和I/O设备之间的信号; 5.3 接口部件的I/O端口;
Advertisements

输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第四章 汇编语言 程序设计 任课教师:王晓甜
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
第3章 80x86汇编语言程序设计(下).
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第7章 中断与异常.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第二部分 PC 微机异步通信适配器的分析和使用 一、PC中的UART 1.INS PC16450/PC16550
微机原理及应用 主讲:郑海春.
走进编程 程序的顺序结构(二).
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
第 13 章 中断系统.
逆向工程-汇编语言
CPU结构和功能.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
3.4.5 控制转移指令(Control transfer instructions) (一)、控制转移指令概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
第八章 中断系统.
第十章 输入输出程序设计 10.1 输入输出指令 输入输出(I/O)是指CPU与输入设备和输出设备之间进行的信息传送。CPU与外部设备之间通过输入输出接口相连接。各个设备在输入输出接口中分配了相应的端口。访问不同的设备就是访问其对应的端口。在指令系统中提供了访问输入输出端口的指令。 一、I/O端口寻址方式.
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

第八章 输入输出程序设计 输入输出功能是计算机的重要组成部分,是 人—机交互功能的主要承担者。在早期的计算机系 统中,通常把输入输出设备或功能作为次要的部分, 而把CPU作为主要研究对象。但现在随着输入输出 设备的日益丰富、功能要求越来越复杂,输入输出 部分在整个计算机系统中的地位也得到了进一步提 高。 2019/9/3

输入输出设备是计算机系统的重要的组成部分, 没有输入输出设备,计算机就得不到要解决问题的 初始信息,处理的结果信息也不可能被送出,这样 的计算机不能完成任何工作。 计算机系统是通过硬件接口(或控制器 )以及 输出输出程序对外部设备实现处理和控制的。而汇 编语言能直接控制硬件,因此就成为编写输入输出 程序的最有效的语言。 2019/9/3

8.1 I/O设备的数据传送方式 8.1.1 CPU与外设 每种输入输出设备都是通过硬件接口或控制器与CPU相连接,这些接口都能支持输入输出指令IN,OUT与外部设备交换信息,这些信息包括控制、状态和数据三种不同性质的信息。 存 储 器 I/O 接 口 输 入 设 备 数据总线 DB 控制总线 CB 地址总线 AB 出 CPU 2019/9/3

控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。 状态信息:从接口输入的状态信息表示I/O设备当前的状态。 数据信息:则是I/O设备和CPU真正要交换的信息。数据信息可分为三种类型:数字量、模拟量和开关量。这些信息可以是并行的,也可以是串行的。 CPU与外设之间的数据传送方式有:程序直接控制 I/O方式、中断方式 和 DMA方式。由于DMA方式是由DMA控制器实现其传送功能的,所以在这里只做简单介绍。主要讲解前两种方式。 2019/9/3

8.1.2 直接存储器存取方式(DMA)方式 当外设的速度相对很高,且一次传送的数据量很大时,中断方式的效率就很低。例如,对磁盘的读写操作,一般的文件都有几十K,几百K,甚至几兆,通过DMA方式利用专门的接口控制电路,在存储器与高速的外设之间进行大量的数据交换,而不需要CPU的参与。 DMA控制器-DMAC,除了具有一般接口的特点外,CPU可以通过对DMAC相应端口的读/写操作来控制DMA的工作方式;DMAC在得到总线控制权后,能够像CPU一样提供相应的控制信号来控制系统总线,从而实现外设与内存之间高速大量的数据传输。一般接口电路不具备控制总线的能力。 2019/9/3

存 储 器 外 部 设 备 C P U DMA 请求 响应 HOLD HLDA 控 制 2019/9/3

8.2 程序直接控制I/O方式 8.2.1 I/O接口基本结构及编址方式 关于I/O“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号等3大类。每个接口内部都包含有一定数量的寄存器(一般包括数据寄存器、状态寄存器和控制寄存器),用来存放三种不同信息。为了区分不同的寄存器(REG),需要给每个REG分配一个地址号,这就类似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的信息有分为数据端口(双向,输入缓冲,输出锁存),状态端口(一般只读),控制端口(一般只写)。CPU对外设工作方式的控制和信息的交换最终都归结为CPU通过IN/OUT指令对各个可寻址端口的读写操作。 2019/9/3

I/O接口编址方式 (1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足存储空间的寻址范围。 2019/9/3

图 2019/9/3

I/O端口地址 I/O端口是CPU与输入输出设备的交换数据的场所,通过I/O端口,处理机可以接受从输入设备输入的信息;也可向输出设备发送信息。在计算机系统中,为了区分各类不同的I/O端口,就用不同的数字给它们进行编号,这种对I/O端口的编号就称为I/O端口地址。按照每次可交换一个字节数据的端口称为字节端口,每次可交换一个字数据的端口称为字端口。 在Intel公司的CPU家族中,I/O端口的地址空间可达64K,即可有65536个字节端口,或32768个字端口。这些地址不是内存单元地址的一部分,不能普通的访问内存指令来读取其信息,而要用专门的I/O指令才能访问它们。虽然CPU提供了很大的I/O地址空间,但目前大多数微机所用的端口地址都在0~3FFH范围之内,其所用的I/O地址空间只占整个I/O地址空间的很小部分。表8.1列举了几个重要的I/O端口地址。 2019/9/3

2019/9/3

每类端口有4个字的空间,对有二个串行口、二个并行口的计算机系统,其BIOS程序将得到如图所示的部分数据表。 计算机在启动时,BIOS程序(Basic Input/Output System)将检查计算机系统中有哪些端口地址。当发现有串行端口地址时,BIOS就把 该端口存放在以地址40:00H开始的数据区内;当发现有并行端口地址时,BIOS会把它 存入以地址40:08H开始的数据区内。 每类端口有4个字的空间,对有二个串行口、二个并行口的计算机系统,其BIOS程序将得到如图所示的部分数据表。 图中03F8H、02F8H、0378H和0278H分别为COM1、COM2、LPT1和LPT2的端口地址。 2019/9/3

8.2.2 I/O指令 I/O指令: PORT: 端口地址 输入指令: IN AL, PORT IN AX, PORT IN AL, DX IN AX, DX 输出指令: OUT PORT, AL OUT PORT, AX OUT DX, AL PORT: 端口地址 若地址值≦255,可直接寻址(寻址范围256个端口); 否则, 需经寄存器DX间接寻址(寻址范围64K个端口) 2019/9/3

(1) IN AX, 28H MOV DATA_WORD, AX (2) IN AL, 27H TEST AL, 00000100 JNZ ERROR MOV DX, 126 IN AL, DX OR AL, 80H OUT DX, AL 2019/9/3

简单的I/O程序举例:SOUND程序 code segment main proc far assume cs:code s: push ds xor ax,ax push ax mov bx,6000;f mov cx,1000;times mov dx,cx in al,61h and al,11111100b trig:xor al,2 out 61h,al mov cx,bx delay:loop delay dec dx jne trig ret main endp code ends end s 2019/9/3

程序直接控制I/O方式分:无条件传送方式 和条件传送方式 1)无条件传送 无条件:每次进行输入/输出之前,不需要查询外设的状态. 2)有条件传送 又称查询式传送,在每次输入/输出之前,先要读取外设的状态,满足一定的条件才能进行一次I/O操作。 2019/9/3

【例】向打印机输出字符。 C P U 打 印 机 控 制 器 打 印 机 图 打印机连接示意图 DB AB STB BUSY CB 图 打印机连接示意图 2019/9/3

2019/9/3

MOV BX ,OFFSET, BUFFER ;置缓冲区偏移量 MOV CX,CHRTL ;置输出字符计数器 : ┆源程序 MOV BX ,OFFSET, BUFFER ;置缓冲区偏移量 MOV CX,CHRTL ;置输出字符计数器 BG: MOV AL,[BX] ;取字符 MOV DX,378H ;输出字符到数据寄存器 OUT DX,AL MOV DX,379H ;读打印机状态 WT: IN AL,DX TEST AL,80H ;判‘忙’否? JZ WT ;忙,重查询 MOV DX,37AH ;形成选通信号 MOV AL,0DH ;令打印机打印字符 OUT DX,AL MOV AL,0CH INC BX ;指向下一输出字符 LOOP BG ┆ 2019/9/3

在看一个例子 Cpu要从三个设备轮流输入数据,proc1、 proc2、 proc3分别是设备1、设备2、设备3的数据输入程序,他们的状态寄存器的端口地址分别为stat1、stat2、stat3表示,这三个状态寄存器的第五位是输入准备位。 2019/9/3

input: in al , stat1 test al,20h jz dev2 call far ptr proc1 dev2: in al,stat2 jz dev3 call far ptr proc2 dev3: in al,stat3 jz no_input call far ptr proc 3 no_input 2019/9/3

8.3 中断传送方式 查询式传输过程的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。 为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。 2019/9/3

外部设备是如何连到主机上的? 2019/9/3

8.3.1 8086中断的分类:内部中断和硬件中断 (1)内部中断 8.3.1 8086中断的分类:内部中断和硬件中断 (1)内部中断 内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种: l   除数为0中断——类型0中断 l 溢出中断——类型4中断INTO l   单步中断——类型1中断 l   断点中断——类型3中断 l   中断指令——指令INT n中断 由cpu的某些错误引起 为调试程序而设置的中断 2019/9/3

(2)硬件中断:来自处理机的外部条件 所以又称外中断硬件中断主要有两种来源——非屏蔽中断NMI 和可屏蔽中断INTR。 系统板的RAM在读写时产生奇偶校验错; I/O通道中的扩展选件出现奇偶校验错; 协处理器8087的异常状态产生的中断。 • 可屏蔽中断INTR是由外部设备通过一片8259A产生的中断请求。 从外设发出的中断请求到cpu响应中断,用两个控制条件起决定作用: 1、外设的中断请求是否被屏蔽。 2、cpu是否允许相应中断。 8259A内部有一个中断屏蔽寄存器,端口地址为21h 2019/9/3

中断屏蔽寄存器和中断命令寄存器 只允许键盘中断: mov al ,11111101 out 21h,al 结束硬件中断 mov al, 20h out 20h, al 2019/9/3

外部设备向cpu发出中断请求,cpu是否相应还与 IF 有关 STI——开中断指令 将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求 CLI——关中断指令 将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求 2019/9/3

8.3.2 中断向量表 在8086系统中,内存最低端的1K字节地址范围内(从00000-003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地址,地址较低的两个字节放偏移地址。 中断向量表中的存储地址 =中断类型码n×4 什么是中断向量、中断向量地址、中断向量表? 2019/9/3

2019/9/3

BIOS中断向量 38—3B E 软盘 表8-3 中断向量表 地址(Hex) 类型码 中断名称 地址(Hex) 类型码 中断名称 0—3 0 除以0 4—7 1 单步 8—B 2 非屏蔽 C—F 3 断点 10—13 4 溢出 14—17 5 打印屏幕 18—1B 6 保留 1D—1F 7 保留 20—23 8 定时器 24—27 9 键盘 28—2B A 保留的硬中断 2C—2F B 异步通信(COM2) 30—33 C 异步通信(COM1) 34—37 D 硬盘 38—3B E 软盘 3C—3F F 并行打印机 地址(Hex) 类型码 中断名称 40—43 10 视频显示I/O调用 44—47 11 设备检测调用 48—4B 12 存储器容量检测 4C—4F 13 软/硬盘I/O调用 50—53 14 通信I/O调用 54—57 15 盒式磁带I/O调用 58—5B 16 键盘I/O调用 5C—5F 17 打印机I/O调用 60—63 18 ROM BASIC 64—67 19 引导程序入口 68—6B 1A 时间调用 6C—6F 1B 键盘CTRL-BREAK控制 70—73 1C 定时器报时 74—77 1D 显示器参数表 78—7B 1E 软盘参数表 7C—7F 1F 字符点阵结构参数表 2019/9/3 BIOS中断向量

DOS中断向量 地址(Hex) 类型码 中断名称 80—83 20 程序结束,返回DOS 84—87 21 DOS系统功能调用 88—8B 22 程序结束地址 8C—8F 23 CTRL_BREAK退出地址 90—93 24 标准错误出口地址 94—97 25 绝对磁盘读 98—9B 26 绝对磁盘写 9C—9F 27 程序结束,驻留内存 A0—FF 28—3F 为DOS保留 100—17F 40—5F 保留(扩充BIOS中断向量) 180—19F 60—67 为用户软中断保留 1A0—1FF 68—7F 不用(其中70—77为I/O设备中断向量) 200—217 80—85 BASIC使用 218—3C3 86—F0 BASIC运行时,用于解释 3C4—3FF F1—FF 未用 DOS中断向量 2019/9/3

用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。 用指令来为中断类型N设置中断向量: MOV AX, 0 MOV ES, AX MOV BX, N*4 ;中断入口地址 MOV AX, OFFSET INTHAND MOV ES:WORD PRT[BX],AX ;设置中断处理程序INTHAND MOV AX, SEG INTHAND ;的入口地址 MOV ES:WORD PRT[BX+2],AX ┆ INTHAND: ;中断处理程序 IRET 2019/9/3

——把类型号为AL的中断向量取出到ES:BX中 设置中断向量 预置AH=25H, AL=中断类型号,DS:DX=中断向量 用户在编写自己的中断处理程序代替系统中的某个中断处理功能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量 取中断向量 预置AH=35H, AL=中断类型号 执行INT 21H ——把类型号为AL的中断向量取出到ES:BX中 设置中断向量 预置AH=25H, AL=中断类型号,DS:DX=中断向量 ——把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处 2019/9/3

例:使用DOS功能调用存取中断向量。 ┆ MOV AL, N MOV AH, 35H ;调用DOS功能35H INT 21H PUSH ES ;保存原中断向量 PUSH BX PUSH DS MOV AX, SEG INTHAND MOV DS, AX ;置用户定义的中断处理 MOV DX, OFFSET INTHAND ;程序INTHAND的入口 MOV AL, N ;地址(段地址和偏移地址) MOV AH, 25H ;设置新的中断向量 2019/9/3

POP DS ┆ POP DX ;恢复原中断向量 MOV AL , N MOV AH , 25H INT 21H RET INTHAND: ;中断处理程序 IRET 2019/9/3

8.3.3 中断过程 当中断发生时,由硬件自动完成下列动作: (1)取中断类型号N。 (2)标志寄存器(PSW)内容入栈。 8.3.3 中断过程 当中断发生时,由硬件自动完成下列动作: (1)取中断类型号N。 (2)标志寄存器(PSW)内容入栈。 (3)当前代码段寄存器(CS)内容入栈。 (4)当前指令计数器(IP)内容入栈。 (5)禁止外部中断和单步中断(IF=0,TF=0)。 (6)从中断向量表中取4*N的字节内容送IP,取 4*N+2的字节内容送CS。 (7)转中断处理程序。 2019/9/3

8.3.4 中断优先级和中断嵌套 IBM-PC规定中断的优先级次序为: 优先级高 内部中断(语法错,INTO,INT) 非屏蔽中断(NMI) 8.3.4 中断优先级和中断嵌套 IBM-PC规定中断的优先级次序为: 优先级高    内部中断(语法错,INTO,INT)         非屏蔽中断(NMI)         可屏蔽中断(INTR) 低     单步中断 可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0 、IR1、 IR2、 IR3、 IR4、 IR5、 IR6、 IR7 2019/9/3

可屏蔽中断的优先权又分为8级,在正常的优先级方式下,优先次序为:IR0 、IR1、 IR2、 IR3、 IR4、 IR5、 IR6、 IR7 R SL 0 0 正常优先级关系 0 1 清除由L2-L0指定的中断请求 1 0 个中断优先级依次作循环一个位置 1 1 各中断优先级依次循环到由L2-L0指定的中断请求为最低 2019/9/3

中断嵌套:高优先级的中断请求能打断正在处理中的低级中断服务程序;在较高级的中断服务程序结束后,可返回被打断的低级中断服务程序,继续执行。 优先级:#1 < #2 < #3 主 程 序 1#中断服务子程序 2#中断服务子程序 3#中断服务子程序 中断 响应 中断 响应 中断请求 1# 2# 3# 断点 IRET IRET IRET STI和 EOI 在中断嵌套中如何是使用? 如果想让低级中断中断正在服务的高级中断应怎么做? 2019/9/3

8.3.5 中断处理的一般过程 (1)中断处理流程图 (2)中断服务子程序结构 1)保护现场(类似于执行通用子程序) 2)开中断(可选) N (1)中断处理流程图 (2)中断服务子程序结构 1)保护现场(类似于执行通用子程序) 2)开中断(可选) 3)执行关于当前中断源或异常处理所要求的I/O等程序操作 4)关中断(可选) 5)送中断结束命令给(EOI) 6)恢复现场 7)中断返回 Y N Y N Y 2019/9/3

比较: 中断控制与子程序调用 中断控制 子程序调用 程序进入方式 外部随机请求 CALL指令 比较: 中断控制与子程序调用 中断控制 子程序调用 程序进入方式 外部随机请求 CALL指令 程序进入时刻 当前指令执行后 执行CALL指令后 保护/恢复现场 视需要设置 视需要设置 保护/恢复断点 PSW/CS/IP CS/IP 返回主程序指令 执行IRET 执行RET 参数传递 无 无 2019/9/3

【例8.5】编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“The bell is ring!”。 在系统定时器的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒中断18.2次)都嵌套调用一次1CH的处理程序。 在ROM BIOS例程中,1CH的处理程序只有一条IRET指令,实际上它没有作任何工作,只是为用户提供了一个中断类型号。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1CH中断程序。 2019/9/3

编程如下: DATA SEGMENT COUNT DW 1 MESS DB ‘The bell is ring!’, 0DH,0AH,’$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES: DATA MAIN PROC FAR START:PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AL,1CH ;取中断向量 MOV AH,35H INT 21H 2019/9/3

MOV DX, OFFSET RING ;新偏移量送DX MOV AX, SEG RING MOV DS, AX ;新段址送DS DELAY1:DEC SI JNZ DELAY1 DEC DI JNZ DELAY POP DX ;恢复原中断向量 POP DS MOV AL,1CH MOV AH,25H INT 21H MAIN ENDP PUSH ES ;存原中断向量段址 PUSH BX ;存原中断向量偏移量 PUSH DS MOV DX, OFFSET RING ;新偏移量送DX MOV AX, SEG RING MOV DS, AX ;新段址送DS MOV AL, 1CH MOV AH, 25H INT 21H ;写入新的中断向量 POP DS IN AL, 21H ;读取中断屏蔽字 AND AL, 11111110B ;允许定时器中断 OUT 21H, AL STI ;开中断 MOV DI, 2000 DELAY:MOV SI,3000 ;延时 RING: PROC NEAR PUSH DS PUSH AX PUSH CX PUSH DX MOV AX,DATA MOV DS,AX 2019/9/3

STI ;开中断 DEC COUNT ;计秒值 JNZ EXIT MOV DX,OFFSET MESS MOV AH,09H INT 21H IN AL,61H AND AL,0FCH SOUND:XOR AL,02 OUT 61H,AL;扬声器发声 MOV CX,140H WAIT1: LOOP WAIT1;延时等待 DEC DX JNE SOUND MOV COUNT,182 EXIT: CLI ;关中断 POP DX POP CX POP AX POP DS IRET ;中断返回 RING ENDP CODE ENDS END START 2019/9/3

例8.6 在配置了键盘中断输入(中断类型09)和打印机输出(中断类型为0fh)两种外部设备的80x86的中断系统中,要求从键盘上接收一个字符,同时对32字节的输入缓冲区进行测试,如果缓冲区已满,则键盘挂起(禁止键盘中断输入),由打印机输出一个信息。 键盘和打印机分别由中断屏蔽寄存器(21h)的1位和7位控制。键盘的输入寄存器的端口地址为60h,控制寄存器的端口地址为61h.打印机输出寄存器的端口地址为378h,打印机控制寄存器的端口地址为37ah。 2019/9/3

例8.7 除数为0的软件中断(类型0)处理程序 int 21h的功能4ch,该功能是惟一不依赖于任何段寄存器内容的中止功能。该功能的另一个优点是能在al中返回一个表明程序是否正常终止的出口代码 ,al:00正常终止,01 用ctrl_C终止,02 严重设备错误引起终止;03用功能调用31h终止,0ffh cpu 错误引起终止。 2019/9/3

2.逻辑运算指令都是按 进行操作的,指令执行后只设置标志位,不保留结果的逻辑运算指令是 。 a. 位 b. 字节 c. 字 d. BCD码 1.假设字节单元(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)=        ,字单元(06926H)=        。     a. 1245H    b. 4578H     c. 4512H      d. 7845H 2.逻辑运算指令都是按      进行操作的,指令执行后只设置标志位,不保留结果的逻辑运算指令是           。     a. 位    b. 字节    c. 字      d. BCD码     e. AND   f. OR     g. XOR     h.  TEST 3.和指令AND AL,55 AND 0F0H 等效的指令是        ,和MOV BX, 0FH EQ 1111B等效的指令是         。     a. AND AL,55H    b. AND AL,0F5H   c. AND AL,50H     d. AND AL, 0F0H     e. MOV BX,0000H    f. MOV BX,0FH     g. MOV BX,0FFH   h. MOV BX,0FFFFH 4.过程定义开始的伪指令是        。 宏定义结束的伪指令是          。     a. SEGMENT     b. MACRO    c. PROC      d. ASSUME     e. END       f. ENDS     g. ENDM      h. ENDP 5.将数据37H定义为字节变量X1的语句是      ,数据37H定义为字变量X2的语句是       。     a. X1 DB 37      b. X2 DB 37    c. X1 DW 37H     d. X2 DW 37H    e. X1 DB 37H   g. X2 DB 37H 6.互换指令XCHG可以在两个寄存器之间互换数据,也可以在      与       之间互换数据。    a. 寄存器    b. 立即数     c. 存储单元      d. 堆栈 7.对程序流向的控制和转移,就是对执行指令地址的修改。如在同一段内偏移,则修改        ,如在两个段之间转移,则修改        。    a. IP     b. CS     c. CS和IP      d. CS或IP 2019/9/3

1.8088/8086 CPU内部共有 个寄存器,其中有 个通用寄存器、 个变址寄存器、 个段寄存器。 3.IBM-PC计算机全部指令的集合称为它的 。这些指令按功能可以分为六大类:数据传送指令、算术指令、 、串处理指令、 和 。 4.在不改变段寄存器的前提下,IBM-PC计算机内存寻址的最大范围是 字节。若CS=1234H,SS=2341H,DS=3412H,BP=8756H,则以BP寄存器间接寻址的非段超越的内存单元的物理地址是 。 5.程序有顺序结构 、 、 和 四种结构。 6.循环程序有两种结构形式,一种是 ,另一种是 ,当有可能一次也无需执行循环体时采用前者。 7.8088/8086允许使用 个中断向量,每个中断向量占 个字节,系统的低段地址从 到 存放着中断向量表。 8.下面是对DOS功能调用方法的简单说明: (1)在AH寄存器中存入所要调用功能的 。 (2)根据所调用功能的规定设置 。 (3)用 指令转入子程序入口。 (4)相应的子程序运行完后,可以按规定取得 。 2019/9/3

1、在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: 2、ARY DW 10 DUP(?) ┇ MOV  AL,TYPE ARY MOV  BL,LENGTH ARY MOV  CL,SIZE ARY 上述MOV指令序列执行后的结果是什么? 3、设某数据段: DATA  SEGMENT ORG  20H NUM1=8 NUM2=NUM1+10H DA1 DB 'COMPUTER' DB  0AH,0DH COUNT EQU $-DA1 DA2  DW 'CO','MP','UT','ER' DATA ENDS 试回答:(1)DA1的偏移地址是:___________________ (2)COUNT的值是___________________________________ (3)DA2+5字节单元的内容是_________________________________ 2019/9/3

13.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来( )。 参考答案为:B 13.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来( )。    参考答案为:B   A.占内存空间小,但速度慢  B.占内存空间大,但速度快   C.占内存空间相同,速度快  D.占内存空间相同,速度慢 14.在程序执行过程中,IP寄存器中始终保存的是( )。   参考答案为:B   A.上一条指令的首地址   B.下一条指令的首地址   C.正在执行指令的首地址  D.需计算有效地址后才能确定地址 15.PSW寄存器中共有( )位条件状态位,有( )位控制状态位。   参考答案为:A   A.6、3   B.3、6   C.8、4   D.4、8 16.下列指令执行时出错的是( )。   参考答案为:A   A.ADD BUF1,BUF2    B.JMP DWORD PTR DAT [BX]   C.MOV AX,[BX+DI] NUM  D.TEST AL,08H 17.已知(AX)=1234H,执行下述三条指令后,(AX)=( )。   参考答案为:D     MOV BX,AX     NEG BX     ADD AX,BX A.1234H   B.0EDCCH   C.6DCCH   D.0000H 18.在下列指令中,( )指令的执行会影响条件码中的CF位。   参考答案为:D   A.JMP NEXT  B.JC NEXT  C.INC BX  D.SHL AX,1 19.串指令中的目的操作数地址是由( )提供。   参考答案为:C   A.SS:[BP]  B.DS:[SI]  C.ES:[DI]  D.CS:[IP] 20.将DX的内容除以2,正确的指令是( )。   参考答案为:C   A.DIV 2  B.DIV DX,2  C.SAR DX,1  D.SHL DX,1 2019/9/3

2.下述指令的目操作数是存放在堆栈段中,请填入正确答案。ADD____[BX],CH。 l.变量和标号的区别是________。 2.下述指令的目操作数是存放在堆栈段中,请填入正确答案。ADD____[BX],CH。 3.段地址和偏移地址为2000:5076的存储单元物理地址是____。 4.在下列程序段括号中,填入正确的答案。 ( ) SEGMENT BUF DB 12H,56H DATA ENDS ... CODE ( ) 5.指出下列指令错误原因,填入括号中。 A. MOV AX,BL ;( ) B. MOV CS,AX ;( ) C. DEC GAMA[BX];( ) D. MOV ES,5600H;( ) E. SUB AX,DS ;( ) 6.下列语句在存贮器中分别为变量分配多少字节?请填入括号中。 VR1 DW ? ;( ) VR2 DW 4 DUP(?),2;( ) CONT EQU 10 ;( ) 2019/9/3

1.在8086/8088系统中,存储器是分段的,每段最大长度是_______字节,段内偏移地址从_______到_______。 2.在程序调试时,显示某指令存放地址是2340:0056,则物理地址是_______。 3.汇编语言源程序中的语句有三种类型,它们是_______语句,_______语句和_______语句。 4.指令MOV AX,[BX+SI+10H]源操作数寻址方式是_______。 5.执行段间返回指令RET时,将栈顶的一个字弹出到_______后,又弹出一个字到_______寄存器中。 6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,执行NEG WORD PTR[DI]后,(31200H)=_______,(31201H)=_______。 7.执行下列指令序列 MOV AL,80H MOV BL,08H CBW IDIV BL 则AH=_______AL=_______。 8.已知数据定义语句 ORG 120H VECT1 DW 200H VECT2 DW VECT1 执行 MOV AX,VECT1 AX=_______ MOV BX,VECT2 BX=_______。 2019/9/3

判断以下各语句是否有错误,如有错误请说明错误原因 1.MOV AX, 0 2.MOV [1000H], 1000H 3.MOV BL, AX 5.PUSH PSW 6.SHR DX, BL 7.MUL AL, BL 8.AND AX, [1000] 9.XCHG CS, DS 10.LDS AL, [BX] 2019/9/3

1.下列语句在存储器中分别为变量数据区分配多少个字节单元? (1)VAR3 DD 10 (2)VAR4 DW 4 DUP(?),2 2.设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?   (1)JMP BX IP=___________________   (2)JMP TABLE[BX] IP=___________________ 3.选用NOT,AND,OR XOR逻辑指令编写一指令序列,实现将AL第0位,第2位同时置1,其他位变反。 1.指令 ARRAY DB 100 DUP (0,3 DUP (1,2),0,3) 汇编后为ARRAY存储单元分配 ( ) 个字节。 2.指令 LEA SI ,DATA1 可用指令( )代替。 3.中断向量表的地址范围是( )。 4.指令 MOV AX , 256[BX][SI]的寻址方式是 ( ) 。 5.STRING DB ‘AB’,0,0,‘CD’,0,0,‘EF’,0,0 请用DW伪指令改写上述语句,必须保持内存单元内容不变。 ( ) 2019/9/3

1.在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: 2.用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。 DA1 DB 20H DUP(?) DA2 DW 10H,45H,7856H 3.已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。 MOV AL,[BP+20H]的物理地址是 :                      MOV [BX+DI-80H],AL的物理地址是:                      MOV BL,ES:[SI+40H]的物理地址是: 2019/9/3

请用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。 2. 用三种不同方法实现在字存储单元DB1中存储2000H。 简答题 1.       DA1 DB 20H DUP(?) DA2 DW 10H,45H,7856H 请用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。 2.       用三种不同方法实现在字存储单元DB1中存储2000H。 3.       已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。 MOV AL,[BP+20H]的物理地址是                      。 MOV [BX+DI-80H],AL的物理地址是                     。 MOV BL,ES:[SI+40H]的物理地址是                     。 2019/9/3

1.8086/8088内存分段存取,受其内存总量的限制,最多只能分为16个段来使用。( )。 判断题(共10分,每小题1分) 1.8086/8088内存分段存取,受其内存总量的限制,最多只能分为16个段来使用。( )。 2.汇编语言接近于自然语言,易学、易用、通用强( )。 3.任意一程序模块最后一条语句必须是END [地址] ( )。 4.一个子程序必须有一条RET语句,也可以有多条( )。 5.指令执行后的结果为0。则零标志为0( )。 6.把若干个模块连接起来成为可执行文件的系统程序是汇编程序( )。 7.用指令的助记符、符号地址、标号等符号书写程序的语言成为汇编语言,汇编语言能被计算机直接识别( )。 8.指令INT 21H引起的中断是内中断( )。 9.直接寻址方式中,有效地址存放在代码段中指令操作码之后,但操作数一般存放在数据段中( )。 10.立即数不能直接送段寄存器( )。 2019/9/3

15、在汇编语言程序的开发过程中使用宏功能的顺序是( )。 A、宏定义,宏调用 B、宏定义,宏展开 15、在汇编语言程序的开发过程中使用宏功能的顺序是(         )。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 16、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(         )。 A、名字项 B、操作码项 C、操作数项 D、注释项 17、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(         )。 A、CMP B、SUB C、AND D、MOV 18、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是(       )。 A、INC CX   B、SUB CX,0FFFFH JZ MINUS JZ MINUS C、AND CX,0FFFFH D、XOR CX,0FFFFH 19、设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5个字节单元内容分别是44H,43H,42H,41H,41H。 执行REPNZ SCASB指令后,正确的结果是( )     A、DI=0104H,CX=0000H        B、DI=0103H,CX=0001H C、DI=0102H,CX=0002H        D、DI=0101H,CX=0003H 20、与LEA BX, ARRAY功能相同的指令是( ) A、MOV BX,ARRAY B、MOV BX, SEG ARRAY C、MOV BX,OFFSET ARRAY D、LDS BX, ARRAY 2019/9/3

请回答:(1)该程序段已占有的存储字节数是多少? (2)符号名DA4的值是多少?符号名DA5的值是多少? 1.现有如下程序段:     DATA SEGMENT ORG 0020H DA1 DW 12H,23H DA2 DB 11H,21H DA3 EQU 1234H DA4 EQU $-DA2 DA5 DB 31H,32H DATA ENDS  请回答:(1)该程序段已占有的存储字节数是多少?    (2)符号名DA4的值是多少?符号名DA5的值是多少? 2019/9/3