汇编语言程序设计第9章

更新时间:2023-07-18 10:50:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

汇编语言程序设计

第9章输入输出与中断

北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念输入输出是一个完整应用程序的重要组成部分,也是交互式应用

程序不可缺少的组成部分。任何一种输入/输出设备都要通过一个硬件接口或控制器与CPU相连。例如,软磁盘通过软盘控制器与CPU相 连,终端显示器通过数据接口与CPU相连。这些接口和控制器都能支 持输入/输出指令与外部设备交换信息。这些信息包括控制、状态和 数据3种不同性质的信息,它们必须按不同的端口地址分别传送,如 图所示。数据总线 数据寄存器 控制总线 CPU 地址总线 控制寄存器 状态寄存器 控制信号 状态信号 I/O 设备 I/O接口 外设数据

北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念1. I/O端口地址 I/O端口(PORT)是CPU与I/O设备交换数据的场所。通 过I/O端口,处理机可以接受从输入设备输入的信息,也可向 输出设备发送信息。在计算机系统中,用不同的数字给各类 I/O端口进行编号,这种I/O端口的编号就称为I/O端口地址。 2. I/O指令 I/O指令应属于数据传送指令。

(1)输入指令IN格式:IN 累加器,端口地址9.1.1 I/O端口地址和I/O指令北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念功能:是从端口读入一个字节或字,并保存在寄存器AL或 AX中。如果端口地址在0~255范围之内,那么可在指令IN中 直接给出;否则,要把端口地址先存入寄存器DX中,然后在指

令中由DX来给出其端口地址。因此,输入指令IN有如下4种格式: IN AL,PORT IN AX,PORT IN AL,DX ;(PORT)→AL ;(PORT+1,PORT)→AX ;(DX)→AL

IN AX,DX9.1.1 I/O端口地址和I/O指令

;(DX+1,DX)→AX北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念(2)输出指令OUT 格式: OUT 端口地址,累加器 功能: 把寄存器AL或AX的内容输出到指定端口。如果某输出设 备的端口地址在0~255范围之内,那么可在指令OUT中直接给出;否 则,要把端口地址先存入寄存器DX中,然后在指令中由DX来给出其 端口地址。因此,输出指令OUT也有如下4种格式: OUT PORT,AL OUT PORT,AX9.1.1 I/O端口地址和I/O指令

;(AL)→PORT ;(AX)→PORT+1,PORT北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念OUT DX,AL OUT DX,AX ;(AL)→DX ;(AX)→DX+1,DX

这些指令只能起到传送数据的作用。如果要对状态寄存器进行测试、设置等操作,还要取回I/O状态数据到AL或AX,然后对AL或AX 进行测试、设置等操作,结果再写入I/O状态寄存器。

对I/O端口的操作除了可以利用AL/AX输入/输出一个字节或字外,在

32位的系统中还支持通过EAX的双字数据操作。

9.1.1 I/O端口地址和I/O指令

北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念数据传送方式一般分为无条件传送、程序查询传送、中断传送、 DMA传送和数据通道传送等5种方式。 1. 无条件传送方式 无条件传送方式适用于CPU与外设同步的情况。这种方式不需要 查询外设的状态,而直接用IN或OUT指令实现CPU与指定的外设寄存

器之间的数据传送。采用这种方式时,必须确保外设与CPU在传输数据的过程中,具有相同的速度,否则不能准确地传送信息。

9.1.2 数据传送方式

北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念2. 查询方式查询方式适用于CPU与外设不同步的情况。输入之前,要查 询数据是否已经准备好,若已经准备好,则可以传输;否则,继

续等待,直到数据准备好再进行数据传送,如左图所示。输出之前也要查询外设状态是否繁忙,繁忙则等待,不忙则输出数据到 外设,如右图所示。输入状态信息 N Y 输出状态信息

准备好 Y 输入数据

设备忙 N 输出数据

9.1.2 数据传送方式

北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念3. 中断传送方式 在中断传送方式中,某一外设的数据准备就绪后,它“主动” 向CPU发请求中断的信号,请求CPU暂时中断目前的工作而进 行数据交换。当CPU响应这个中断时,便暂停运行主程序,并 自动转移到该设备的中断服务程序。当中断服务程序结束以后, CPU又回到原来的主程序。其原理和调用子程序相仿,不过,

这里要求转移到中断服务子程序的请求是由外部设备发出的。中断传送方式是CPU和外部设备进行输入输出的有效方法。 它可以避免因反复查询外部设备的状态而浪费时间,从而提高

CPU的效率。9.1.2 数据传送方式北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念4. DMA方式 DMA方式即直接存储器存取(Direct Memory Access) 方式,也称为成组数据传送方式。DMA方式主要用于一些高速 的I/O设备,如磁带、磁盘、模数转换器(ADC)等设备。对这

类高速I/O设备,用执行输入/输出指令的方法或完成一次次中断序列的方法来传输字节,将会造成数据的丢失,而DMA方式 I/O设备直接和存储器进行成批数据的快速传送,传送数据时不 需要CPU干预。 在DMA方式下,外设通过DMA的一种专门接口电路—— DMA控制器(DMAC),向CPU提出接管总线控制权的总线9.1.2 数据传送方式北京科海电子出版社 · <<<

汇编语言程序设计

9.1 输入输出的基本概念请求,CPU在当前的总线周期结束后,响应DMA请求,把对总线的

控制权交给DMA控制器。5. 通道控制传送方式 通道进一步提高了CPU的效率,这是因为通道是一个具有特殊功 能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控 制,而CPU将“传输控制”的功能下放给通道后只负责“数据处理” 功能。这样,通道与CPU分时使用内存,实现了CPU内部运算与I/O

设备的并行工作。通道的基本功能是执行通道指令、组织外部设备和内存进行数据传输,按I/O指令要求启动外部设备,向CPU报告中断 等。9.1.2 数据传送方式北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断1. 中断与中断源 所谓计算机中断是指CPU正在执行某程序时,由于外界事件的需 要而向CPU发出申请,CPU暂时中断正在执行的程序而转去处理临时 发生的特殊事件,处理完后再返回到被中断的地方继续往下执行的过 程。 在中断过程中,执行的事件处理程序被称为中断服务程序,被中 断的程序就是主程序。主程序中被中断的位置称为断点。 2. 中断分类

8086/8088的中断可分为两类:外部中断和内部中断。9.2.1 中断的基本概念北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断(1)外部中断 外部中断又称为硬中断,由外设控制器或协处理器引起,以完 全随机的方式中断现行程序而转向中断处理程序。外部中断有两 个来源:非屏蔽中断NMI和可屏蔽中断INTR。 (2)内部中断 内部中断又称为软中断,中断请求来自CPU内部,不受中断 允许标志控制,主要由以下几种情况引起:由中断指令INT引起的 中断、除法错中断、溢出中断、程序员为调试程序设置的中断, 以及单步中断和断点中断。在上述内部中断中,除单步中断及断 点中断外,均为非屏蔽中断。9.2.1 中断的基本概念北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断3. 中断向量表 每个中断源都对应着一个中断处理程序,中断处理程序的起始地 址称为中断入口地址,系统将各种中断处理程序的入口地址放在一起 形成一个地址表,称为中断向量表,如图所示。00000H 类型 0 中断处理 程序入口地址 类型 1 中断处理 程序入口地址 类型 2 中断处理 程序入口地址

在中断向量表中,每4个单元的内容构成一个中 00004H00008H

断处理程序的入口地址(中断向量),其中,前0000CH

两个单元存放中断处理程序的偏移地址IP的值,003FCH

后两个单元存放中断处理程序的段地址CS值。003FFH

类型 0FF 中断处理 程序入口地址

9.2.1 中断的基本概念

北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断4. 中断系统的功能 实现中断过程的硬件和软件称为中断系统。中断系统应具有以下 功能: (1)实现中

断与返回 (2)能实现优先级排队优先级从高到低的次序为: 优先级高 非屏蔽中断(NMI) 内部中断 可屏蔽中断(INTR) 单步中断

优先级低

(3)能实现中断嵌套9.2.1 中断的基本概念北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断5. 中断响应 实现中断与返回的过程称为中断响应。 (1)CPU响应中断的条件 (2)中断响应的过程 6. 中断指令 软中断依靠程序中的软中断指令实现,所以又称它为程序自中断。 软中断指令格式:INT n 其中,n为类型码,取值范围0~255。9.2.1 中断的基本概念北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断执行操作:FLAGS 送堆栈,清除IF、TF; CS送堆栈,(4×n+2)→CS; IP 送堆栈,(4×n)→IP。 中断返回指令格式为:IRET 执行操作:当前栈顶出栈送IP,SP+2→SP; 当前栈顶出栈送CS,SP+2→SP;

当前栈顶出栈送FLAGS,SP+2→SP。

9.2.1 中断的基本概念

北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断7. 中断和子程序调用的比较中断和子程序调用两者有相似和不同之处。它们的工作过程非 常相似,即暂停当前程序的执行,转而执行另一程序段,该程序段

执行完时,CPU都自动恢复原程序的执行。中断和子程序调用在实现方面的主要差异如下: 子程序调用一定是程序员在编写源程序时事先安排好的,是可 知的,而中断是由中断源根据自身的需要产生的,是不可预见的 (用指令INT引起的中断除外)。子程序调用是用CALL指令来实现 的,而中断是由中断请求产生的。子程序的返回指令是RET,而中 断服务程序的返回指令是IRET。9.2.1 中断的基本概念

北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断1. BIOS概述 BIOS(Basic Input/Output System)是系统提供的基本输 入输出例行程序,它们一般以中断处理程序的形式存在。BIOS例 行程序一般装载在从地址0FE000H开始的8KB ROM中。驻留在

ROM中的BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。 下列情况下可考虑使用BIOS中断: 有些功能DOS没有提供,但BIOS提供了;有些场合无法使用 DOS功能调用;其他原因。9.2.2 BIOS中断调用北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断2. BIOS中断调用方法 BIOS中断调用方法很简单,基本步骤为: (1)置入口参数。 (2)使用中断语句“INT n”,其中,n为中断号。 3. 常用BIOS功能调用 (1)键盘I/O中断调用(16H中断调用) 16H中断调用有3个功能,功能号为0~2。

9.2.2 BIOS中断调用

北京科海电子出版社 · <<<

汇编语言程序设计

9.2 中断(2)打印机I/O中断调用(17H中断调用)17H中断调

用有3个功能,功能号为0~2。 (3)时钟中断调用(1AH中断调用) 1AH中断调用有两个功能,功能号为0和1。 4. 显示器I/O中断调用

(1)设置显示方式(功能号0)入口参数:(AH)=0,AL为方式编码。 出口参数:无。9.2.2 BIOS中断调用北京科海电子出版社 · <<<

本文来源:https://www.bwwdw.com/article/bor1.html

Top