IBM-PC汇编教材第8章.ppt_第1页
IBM-PC汇编教材第8章.ppt_第2页
IBM-PC汇编教材第8章.ppt_第3页
IBM-PC汇编教材第8章.ppt_第4页
IBM-PC汇编教材第8章.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 输入/输出程序设计,8.1 I/O设备的数据传送方式 8.2 程序直接控制I/O方式 8.3 中断传送方式,外设是用来实现人机交互的一些机电设备。 外设处理信息的类型、速度、通信方式与CPU不匹配, 不能直接挂在总线上,必须通过接口和系统相连,接口 指CPU、存储器、外设之间通过总线进行连接的电路部分, 是CPU与外界进行信息交换的中转站。,I/O设备与主机(CPU和存储器)的通信是通过外设接口进行的,传送控制、状态、数据三种不同的信息,都支持使用IN/OUT指令执行信息交换。,8.1 I/O设备的数据传送方式,控制、状态、数据三种信息,控制信息输出到I/O接口,通知设备和接口要做什么

2、动作,状态信息从I/O接口输入到CPU,表明设备当前所处的状态,数据信息是I/O设备和CPU真正要交换的信息,并行、串行 ?,CPU与外设的工作速度不一致,如何使两者高效、可靠地进行数据传送?,一、程序直接控制 二、中断传送方式 三、DMA传送方式 ( Direct Memory Access ),CPU与外设间的数据传送方式有以下几种:,程序直接控制方式 CPU利用IN/OUT指令直接在端口级上处理输入输出 中断方式 CPU在执行程序的同时兼顾对I/O设备的控制或数据传送。当I/O设备准备好(空闲),由I/O通知CPU暂停正在运行的程序,转而处理I/O设备的请求,处理完即返回主程序继续执行。

3、 DMA方式(直接存储器存取方式/成组传送方式) 主要适用于高速I/O设备(如磁盘),CPU向I/O接口提供控制信息(如数据块的首地址及字节数),I/O设备直接和存储器进行成批数据的快速传送。,1、程序直接控制方式 无条件传送(CPU与外设同步工作): 外部控制过程各种动作时间是固定的,而且是已知的。 查询方式(CPU与外设不同步工作): 传送前,先查询外设状态,准备好才传送,否则CPU处于等待状态。 2、中断方式: 外设与CPU处于并行工作,一旦外设准备好,外设向CPU发中断申请,条件具备,CPU暂停原程序执行,响应中断,外设与CPU串行工作。 3、DMA方式(高速I/O及成组交换数据):

4、CPU不干予,由硬件实现存储器与外设之间交换数据,称直接存取存储器。,DMA传送方式的特点 1. 外设和内存之间,直接进行数据传送, 不通过CPU, 传送效率高。 适用于在内存与高速外设、或两个高速外设之间进行大批量 数据传送。 2. 电路结构复杂,硬件开销较大。, 中断传送方式的特点: 1. CPU和外设大部分时间处在并行工作状态, 只在CPU响应外设的中断申请后, 进入数据传送的过程 2. 中断传送方式提高了CPU的效率,查询传送方式特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低,外设接口由一组寄存器(数据寄存器/状态寄存器/命令寄存器)组成,每个

5、寄存器有一个端口地址(端口号),,8.2 程序直接控制I/O方式,8.2.1 I/O端口,端口中的三种寄存器 数据寄存器: 状态寄存器: 命令寄存器:,对于8位端口, 可达64K(0000FFFFH) ,即65536 对于16位端口,可达32K(0000FFFFH) ,即32768 对于32位端口,可达16K(0000FFFFH) ,即16384,80X86微机中I/O地址空间独立于主存储器,地址空间理论值的大小,地址空间实际上的使用情况,只有十几个外设大容量存储设备,输入指令IN,8.2.2 I/O指令,输出指令OUT,例:测试某状态寄存器(端口号27H)的第2位是否为1 IN AL, 27

6、H TEST AL, 00000100B JNZ ERROR I/O指令是主机与外设进行通信的最基本途径。DOS功能调用和BIOS例行程序中的输入/输出功能也是由IN和OUT指令完成的。,例8.1Sound程序 mov dx, 1000 in al, 61h and al, 11111100b sound: xor al, 2 out 61h, al mov cx, 6000 wait1: loop wait1 dec dx jne sound,8.2.3 I/O程序举例,发声原理: 向扬声器发送一串脉冲信号,推动扬声器内纸盆振动,发出声音 脉冲的频率,控制音高; 脉冲的个数(延迟),控制音长

7、,与门,例8.3CPU要从3个设备轮流输入数据,设备1,2,3的状态寄存器 端口号分别用STAT1,STAT2,STAT3表示,第5位是输入 准备位。 INPUT: IN AL, STAT1 TEST AL, 20H JZ DEV2 CALL FAR PTR PROC1 DEV2: IN AL, STAT2 TEST AL, 20H JZ DEV3 CALL FAR PTR PROC2 DEV3: IN AL, STAT3 TEST AL, 20H JZ NO_INPUT CALL FAR PTR PROC3 NO_INPUT: ,查询传送方式,编程流程:,查询传送方式特点: 1. CPU通过

8、不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低,8.3 中断传送方式,关于中断的几个概念: 什么是中断? 中断源? 中断向量指什么? 中断向量的地址? 硬件中断、软件中断、非屏蔽中断?,使用中断方式时: 外设准备数据,CPU执行程序, CPU与外设并行工作; 一旦外设准备就绪,外设向CPU发中断申请, CPU暂停原程序执行,响应中断,进行数据传输。此时,CPU与外设是串行工作。,INTEL 8059A可编程中断控制器(PIC),8086/8088中断源,LPT2,COM2,COM1,LPT1,1. 向CPU的引脚INTR发中断申请信号 当有多个外设同时发出中断请求时, 能按照

9、一定的优先级顺序,向CPU发出中断申请, 使CPU能优先响应优先级最高的外部设备的中断申请。 2. 送中断类型号 在CPU中断响应周期,针对不同外设的中断请求, 向CPU传送不同的中断类型号, 使CPU执行相应的中断子程。,IBM PC机8259A可编程中断控制器(PIC)主要功能:,1.软中断(内中断): (1)INT指令 (2) CPU错(除法错、溢出) (3)为调试程序设置的中断( 单步、断点) 2.硬中断(外中断): (1)外设的I/O请求 可屏蔽中断 (2)电源掉电/奇偶错 非屏蔽中断,8.3.1 8086的中断分类,按中断源的不同,中断分为内中断和外中断,问 外设发出中断请求,CP

10、U是否就一定回响应呢?,这由两个控制条件决定: 1、该外设的中断请求是否屏蔽 2、CPU是否允许响应中断,8259A的IMR FLAGS的IF,答:不一定,8259A的IMR,I/O端口地址:21H 功能:8位对应控制8个外设 工作方式:0表示允许外设中断请求,1表示禁止,例如新增允许 IR2 的中断申请 IN AL, 21H ;读入原IMR的内容 AND AL, 1111 1011B ;D2=0,允许IR2的中断申请 OUT 21H, AL ;写入IMR,FLAGS的IF,工作方式: IF位=1 允许中断 (STI 开中断) =0 禁止中断 (CLI 关中断),功能:设置CPU中断允许位,非

11、屏蔽中断(类型号为2):一种特殊的外部中断,与IF位的设置情况无关,CPU不能禁止此类中断。,中断命令寄存器,CPU响应某级中断后,如果不发出中断结束命令 EOI ,则8259A会屏蔽同级或低级的中断申请。,为什么要发中断结束命令 EOI?,INTSUB PROC 、 MOV AL, 20H ;将中断结束命令字20H 送AL OUT 20H, AL ;写入中断命令寄存器中 IRET ;中断返回 INTSUB ENDP,怎么发中断结束命令 EOI?,中断操作的5个步骤:,(1) 取中断类型号 (2) 计算中断向量地址 (3) 取中断向量,偏移地址送IP,段地址送CS (4) 转入中断处理程序 (

12、5) 中断返回到INT指令的下一条指令,例:BIOS中断 INT 4AH 4AH4 = 128H 4AH4+2 = 12AH (128H) IP (12AH) CS,8.3.2 中断向量表,中断类型号:? 中断向量表:? 中断向量地址:?,用户如何利用保留的中断类型号扩充中断?,中断程序的编写步骤: 1、主程序的编写: (1) 设置中断向量 (2) 设置CPU中断允许位(IF) (3) 设置中断屏蔽位(IMR) 2、中断处理子程序的编写: (1) 中断处理功能 (2) IRET中断返回,例:为中断类型N设置中断向量 MOV AX, 0 MOV ES, AX MOV BX, N*4 MOV AX

13、, OFFSET INTHAND MOV ES: WORD PTRBX, AX ; 偏移地址(N*4) MOV AX, SEG INTHAND MOV ES: WORD PTRBX+2, AX ; 段地址(N*4+2) INTHAND: IRET,设置/ 取中断向量(方法1:绝对地址法),DOS功能调用(21H)存取中断向量 设置中断向量: AH=25H AL=中断类型号 DS:DX=中断向量 INT 21H 取中断向量: AH=35H AL=中断类型号 INT 21H 返回时送ES:BX=中断向量,设置/ 取中断向量(方法2:DOS功能调用法),例8.4用DOS功能调用存取中断向量 MOV

14、AL, N MOV AH, 35H INT 21H ; 取原中断向量 PUSH ES PUSH BX ; 保存原中断向量 PUSH DS MOV AX, SEG INTHAND MOV DS, AX MOV DX, OFFSET INTHAND MOV AL, N MOV AH, 25H INT 21H ; 设置新的中断向量 POP DS POP DX POP DS MOV AL, N MOV AH, 25H INT 21H ; 恢复原中断向量 RET ; INTHAND: IRET,不同?,8.3.3 中断过程,当中断源产生中断申请后, 不论是内中断、非屏蔽中断,还是可屏蔽中断, 只要满足响

15、应条件,在执行完当前指令后, CPU内部硬件会自动完成下列响应中断的过程:, 取中断类型号N 当前FLAGS的内容入栈 当前CS的内容入栈 当前IP的内容入栈 清IF、TF标志为0 取内存单元( 0 : N 4 )字内容送IP 取中断子程 取内存单元( 0 : N 4 + 2 )字内容送CS 入口地址 转中断子程序 此时CS:IP指向中断程序的入口,开始执行中断程序。,8.3.4 中断优先级和中断嵌套,当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源, 再响应优先级较低的中断源。,高 低 内中断 ( 除零,INT 指令,断点,INTO指令 ) 非屏蔽中断 可屏蔽中断(IR0

16、, IR1 , IR2 , IR3 , IR4 , IR5, IR6, IR7) 低 内中断( 单步 ),中断优先级如何进行控制?,8259A的中断命令寄存器的6、7位可以控制,一般情况下,以正常的优先级方式(IR0IR7) 特殊情况下,可以改变优先级的次序:,R SL 0 0 正常优先级方式 0 1 清除由L2L0指定的中断请求 0 各中断优先级依次左循环一个位置 1 1 各中断优先级依次循环到由L2L0指定的中断请求到达最低优先级位置上,CPU正在执行某一中断子程,又被其它中断源中断 使CPU转去执行另一中断子程,这个过程叫中断嵌套,嵌套的概念,. . . . STI. . . . . .

17、 (EOI) . . . . . IRET,IF=0,禁止中断,允许级别高中断,允许级别低或同级中断,中断子程序运行过程中的中断允许情况,8.3.5 中断处理程序,中断程序的编写步骤: 1、主程序的编写: (1) 设置中断向量 (2) 设置CPU中断允许位 (3) 设置中断屏蔽位 2、中断处理子程序的编写: (1) 中断处理功能 (2) IRET中断返回,当前指令执行完的含义,对于带重复前缀的串指令(如REP MOVSB),执行一 次重复和串指令即可响应中断;,对MOV和POP指令,处理对象为段寄存器,STI和IRET 指令执行完本条指令后再执行一条指令才响应中断。,加封锁指令,看作一条指令,

18、一般指令,只要一条指令的执行周期结束即可响应中断 特殊情况:,软中断子程与子程序的编写类似, 其不同点在于: 1子程用CALL指令调用;中断子程用INT指令调用 2子程用RET指令返回;中断子程用IRET指令返回 3CALL指令直接用过程名做操作数, 即由过程名提供子程的入口地址 INT指令由类型号N到中断向量表中固定的单元 获得中断子程的入口地址,子程序的编写步骤,1、保存寄存器内容 2、如允许中断嵌套,则开中断(STI) 3、处理中断 4、关中断(CLI) 5、送中断结束命令(EOI)给中断命令寄存器 6、恢复寄存器内容 7、返回被中断的程序(IRET),同子程序,?,?,不同子程序,例8

19、.4 编写一个中断处理程序,要求在主程序运行期间,每隔 10秒响铃一次,同时显示The bell is ring! dseg segment count dw 1 mess db The bell is ring!,0ah,0dh,$ dseg ends cseg segment main proc far assume cs:cseg, ds:dseg, es:dseg start: push ds mov ax, ax push ax mov ax, dseg mov ds, ax,mov al, 1ch mov ah, 35h int 21h ; 取原中断向量 push es push bx ; 保存原中断向量 push ds mov dx, offset ring mov ax, seg ring mov ds, ax mov al, 1ch mov ah, 25h int 21

温馨提示

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

评论

0/150

提交评论