第6章输入输出和中断_第1页
第6章输入输出和中断_第2页
第6章输入输出和中断_第3页
第6章输入输出和中断_第4页
第6章输入输出和中断_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

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

文档简介

第六章输入和输出和中断本章重点:本章主要讲述输入输出的概念、输入输出方式、中断的概念、中断类型、向量表、优先级、处理过程、中断程序设计以及BIOS/DOS中断调用。6.1 输入/输出(I/O)指令

和数据的传送方式本节重点:本节重点介绍接口电路的概念和作用,接口的类型,输入输出的寻址方式,CPU与外设数据传送的方式知识回顾:主机为什么要和输入输出设备通信,他们之间的关系如何?主机硬件系统——输入/输出接口简写为I/O接口,是CPU与外部设备间的桥梁CPU外设I/O接口微型计算机的概念结构存储器I/O接口输入设备I/O接口地址总线AB输出设备CPU数据总线DB控制总线CBI/O接口6.1.1接口电路的概念与作用一、外设为什么一定要通过接口电路和主机总线相连?1、高速CPU与低速外设间的速度矛盾;2、主机数字信号与外设模拟信号的矛盾;3、CPU与外设间并行/串行信号形式的矛盾。6.1.1接口电路的概念与作用一、外设为什么一定要通过接口电路和主机总线相连?1、高速CPU与低速外设间的速度矛盾;2、主机数字信号与外设模拟信号的矛盾;3、CPU与外设间并行/串行信号形式的矛盾。6.1.1接口电路的概念与作用二、为什么存储器不用接口却可以直接与CPU连接?1、功能单一:保存信息;2、传送方式单一:一次传送1个字节或1个字;3、品种有限:只读和读/写;4、存取速度与CPU工作速度基本匹配。6.1.2输入输出的寻址方式众多的外部设备如何识别?我们教学楼的教室是如何区分的?编址

6.1.2输入输出的寻址方式一、统一编址(存储器对应输入输出方式)内存和外设端口进行统一编址,只有一个统一的地址空间。通常不用设置专门的输入和输出指令。访问外设就好像在访问主存一样(地址唯一)。二、独立编址(端口寻址的输入输出方式)SPCE061A片内存储器映射RAM、ROM统一编址。2Kword的SRAM。片内32KWordFlashROM。6.1.2输入输出的寻址方式一、统一编址(存储器对应输入输出方式)二、独立编址(端口寻址的输入输出方式)建立两个地址空间,一个为内存地址空间,一个为外设地址空间。通过控制总线来确定CPU到底要访问内存空间还是访问外设地址空间。因此需要专门的输入输出指令来访问外部设备(地址冲突),8086外设寻址范围(0000H~FFFFH)。三、输入输出指令I/O指令使用的寄存器:AL/AX、DX1.输入指令IN格式:IN AL,PORT ;(PORT)ALIN AL,DX ;[(DX)]ALIN AX,PORT ;(PORT)AXIN AX,DX ;[(DX)]AX其中PORT、DX指明I/O地址。当I/O地址为0~255时,可用立即数的形式,当I/O地址>0~255时,必须使用DX寄存器存放I/O地址。2.输出指令OUT格式:OUT PORT,AL ;(AL)PORTOUT DX,AL ;(AL)[DX]OUT PORT,AX ;(AX)PORTOUT DX,AX ;(AX)[DX]其中PORT、DX指明I/O地址。当I/O地址为0~255时,可用立即数的形式,当I/O地址>0~255时,必须使用DX寄存器存放I/O地址。

示例:(1)IN AL,40H ;(40H)AL(2)OUT 80H,AL ;(AL)80H(3)MOV DX,378H ;端口地址378HIN AL,DX ;([DX])AL

6.1.3接口的信息类型和结构特点一、CPU与I/O设备之间的接口信息1、数据信息(1)数字量:以二进制形式表示的数或以ASCII码表示的数或字符(2)模拟量:声音信号(3)开关量:只有两个状态(1和0)的量,用一位二进制数即可表示。2、状态信息反映了当前外设的工作状态,是外设通过接口往CPU传送的。对于输入设备来说,通常用准备好(READY)信号来表明输入的数据是否准备就绪;对于输出设备来说,通常用忙(BUSY)信号表示输出设备是否处于空闲状态。3、控制信息CPU通过接口传送给外设的,CPU通过发送控制信息控制外设的工作。二、接口的结构和识别1、端口:每个接口都有一组寄存器,称这些寄存器为I/O端口(PORT),每一个端口都有一个端口地址。2、端口的类型:数据端口:对来自CPU和内存的数据或送往CPU和内存的数据起缓冲作用。状态端口:存放外部设备或接口部件本身的状态。控制端口:存放CPU发出的命令,以便控制接口和设备的动作。

3、端口的识别:一个外设往往有几个端口地址CPU寻址的是端口,而不是笼统的外设,不管是输入还是输出,所用到的地址都是对端口而言的。任务分组讨论:幼儿园老师要完成5个小朋友每人分3块糖,并且全部吃完的一个任务,请同学们讨论一下,有几种可行的方案?6.1.4CPU与外设之间传送数据的方式幼儿园老师要完成5个小朋友每人分3块糖,并且全部吃完的一个任务,请同学们讨论一下,有几种可行的方案?方法1:

她先给孩子甲一块糖,然后再给第二块,又给第三块。接着给孩子乙,其过程与孩子甲完全一样。依次类推,直至到第5个孩子发完四块糖。方法2:

她先给孩子甲一块糖,盯着甲吃完,然后再给第二块,等吃完第二块又给第三块。接着给孩子乙,其过程与孩子甲完全一样。依次类推,直至到第5个孩子发完四块糖。看来这种方法效率太低,重要之点还在于孩子们吃糖时她一直在守候,什么事也不能干。方法3:

每人发一块糖各自去吃,并约定谁吃完后就向她举手报告,再发第二块。看来这种新方法提高了工作效率,而且在未接到孩子们吃完糖的报告以前,她还可以腾出时间给孩子们改作业。但是这种方法还可以改进。方法4:进行批处理:每人拿3块糖各自去吃,吃完3块糖后再向她报告。显然这种方法工作效率大大提高,她可以腾出更多的时间改作业。方法5:权力下放,把发糖的事交给另一个人分管,只是必要时她才过问一下。6.1.4CPU与外设之间传送数据的方式1

无条件传送2

查询传送3

中断传送4

直接存储器传送(DMA)5 通道方式 6 外围处理机方式(PPU)1、无条件传送方式(同步方式)1.无条件传送方式(同步方式)如果计算机能够确信一个外设已经准备就绪,那就不必查询外设的状态而可直接进行信息传输,这称为无条件传送方式。特点:适用于CPU与外设速度同步的情况,结构简单,可靠性要求不高的设备,一般较少使用三态缓冲器地址译码器数据总线地址总线数据来自外设IO/MRD无条件传送的输入方式要求CPU在执行输入指令时,外设的数据是准备好的,即已经存放在三态缓冲器中,否则出错。dataaddress1101011要求CPU在执行输出指令时,确信所选中的输出锁存器是空的。锁存器地址译码器数据总线地址总线数据到外设IO/MWR无条件传送的输出方式address11data01101返回你吃完了吗?还没有吃完啦吃完啦吃完啦吃完啦吃完啦2.查询传送方式2.查询传送方式查询方式:CPU通过执行程序不断地读取并测试外设的状态,如果外设处于准备好状态(输入设备)或空闲状态(输出设备),则CPU执行输入指令或输出指令。特点:CPU与外设速度不同步的情况。CPU在传送数据之前要查询外设的相关状态。当外设满足传送条件时,就传送数据,否则,继续查询状态,等待满足条件,此时CPU要占用很多时间去查询外设的状态。(1)、查询式输入输入状态信息READY?输入数据NY输入设备锁存器三态缓冲器缓冲器地址译码器数据去数据总线+5VIO/MRDIO/MRDREADY地址总线DRQ选通状态信息数据查询式输入的接口电路接口电路中除了有传送数据的端口外,还有传送状态的端口。adressdata10111101110100111110(2)、查询式输出读状态端口BUSY?输出数据准备输出数据YN输出设备锁存器三态缓冲器地址译码器去数据总线+5VIO/MWD地址总线DR数据IO/MRD状态信息“BUSY”Q数据总线ACK选通信号“BUSY”查询输出接口电路返回3.中断传送方式3.中断传送方式中断的概念:当输入设备将数据准备好或者输出设备可以接收数据时,向CPU发出中断请求,使CPU暂时停下目前的工作而和外设进行一次数据传输。等输入操作或输出操作完成以后,CPU继续进行原来的工作。特点:中断传送方式弥补了查询方式中CPU要占用很多时间去查询状态的不足,实现了CPU与外设的同步操作。CPU进行I/O操作之后,就去执行其他程序;外设完成操作,向CPU发出中断请求,使CPU进入中断处理程序,接收外设传送的数据或启动下一次I/O操作。处理完本次中断后,CPU继续执行进入中断前的程序。显然,CPU与外设是并行工作的,在这种方式下,CPU的工作效率很高,并可使多台外设与CPU并行工作。:::::::

现行程序:::::::

A::B:::中断服务程序入口地址3、中断传送方式随机产生的中断申请堆栈输入设备锁存器三态缓冲器数据去数据总线+5VIO/MRDDRQ选通数据装置中断允许三态缓冲器中断矢量去数据总线INTA(中断响应信号)地址译码器地址总线INTR中断传送方式的接口电路返回4、直接存储器传送方式4.直接存储器传送方式(DMA:DirectMemoryAccess

)问题:无条件方式、查询方式和中断方式下,都是通过CPU执行指令来实现主机和外设的传输,每一条指令要有取指和执行时间,通常传送一个字节需要几十到几百微秒,这对于高速的I/O设备来讲,显得速度太慢了。解决办法:在DMA方式下,外部设备利用专用的接口电路直接和存储器进行高速的数据传送,而并不经过CPU。4.直接存储器传送(DMA)方式特点:DMA方式适用于高速I/O设备。通过DMA硬件控制,直接在外设与存储器之间交换数据。在DMA方式下,CPU让出总线控制权,使外设与存储器在很短的时间内成批交换数据。当数据交换完成后,CPU收回总线控制权。DMA实现方法:在利用DMA方式进行数据传送时,要利用系统的数据总线、地址总线和控制总线。在用DMA方式进行数据传输时,接口电路要向CPU发出请求,使CPU让出总线,把总线控制权交给DMA传输的接口电路(DMA控制器)。数据端口状态/控制端口地址寄存器计数器状态/控制寄存器DMA控制器CPU存储器数据缓寄存器DMA请求触发器输入设备READYDMA请求DMA响应HOLDHLDA4、直接存储器传送(DMA)方式data1data1111data2+1-1(一)DMA操作的基本方法2、周期挪用:把CPU不访问存储器的那些周期“挪用”来进行DMA操作。3、周期扩展:CUP与DMA交替访问存储器。即轮流使用总线,不需要总线的申请、建立和释放过程。1、CPU停机方式:最常用也是最简单的一种DMA方式。(二)DMA控制器的基本功能1、能接收外设的请求,向CPU发出DMA请求信号。2、当CPU发出DMA响应信号后,接管对总线的控制,进入DMA方式。3、能输出地址信息和修改地址信息。4、能向存储器和外设发出相应的读/写信号。5、能控制传送的字节数,判断DMA传送是否结束。6、在DMA传送结束时,能结束DMA请求信号,释放总线,把总线控制权还给CPU。(三)DMA传送方式1、单字节方式:每次DMA请求只传送一个字节数据,每传送完一个字节,都撤除DMA请求信号释放总线。2、字节传方式:每次DMA请求连续传送一个数据块,待规定长度的数据块传送完后才撤除DMA请求信号释放总线。返回吃完了吗?正吃着呢吃完了5.通道方式及外围处理机方式5.通道方式DMA的不足之处:计算机中连接着许多输入输出设备,其中包括字设备和块设备。为每一个设备都配置一个专用的DMA控制器是不经济的。而且多个DMA的并行工作还会使存储器的访问发生冲突。因而必须在多个设备之间共享DMA控制器,这样就形成了输入输出通道的概念。通道是一个具有输入输出处理器控制的输入输出部件。通道控制器有自己的指令,即通道命令,能够根据程序控制多个外部设备并提供了DMA共享的功能,而DMA只能进行固定的数据传输操作。大大提高了CPU的工作效率。然而这种提高CPU效率的办法是以花费更多硬件为代价的5.通道方式(channel)CPU与通道并行工作,由通道实现在存储器与外设间数据转换与传送。I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。通道只能执行与I/O操作有关的指令,其指令类型单一;通道没有自己的内存,即通道与CPU共享内存。在大、中型和高档小型计算机系统中,大多采用通道技术通道方式6.外围处理机(PPU)式概念:PPU方式是通道方式的进一步发展。由于PPU基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小型计算机。在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务。特点:从某种意义上说,这种系统已变成分布式的多机系统。华为softX3000采用了PPU技术返回无条件传输方式6.2中断本节重点:中断中涉及到的基本概念进行介绍,包括中断的分类,中断向量表的作用,中断是如何处理的和各中断的优先级等。6.2中断6.2.1 中断的有关概念因某个事件的发生,使CPU暂时中止现行程序的执行,自动转去执行处理该事件的子程序;处理结束后,又自动返回到被中断程序的断点处继续执行后续指令,这个过程称为中断。

现行程序:::::::

A::B:::::::中断服务程序随机产生的申请处理结束,返回断点入口地址6.2.2 IBM-PC的中断源及其优先级1、中断源引起中断的事件称为中断源。中断源可能来自外设的输入输出请求,也可能是计算机的一些异常故障或其他内部原因。8086中断分类: 不可屏蔽中断NMI

外部中断 可屏蔽中断INTR中断源 除法错 内部中断 溢出中断 软中断 单步中断 IR0IR1IR2IR3

NMI

中断控制器8259CPU

系统定时器INTR

键盘

图形接口

保留

串行接口

保留

软盘

打印机

中断逻辑INTn指令INTO指令除法错误单步TF=1IR0IR1IR2IR3IR4IR5IR6IR72、中断源示意图1.48086CPU的外部引脚特性

GNDINTRNMICLKGND19INTA(QS1)TESTREADYRESET23914033843753663573483393210311130122913281427152616251724182319222021AD14AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0RDMN/MXHOLD(RQ/GT0)BHE/S6AA17/S4A18/S5/SA16/S3AD15)VCC(+5VM/IO(S2)WR(LOCK)HLDA(RQ/GT1)DT/R(

S1)DEN(S0)ALE(QS0)AD1213AD8086CPU引脚图IR0IR1IR2IR3IR4IR5IR6IR7除法错INTOINTn中断类型优先级内部中断

高NMI↓INTR↓单步中断

低6.2.2中断优先级

8086/8088系统的中断优先级别是这样确定的,其由高到低的顺序为:除法错、INTn、INTO→NMI→INTR→单步级连电路连接方法6.2.3中断矢量(向量)表

每个中断源都对应一个中断处理程序,每个中断处理程序的起始地址称为中断入口地址。系统将各个中断处理程序的入口地址放在一起形成一个地址表,称为中断矢量(向量)表。现行程序:::::::

A::B:::::::中断服务程序随机产生的申请处理结束,返回断点入口地址中断指令:

类型0的(IP)

类型0的(CS)

类型1的(IP)

类型1的(CS)

类型N的(IP)

类型N的(CS)

类型255的(IP)

类型255的(CS)00000000044*N003FC中断向量表中断向量:中断例行程序的入口地址,存放于中断向量区。

00000H003FFHA0000HC0000HF0000H640K(RAM)128K(RAM)192K(ROM)64K(ROM)8086中断类型号及中断名称表 中断类型号名称中断类型号名称0除法错0EH软盘中断1单步中断0FH打印机中断2NMI10H显示器驱动程序3断点中断11H设备测试程序4溢出中断12H内存容量判断5屏幕打印13H软盘驱动程序6~7(保留)14H通讯驱动程序8时钟中断15H盒式带驱动程序9键盘中断16H键盘驱动程序0AH彩色图象接口17H打印机驱动程序0BH同步通讯中断

0CH异步通讯中断

0DH硬盘中断21HDOS中断中断指令:INTTYPE或INT执行操作:(SP)←(SP)-2((SP)+1,(SP))←(FLAGS)(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←(TYPE*4)(CS)←(TYPE*4+2)溢出中断指令:INTO执行操作:若OF=1,

(IP)←(10H)(CS)←(12H)6.2.4软中断及有关中断指令从中断返回指令:IRET执行操作:(IP)←((SP)+1,(SP))(SP)←(SP)+2(CS)←((SP)+1,(SP))(SP)←(SP)+2(FLAGS)←((SP)+1,(SP))(SP)←(SP)+2

注意:*TYPE(0~255)是中断类型号,隐含的类型号为3*INT指令还把IF和TF置0,但不影响其它标志位*IRET指令执行完,标志位由堆栈中取出的值确定6.2.5中断过程:一、中断发生时,硬件自动完成的动作如下:(1)

取中断类型号n;(2)

标志寄存器(PSW)内容压栈;(3)

当前代码段寄存器(CS)的内容压栈;(4)

当前指令指针(IP)内容压栈;(5)

禁止外部中断和单步中断(置IF=0,TF=0);(6)

从中断向量表中取4Xn地址的内容送IP,取4Xn+2地址的内容送CS;(7)

转中断处理程序。保存PSW,是为了中断返回时,保证被中断程序工作的连续性和正确性。禁止外部中断和单步中断,是为了使CPU在处理当前中断时,不再响应响应其他的中断。如果允许CPU响应别的中断,可用STI指令将IF置1。二、中断程序的编写利用中断向量表中保留的中断类型号,可以编写自己的中断处理程序。1.外部(硬)中断处理程序根据外中断随机发生的特点,外中断处理程序设计的主要步骤:(1)

保护现场。(2)

尽快完成中断处理,以免影响其他的中断请求。(3)

恢复现场。(4)

中断返回,用IRET指令返回。2.内部(软)中断处理程序软中断虽是不可屏蔽的,但不会随机发生,只在CPU执行INTn指令后,才会发生。与子程序相似,但并不等同于子程序。软中断处理程序设计的主要步骤:(1)

考虑切换堆栈,软中断处理的情况可能较复杂,会占用大量的堆栈空间。(2)

及时开中断。(3)

保护现场。(4)

完成中断处理。(5)

恢复现场。(6)

切换堆栈,如果在开始时切换了堆栈,就切换回来。(7)

中断返回。关中断开中断关中断开中断保存断点、现场判断中断条件,

转入中断服务程序执行中断服务程序恢复中断,现场执行原有程序外部设备发出

中断申请IF=1YN不响应自动自动1.设置和获取中断向量(1)

设置中断向量设置中断向量的两种方法:直接写入法和DOS调用直接写入法举例:

… …MOV AX,0MOV DS,AX ;定位物理地址0:0MOV BX,n*4 ;设置n号中断向量CLI ;关中断MOV WORD PTR[BX],OFFSETINTHANDMOV WORD PTR[BX+2],SEGINTHANDSTI ;开中断

……

25H号DOS功能调用:入口参数:(AH)=25H;(AL)=中断类型号;(DS:DX)=中断向量功能:将指定的中断向量写入中断向量表DOS调用法举例:INTHAND:

… … MOV AX,SEGINTHAND MOV DS,AX MOV DX,OFFSET INTHAND MOV AH,25H MOV AL,n INT 21H … …(1)

获取中断向量获取中断向量的两种方法:直接读取法和DOS调用法直接读取法举例:

… …MOV AX,0MOV ES,AX ;物理地址定位MOV AX,ES:[n*4] ;取IPMOV WORDPTROLDVECTOR,AX;保存原向量MOV AX,ES:[n*4+2];取CSMOV WORDPTROLDVECTOR+2,AX ……35H号DOS功能调用:入口参数:(AH)=35H;(AL)=中断类型号;出口参数:(ES)=读取的中断向量的段地址。(BX)=读取的中断向量的偏移地址。功能:读取指定中断的中断向量

DOS调用法举例:

… … MOV AH,35H MOV AL,n INT 21H MOV WORDPTROLDVECTOR+2,ES;保存原向量

MOV WORDPTROLDVECTOR,BX … …例:利用DOS保留的空中断类型号45H作为新增加的软中断类型号,其功能是将AX中的十六位无符号二进制数以四位十六进制形式在显示器输出,其参数如下: 入口参数:AX中是待显示的无符号二进制数。 出口参数:对应的十六进制数已在显示器输出。45H软中断处理程序名:INTR45;设置和调用45H号软中断的程序:T-INT45;主程序如下:NAME T-INT45STACK SEGMENT STACKDB 200DUP(0) STACK ENDSDATA SEGMENTDATBUF DW 1234H,5678H,9ABCH,0EFFFH DW 8000H,0,0AH,0DH,0FHN=($-DATBUF)/2DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKEXTRN INTR45:FARBEGIN: MOV AX,SEGINTR45 MOV DS,AX MOV DX,OFFSET INTR45;设置中断向量

MOV AX,2545H INT 21H MOV AX,DATA MOV DS,AX ;设置当前数据段

LEA SI,DATBUF MOV CX,NLOPA: MOV AX,[SI] ;准备入口条件

INT 45H MOV AH,2 MOV DL,‘’ INT 21H ADD SI,2 LOOP LOPA MOV AH,4CH INT 21HCODE ENDS END BEGIN

;45H软中断处理处理程序

NAME INTR45STACK SEGMENT STACK DB 200DUP(0)STACK ENDSDATA SEGMENTTAB DB ‘0123456789ABCDEF’BUF DB 4DUP(0),‘H$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKPUBLIC INTR45INTR45 PROC FAR PUSH BX PUSH CX;保护现场

PUSH SI PUSH DS MOV BX,DATA MOV DS,BX LEA SI,BUF LEA BX,TAB MOV CH,4 MOV CL,4LOPA: ROL AX,CL PUSH AX AND AX,0FH XLAT MOV [SI],AL INC SI POP AX DEC CH JNE LOPA MOV AH,9 LEA DX,BUF INT 21H POP DS POP SI;恢复现场

POP CX POP BX IRET ;中断返回INTR45 ENDPCODE ENDS END

;执行结果:1234H5678H9ABCHEFFFH8000H0000H000AH000DH000FH6.4 BIOS中断调用一、BIOS概述BIOS(BasicInput/OutputSystem)是固化在ROM中的程序,包含主要的I/O设备的驱动程序和许多常用的例行程序,它们一般以中断程序的形式存在。程序员不必知道外部设备的物理特性和逻辑结构细节(端口地址、命令及状态格式等),也可以控制各种输入输出操作。如:INT 10H为显示器驱动;INT 17H为打印机驱动等。BIOS程序直接建立在硬件基础上,DOS则建立在BIOS基础上。6.4 BIOS中断调用

DOS/WINDOWSBIOSHARDWARE二、BIOS中断的特点通常应用程序可以调用DOS提供的系统调用,完成输入/输出操作或其他操作,而不必过多的考虑外设的具体的物理特性和逻辑结构细节(既少考虑硬件),实现起来相对容易。与DOS的功能调用相比,BIOS调用能完成更复杂的输入/输出操作,其效率高的优点和编程相对复杂的缺点都显而易见。在下列情况下,可以考虑使用BIOS中断:(1)有些功能DOS没有提供。(2)在有些无法使用DOS功能调用的场合。(3)其他原因。

注意:BIOS中断调用不保护AX寄存器,如果主程序使用了AX寄存器,在进行BIOS调用的前后要对AX寄存器进行保护和恢复。三、常用的BIOS中断调用BIOS中断调用方法:设置入口参数;使用中断指令INTn,其中n为中断类型号。当某一BIOS程序具有多个功能时,AH中存放子功能号。

(一)、显示器I/O中断调用(中断类型号:10H)BIOS中显示驱动的中断类型号为10H,有16种子功能。软中断指令“INT 10H”实现其功能调用。1、设置显示方式(功能号0)入口参数:(AH)=0,(AL)=模式(0~7) (AL)=0, 40X25B/W文本方式

=1, 40X25COLOR文本方式

=2, 80X25B/W文本方式

=3, 80X25COLOR文本方式

=4, 320X200B/W图形方式

=5, 320X200COLOR图形方式

=6, 640X200B/W图形方式

=7, 80X25B/W文本方式(单显板)出口参数:无

IBM-PC的标准显示器接口板有两种:单色显示器和并行打印机接口板,能显示黑白字母、数字及方块图形字符,即以文本方式工作;彩色、图形监视器接口板,可以以黑白或彩色文本方式或图形方式工作。2、设置光标大小(功能号1)入口参数:(AH)=1(CH) =光标顶值(0~11)(CL)=光标底值(1~12)

出口参数:无

3、设置光标位置(功能号2)入口参数:(AH)=2(BH) =页号(0)(DH)=行号(DL)=列号 出口参数:无 4、屏幕上滚(功能号6)入口参数:(AH)=6 (AL) =上滚行数

(CX)=上滚部分左上角的行、列号

(DX)=上滚部分右下角的行、列号

(BH)=显示属性出口参数:无5、屏幕下滚(功能号7)入口参数:(AH)=7 (AL) =下滚行数

(CX)=下滚部分左上角的行、列号

(DX)=下滚部分右下角的行、列号

(BH)=显示属性出口参数:无

6、在当前光标位置写字符和属性(功能号9)入口参数:(AH)=9 (AL) =要写的ASCII码字符

(BL)=属性值

(CX)=重复次数

(BH)=页号出口参数:无7、在当前光标位置写字符(属性不变)(功能号0AH)入口参数:(AH)=OAH (AL) =要写的ASCII码字符

(CX)=重复次数

(BH)=页号 8、设置彩色组或背景颜色(功能号0BH)入口参数:(AH)=OBH (BH)=0–设置背景色;1–设置彩色组

(BL)=背景色(0~15);彩色组(0~1)

其中:彩色组0:绿/红/黄;彩色组1:青/品红/白

9、写点(功能号0CH)入口参数:(AH)=0CH (AL) =彩色值(若AL的位7为1,则新的彩色值与当前 彩色值作按位加运算)

(CX)=列号

(DX)=行号出口参数:无 10、读当前显示状态(功能号0FH)入口参数:(AH)=0FH出口参数:(AL) =当前显示方式

(BH)=当前页号

(AH)=屏幕上的字符列数

例1:编写一程序,让“黑桃”字符在(0,0),(24,24)的斜线上移动。STACKSEGMENTSTACK

DB200DUP(?)STACKENDSCODE1SEGMENT ASSUMECS:CODE1,SS:STACKSTART:MOVAH,0 ;设置80X25B/W文本模式

MOVAL,2 INT10H MOVAH,15 ;读当前显示状态

INT10H

MOVCX,1 ;准备写字符条件

MOVDX,0REP0: MOVAH,2 ;光标定位

INT10H MOVAL,6 ;写字符

MOVAH,10 INT10H CALLDELAY ;延时

MOVAL,0 ;抹掉已写的字符

MOVAH,10INT10H INCDH INCDL CMPDH,25 ;行号不等于25,则继续。

JNEREP0

MOVAH,4CH INT21HDELAYPROC ;延时子程序

PUSHCX PUSHDX MOVDX,500 ;外循环计数DL500:MOVCX,4096*2 ;内循环计数DL10MS:LOOPDL10MS DECDXJNZDL500 POPDXPOPCX RETDELAYENDPCODE1ENDS ENDSTART注意:由于CPU的工作频率不同,延时计数应根据需要适当调整。

反跳回去JMPBACK: DEC DH INC DL MOVAL,6 MOVAH,10 INT10H CALLDELAY MOVAL,0 MOVAH,10 INT10H CMP DH,0 JNE JMPBACK………………

JMPBACK: DEC DH INC DL MOVAL,6 ;写字符

MOVAH,10 INT10H CALLDELAY ;延时

MOVAL,0 ;抹掉已写的字符

MOVAH,10 INT10H CMP DH,0 JNE JMPBACK例2:以蓝色为背景,在10行20~40列显示20个“梅花”符,梅花的颜色分别为红、绿、黄、黑。 属性字节

闪烁背景色前景色位76543210属性BLRGBIRGB表1黑白方式显示属性字节表2彩色文本方式显示属性字节位号76543210属性字节BLRGBIRGB闪烁选择背景颜色前景颜色110

棕RGB颜色000黑001蓝010绿011青100红101品红111白表3背景颜色组合IRGB颜色IRGB颜色0000黑1000灰0001蓝1001浅蓝0010绿1010浅绿0011青1011浅青0100红1100浅红0101品红1101浅品红0110棕1110黄0111白1111强度白表4前景颜色组BLIRGB颜色BLIRGB颜色00000黑81000灰10001蓝91001浅蓝20010绿101010浅绿30011青111011浅青蓝40100红121100浅红50101品红131101浅品红60110棕141110黄70111亮灰151111白表5背景颜色组合表表6彩色分组STACKSEGMENTSTACK DB200DUP(?)STACKENDSDATASEGMENTDATDB14H,12H,1EH,10HDATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVAH,0 ;设置80X25COLOR文本模式

MOVAL,3 INT10H LEASI,DAT ;取属性表首址

MOVDI,4 MOVDX,0A13H ;光标位置

MOVAH,15 INT10H ;取显示页号LOPA:MOVAH,2 ADDDL,5 INCDL INT10H ;光标定位 MOVAL,5 MOVBL,[SI] MOVCX,5 MOVAH,9 ;按属性字连续显示5个梅花符

INT10H INCSI DECDI JNZLOPA ;显示下一组字符

MOVAH,4CH INT21HCODEENDS ENDSTARTSTART:

mov

ax,datas

mov

ds,ax

mov

ah,0

mov

al,3

int

10h

mov

dh,0

mov

dl,0

;起始坐标位置dh=行号,dl=列号

mov

bl,0e4h

;BL为颜色效果,前景色=1110棕色,背景色=0100红色

mov

al,0

;AL=要输出字符的ASCII码。此时ASCII码=0时,表示该字符看不见;ASCII码=‘A’时,表示该字符为在屏幕上输出A字符。

mov

cx,25*80

;CL=每个字符显示的次数,25*80=2000个,正好整个屏幕

mov

ah,9

;9号子功能:输出字符,且属性改变。BL为显示的颜色;CL为显示次数;AL为显示的字符的ASCII码;DX为显示的坐标位置

int

10h

;调用中断号为10H的中断,该中断为显示中断例3:图形显示程序编写图形显示程序的主要步骤:(1)

选择显示器的图形工作模式(2)

确定显示区域(3)

确定算法(4)

编程实现通常在图形方式下,要用的主要功能:

0号功能–设置工作方式

11号功能–设置彩色组或背景颜色

12号功能–写点STACKSEGMENTSTACK DB200DUP(?)STACKENDSCODESEGMENT ASSUMECS:CODE,SS:STACKSTART:MOVAH,0 ;设置320X200COLOR图形模式

MOVAL,5INT10HMOVAH,11 ;设置黄色背景

MOVBH,0 MOVBL,0EHINT10HMOVAH,11 ;选择彩色组0MOVBH,1MOVBL,0INT10HMOVDX,0 ;准备子程序RED的入口条件

MOVCX,150CALLRED ;显示一条垂直线

MOVDX,0MOVCX,170CALLRED MOVDX,10 LOPB:MOVCX,151LOPC:MOVAL,1;按指定颜色画一横线

MOVAH,12INT10HINCCXCMPCX,170JBLOPCADDDX,10CMPDX,200JBLOPBMOVAH,4CHINT21HREDPROCLOPA:MOVAH,12MOVAL,2;按指定颜色画一垂直线

INT10HINCDXCMPDX,200JBELOPARETREDENDPCODEENDSENDSTART

(二)、键盘I/O中断调用(中断类型号:16H)BIOS中键盘I/O的中断类型号为16H,有3种子功能。软中断指令“INT 16H”实现其功能调用。1.读字符(功能号0)入口参数:(AH)=0出口参数:(AL)=键入字符的ASCII码

2.读字符并置ZF标志(功能号1)入口参数:(AH)=1出口参数:(AL)=键入字符的ASCII码,若按过任一键(即键盘缓冲区不空),ZF=0,否则,ZF=1。

3.读特殊功能键的状态(功能号2)入口参数:(AH)=2出口参数:(AL)=特殊功能键的状态

(三)、打印机I/O中断调用(中断类型号:17H)BIOS打印机I/O的中断类型号为17H,有3种子功能。软中断指令“INT 17H”实现其功能调用。1.打印字符(功能号0)入口参数:(AH)=0,(DX)=打印机号,(AL)=打印字符的ASCII出口参数:无

2.初始化打印机(功能号1)入口参数:(AH)=1,(DX)=打印机号,(AL)=初始化命令码出口参数:无

3.读打印机状态(功能号2)入口参数:(AH)=2,(DX)=打印机号出口参数:(AL)=打印机状态6.5 磁盘文件管理程序设计

一、 概述DOS系统调用提供了两种磁盘文件管理功能1、传统文件管理方式2、扩充文件管理方式利用这些功能,用户可以不必关心文件以何种形式存储和磁盘I/O的具体细节,一个简单的调用就可很方便的实现对文件的操作。通常使用扩充磁盘文件管理方式(比传统的文件管理用户程序的接口简单,读写操作方便,并且支持树形目录结构)。6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用1、文件说明与文件代号扩充磁盘文件管理方式通过文件句柄实现对文件的操作,使用方法简单灵活。当建立或打开一个文件时,必须用一个ASCII-Z串(既一个以0结尾的ASCII码串)对文件进行说明,这个串称为路径名。其格式如下:

[d:][path]filename[.ext]例如:PATHNM DB ‘D:\MASM\TEST1.ASM’,0

路径名登录系统后,DOS分配给文件一个16位二进制的控制字,称为句柄,程序通过这个句柄就可以很方便的实现对文件进行操作。在DOS中,标准外设也作为文件并分配有标准句柄:

句柄00000001000200030004设备名标准输入标准输出错误输出异步通信打印机6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用文件代号/句柄/DOS分配给文件一个16位二进制的控制字6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用2、文件特性(文件属性)文件属性用一个字节表示,常见的文件属性描述如下:一个文件可以有多个属性。例如,用DOS命令ATTRIB查看MSDOS.SYS文件的属性,显示结果为:SHR MSDOS.SYS /C:MSDOS.SYS属性符号表示说明00H

普通文件01HR

只读文件02HH

隐含文件04HS

系统文件6.5 磁盘文件管理程序设计

二、常用的扩充磁盘文件管理功能调用

3、错误返回码扩充磁盘文件管理功能调用出口时,用标志位CF表示调用操作成功与否。CF=0,表示调用成功;CF=1,表示调用失败,此时AX中存放有错误代码,常见的错误代码如下:

错误码

错误原因1无效的功能号2文件未找到3路径未找到4同时打开的文件太多5拒绝访问6无效文件句柄6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(1)建立文件(功能号3CH)入口参数:(AH)=3CH,DS:DX=路径名字符串首址

(CX)=文件属性出口参数:CF=0:(AX)=文件句柄

CF=1:(AX)=错误码

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(2)打开文件(功能号3DH)入口参数:(AH)=3DH,DS:DX=路径名字符串首址

(AL)=存取方式访问码出口参数:CF=0:(AX)=文件句柄

CF=1:(AX)=错误码说明: 存取方式访问码:00H 只读方式

01H 只写方式

02H 读写方式

6.5 磁盘文件管理程序设计6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(3)关闭文件(功能号3EH)入口参数:(AH)=3EH,BX=文件句柄出口参数:CF=0:操作成功CF=1:操作失败6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(4)读文件(功能号3FH)入口参数:(AH)=3FH,(BX)=文件句柄,(CX)=要读的字节数

DS:DX 指向存放数据的缓冲区出口参数:CF=0:读成功,(AX)=实际读入的字节数。 CF=1:读失败,(AX)=错误码说明:(1)通常情况下,实际读入的字节数=要读的字节数

除非不够读。

(2)缓冲区的大小应保证容纳要读的数据

(3)文件以读或读写方式打开

(4)读文件后,文件指针将定位下一待读字节处。

6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(5)写文件(功能号40H)入口参数:(AH)=40H,(BX)=文件句柄,(CX)=要写的字节数

DS:DX 指向待写数据的缓冲区出口参数:CF=0:写成功,(AX)=实际写入的字节数。

CF=1:写失败,(AX)=错误码说明:(1)通常情况下,实际写入的字节数=要写的字节数 除非磁盘满。

(2)文件以写或读写方式打开

(3)写文件后,文件指针将定位下一待写第一字节处。6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(6)

移动文件读写指针(功能号42H)入口参数:(AH)=42H,(BX)=文件句柄,(AL)=移动方式

(CX:DX)=移动位移量(双字)出口参数:CF=0:成功,(DX:AX)=移动后的文件指针值。 CF=1:失败,(AX)=错误码说明:(1)文件指针(双字)是以文件首字节为0计算的。

(2)移动方式及其意义如下:

00H 移动后文件指针值=0(文件头)+位移量

01H 移动后文件指针值=当前指针值+位移量

02H 移动后文件指针值=文件长度(文件尾)+位移量

(3)在第一种方式中,移动位移量总是正数。

(4)在后两种方式中,移动位移量可正可负。该子功能不考虑文件指针是否超出范围。

6.5 磁盘文件管理程序设计

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(7)置/取文件属性(功能号43H)入口参数:(AH)=43H, DS:DX=路径名字符串首址

(AL)=操作模式;0:取文件属性;1:置文件属性

(CX)=文件属性

[(AL)=1]出口参数:(CX)=文件属性

[(AL)=0]

二、 常用的扩充磁盘文件管理功能调用4、常用的扩充磁盘文件管理系统功能调用(8)

删除文件(功能号41H)入口参数:(AH)=41H,DS:DX=路径名字符串首址出口参数:CF=0:操作成功。

CF=1:操作失败。说明:只能删除普通文件。

6.5 磁盘文件管理程序设计6.5 磁盘文件管理程序设计

三、 磁盘文件管理程序设计举例例1.在E盘上建立文件FILE1,假定文件属性为0(普通文件),文件的信息从键盘输入,文件结束标志为^Z(ASCII码为1AH)。

建立文件AH=3CH接受文件信息写文件AH=40H关闭文件AH=3EH

STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTF_NUMDW?CERRORDB'CREATEERROR!',0AH,0DH,'$'WERRORDB'WRITEERROR!',0AH,0DH,'$'PLEASEDB'PLEASEINPUT:',0AH,0DH,'$'NOSPACEDB'NOSPACE!',0AH,0DH,'$'F_NAMEDB‘E:\FILE1',0BUFINDB32767DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXMOVAH,3CH ;建立文件

MOVCX,0LEADX,F_NAMEINT21HJNCPAST1 LEADX,CERROR ;建立失败

MOVAH,9INT21HJMPEXITPAST1:MOVF_NUM,AX ;文件句柄送F-NUMLEADX,PLEASE ;输入提示

MOVAH,9INT21HLEADI,BUFININPUT:MOVAH,1INT21HMOV[DI],ALINCDICMPAL,1AH ;是否文件结束符^ZJEENDINCMPAL,0DH ;判回车,转换成换行

JNEINPUTMOVDL,0AHMOV[DI],DLINCDIMOVAH,2 ;显示输出换行符

INT 21HJMPINPUTENDIN:MOVAH,40H ;写文件

MOVBX,F_NUMLEADX,BUFINSUBDI,DXMOVCX,DIINT21HJCPWERRORCMPAX,CXJEPAST2LEADX,NOSPACE ;显示磁盘空间不够

MOVAH,9INT21HPAST2:MOVAH,3EH ;关闭文件

INT21HEXIT:MOVAH,4CHINT

温馨提示

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

评论

0/150

提交评论