版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8086/8088和ARM核汇编语言程序设计第6章输入/输出程序设计
教学要求
1.了解I/O设备的数据传送方式
2.掌握I/O程序的设计方法2/3/20231第1章汇编语言基础知识6章输入/输出程序设计6.1输入/输出指令6.2CPU与外设传送数据的控制方式6.3程序查询传送方式第6章输入/输出程序设计
6.4中断传送方式
2/3/20232第1章汇编语言基础知识6章输入/输出程序设计中央处理机
CPU总线控制逻辑接口接口存储器大容量存储器I/O设备I/O子系统系统总线......2/3/20233第1章汇编语言基础知识6章输入/输出程序设计为什么需要I/O接口(电路)?微机的外部设备多种多样工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大它们不能与CPU直接相连必须经过中间电路再与系统相连这部分电路被称为I/O接口电路多种外设2/3/20234第1章汇编语言基础知识6章输入/输出程序设计多种多样的外设工作原理不同机械、电子、机电、电磁……传送信息类型多样数字量、模拟量、开关量传送速度差别极大传送方式不尽相同串行、并行编码方式不同二进制、BCD码、ASCII码……返回2/3/20235第1章汇编语言基础知识6章输入/输出程序设计什么是I/O接口(电路)?I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路CPU接口电路
I/O设备2/3/20236第1章汇编语言基础知识6章输入/输出程序设计控制总线CB地址总线ABI/O接口电路数据控制状态数据总线DBCPU外设控制寄存器状态寄存器数据寄存器2/3/20237第1章汇编语言基础知识6章输入/输出程序设计6.1.1I/O端口编址方式
6.1输入/输出指令(1)统一编址:
I/O地址空间独立于存储地址空间如8086/8088(2)独立编址: 它们共享一个地址空间 如M6800接口电路占用的I/O端口有两类编排形式2/3/20238第1章汇编语言基础知识6章输入/输出程序设计第6章:⑴I/O端口单独编址优点:I/O端口的地址空间独立控制和地址译码电路相对简单专门的I/O指令使程序清晰易读缺点:I/O指令没有存储器指令丰富内存空间I/O空间FFFFF0FFFF80x86采用I/O端口独立编址2/3/20239第1章汇编语言基础知识6章输入/输出程序设计第6章:⑵I/O端口与存储器统一编址优点:不需要专门的I/O指令I/O数据存取与存储器数据存取一样灵活缺点:I/O端口要占去部分存储器地址空间程序不易阅读(不易分清访存和访问外设)内存部分I/O部分存储器空间00000FFFFF2/3/202310第1章汇编语言基础知识6章输入/输出程序设计6.1.2输入/输出指令
6.1输入/输出指令输入指令(IN:将外设数据传送给CPU内的AL/AX)INAL,PORT ;字节输入INAL,DX ;字节输入INAX,PORT ;字输入INAX,DX ;字输入输出指令(OUT:将CPU内的AL/AX数据传送给外设)OUTPORT,AL ;字节输出OUTDX,AL ;字节输出OUTPORT,AX ;字输出OUTDX,AX ;字输出2/3/202311第1章汇编语言基础知识6章输入/输出程序设计8088/8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00H~FFH前256个端口,操作数i8表示端口号间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式2/3/202312第1章汇编语言基础知识6章输入/输出程序设计第6章:IN指令实例(从20H端口输入一个字);方法1:直接寻址,字量输入
inax,20h;方法2:间接寻址,字量输入
movdx,20h
inax,dx2/3/202313第1章汇编语言基础知识6章输入/输出程序设计第6章:OUT指令实例(向300H端口输出一个字节);唯一的方法:间接寻址,字节量输出
mov
al,bvar
;bvar是字节变量
movdx,300h
outdx,al2/3/202314第1章汇编语言基础知识6章输入/输出程序设计6.1.3
I/O端口寻址方式
6.1输入/输出指令1.直接I/O端口寻址方式这种寻址方式就是直接书写端口地址,由于这种寻址方式的指令编码是两字节的,其中第一字节是操作码,第二字节存放端口地址。所以这种寻址方式仅能对256个8位或16位端进行输入/输出。例如:
INAL,nINAX,nOUTn,ALOUTn,AX其中,n=0~255
2/3/202315第1章汇编语言基础知识6章输入/输出程序设计6.1.3
I/O端口寻址方式
6.1输入/输出指令
2.间接I/O端口寻址方式这种寻址方式是用寄存器DX表示端口地址。采用这种寻址方式的输入/输出指令是单字节编码。由于DX是16位寄存器,所以这种寻址方式可对0~65535个端口地址进行访问:
INAL,DXINAX,DXOUT
DX,ALOUTDX,AX在程序设计中,这种寻址方式比较灵活。因为在程序中,只要修改DX的内容就可以用同一条输入/输出指令去访问不同的端口,实现可变端口的输入/输出。2/3/202316第1章汇编语言基础知识6章输入/输出程序设计6.1输入/输出指令6.3程序查询传送方式第6章输入/输出程序设计
6.4中断传送方式
6.2CPU与外设传送数据的控制方式
2/3/202317第1章汇编语言基础知识6章输入/输出程序设计6.2CPU与外设传送数据的控制方式主机与外设之间的数据传送(控制)方式有:●程序查询传送方式●程序中断传送方式●直接存储器存取(DMA)方式●
I/O处理机方式(简称IOP协处理机方式)。2/3/202318第1章汇编语言基础知识6章输入/输出程序设计1.查询方式CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换查询传送的特点是:工作可靠,适用面宽,但传送效率低2/3/202319第1章汇编语言基础知识6章输入/输出程序设计查询传送的两个环节⑴查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪⑵传送环节寻址数据口是输入,通过输入指令从数据端口读入数据是输出,通过输出指令向数据端口输出数据输入状态就绪?数据交换YN流程2/3/202320第1章汇编语言基础知识6章输入/输出程序设计2.程序中断传送方式CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序2/3/202321第1章汇编语言基础知识6章输入/输出程序设计主程序与中断服务程序主程序对外设进行处理IRET中断服务程序断点中断请求中断请求可以来自处理器外部的中断源,也可以由处理器执行指令引起:例如执行INTi8指令。继续执行流程2/3/202322第1章汇编语言基础知识6章输入/输出程序设计第6章:
中断传送中断传送是一种效率更高的程序传送方式进行传送的中断服务程序是预先设计好的中断请求是外设随机向CPU提出的CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚本书主要论述中断在输入和输出方面的应用中断还有着非常广泛的应用2/3/202323第1章汇编语言基础知识6章输入/输出程序设计3.直接存储器存取(DMA)传送方式希望克服程序控制传送的不足:外设→CPU→存储器外设←CPU←存储器直接存储器存取DMA:外设→存储器外设←存储器CPU释放总线,由DMA控制器管理2/3/202324第1章汇编语言基础知识6章输入/输出程序设计第6章:DMA传送的工作过程⑴CPU对DMA控制器进行初始化设置⑵外设、DMAC和CPU三者通过应答信号建立联系:CPU将总线交给DMAC控制⑶DMA传送DMA读存储器:存储器→外设DMA写存储器:存储器←外设⑷自动增减地址和计数,判断传送完成否2/3/202325第1章汇编语言基础知识6章输入/输出程序设计第6章:DMA传送流程HLDA发存储器地址传送数据传送结束?DMA结束修改地址指针流程2/3/202326第1章汇编语言基础知识6章输入/输出程序设计第6章:传送方式的比较无条件传送:慢速外设需与CPU保持同步查询传送:简单实用,效率较低中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送2/3/202327第1章汇编语言基础知识6章输入/输出程序设计6.2CPU与外设传送数据的控制方式图6.2主机与外设间传送的信息2/3/202328第1章汇编语言基础知识6章输入/输出程序设计C
P
U打
印
机
控
制
器打印机DBSTBBUSYCB
DB
AB图
打印机连接示意图
【例】向打印机输出字符。6.2CPU与外设传送数据的控制方式2/3/202329第1章汇编语言基础知识6章输入/输出程序设计6.1输入/输出指令第6章输入/输出程序设计
6.4中断传送方式
6.2CPU与外设传送数据的控制方式
6.3程序查询传送方式
第十八讲2/3/202330第1章汇编语言基础知识6章输入/输出程序设计6.3程序查询传送方式
问题分析:发送给打印机的字符,暂存于控制器中的数据锁存器。打印机的状态存放在控制器的缓冲器中,使用查询方式控制打印过程时,在每把一个字符送到控制器后,都要先查询打印机的状态信息是否为忙(BUSY为0)。如不忙,则发送选通信号,启动打印机取走字符并打印。若为忙,则重新查询,直到不忙时为止。例6.1
输出字符至打印机。设打印机控制器有3个端出:数据端口的端口地址为378H,状态端口地址为379H,控制端口地址为37AH。在PC机中,打印机通过打印控制器与CPU连接。2/3/202331第1章汇编语言基础知识6章输入/输出程序设计程序如下:
MOVBX,OFFSETBUFFERMOVCX,COUNTBG:MOVAL,[BX];取字符
MOVDX,378HOUTDX,AL
;输出字符到控制器
MOVDX,379HWT:INAL,DX;读入打印机状态
TESTAL,80H;判忙否
JZWT
MOVDX,37AHMOVAL,0DH;令打印机打印字符
OUTDX,ALMOVAL,0CHOUTDX,ALINCBX;指向下一个输出字符
LOOPBG6.3程序查询传送方式
2/3/202332第1章汇编语言基础知识6章输入/输出程序设计第6章:例2:采用查询方式的打印字符程序BUSY
DATA0~78255APC7PC2PA0~PA7打印机STROBE2/3/202333第1章汇编语言基础知识6章输入/输出程序设计第6章:打印机接口的信号与时序BUSYDATA0~7ACKSTROBE主机把数据送给引脚DATA0~DATA7同时送出数据选通信号STROBE*打印机在BUSY信号线上发出忙信号打印机处理好输入的数据时撤消忙信号同时又送出一个响应信号ACK*2/3/202334第1章汇编语言基础知识6章输入/输出程序设计第6章:例2:(续);8255A初始化
mov
dx,0fffeh
;控制端口地址:FFFEH
moval,10000001b
;方式控制字:91H
outdx,al
;A端口方式0输出,C端口上输出、下输入
moval,00001111b;端口C的复位置位控制字,使PC7=1
outdx,al;打印子程序:查询Printcproc
pushaxpushdxprn:mov
dx,0fffch
;读取端口C
inal,dx
;查询打印机状态
andal,04h
;PC2=BUSY=0?
jnz
prn
;PC2=1,打印机忙,则循环等待2/3/202335第1章汇编语言基础知识6章输入/输出程序设计第6章:例2:(续);打印子程序:输出
mov
dx,0fff8h
;PC2=0,打印机不忙,则输出数据
moval,ahoutdx,al;将打印数据从端口A输出
:打印子程序:打印
mov
dx,0fffeh
;从PC7送出控制低脉冲
moval,00001110B
;置STROBE*=0outdx,al
nop
;产生一定宽度的低电平
nop
moval,00001111B
;置STROBE*=1outdx,al;最终,STROBE*产生低脉冲信号
popdxpopaxretprintc
endp2/3/202336第1章汇编语言基础知识6章输入/输出程序设计问题分析:为了采集具有8个模拟量输入的数据,通过端口4的低3位的值选通模拟量IN0,IN1至IN7中的一个,使其通过多路开关把一个被选择的模拟量送至A/D转换器。
A/D转换器的启停则由端口4的D4位加以控制,若D4=1,则启动A/D转换器进行转换;若D4=0,使A/D转换器停止转换。
A/D转换器的状态信号EOC是由端口2的D0位输入CPU的,A/D转换后的数字量由端口3送入CPU。因此,端口4为控制端口,端口2为状态端口,端口3为数据端口。6.3程序查询传送方式
例6.2采用程序查询的数据采集程序。2/3/202337第1章汇编语言基础知识6章输入/输出程序设计6.3程序查询传送方式
DATASEGMENTBUFFDB8DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDL,10H;设置AD启动转换
MOVDI,OFFSETBUFF;DI指向输入缓冲区
MOVCX,8AGAIN:MOVAL,DLANDAL,0EFH;使端口4的D4为0OUT4,AL;停止A/D转换
CALLDELAY;延时等待A/D停止操作
MOVAL,DLOUT4,AL
程序如下所示。2/3/202338第1章汇编语言基础知识6章输入/输出程序设计6.3程序查询传送方式
A1:INAL,2;读入状态
TESTAL,01H;将EOC送CFJZA1;为0,则未推备好
INAL,3;读入一个A/D转换值
MOV[DI],AL INCDI INCDL;选择下一个模拟量
LOOPAGAIN MOVAH,4CH INT21H CODEENDSENDSTART2/3/202339第1章汇编语言基础知识6章输入/输出程序设计6.1输入/输出指令6.3程序查询传送方式第6章输入/输出程序设计
6.2CPU与外设传送数据的控制方式
6.4中断传送方式
2/3/202340第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
8088的中断系统采用向量中断机制能够处理256个中断用中断向量号0~255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理2/3/202341第1章汇编语言基础知识6章输入/输出程序设计6.48086的中断分类非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTN指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源
INTA内部中断除法错中断指令中断溢出中断单步中断外部中断非屏蔽中断可屏蔽中断2/3/202342第1章汇编语言基础知识6章输入/输出程序设计1.内部中断内部中断是由于8088内部执行程序出现异常引起的程序中断利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用2/3/202343第1章汇编语言基础知识6章输入/输出程序设计⑴
除法错中断在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断例如:movbl,0idiv
bl
;除数BL=0,产生除法错中断movax,200hmovbl,1divbl
;商=200H,不能用AL表达 ;产生除法错中断2/3/202344第1章汇编语言基础知识6章输入/输出程序设计⑵
指令中断在执行中断调用指令INTn时产生的一个向量号为n(0~255)的内部中断,称为指令中断其中向量号为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT3指令实现的2/3/202345第1章汇编语言基础知识6章输入/输出程序设计⑶
溢出中断在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断例如:movax,2000haddax,7000h
;2000H+7000H=9000H,溢出:OF=1into ;因为OF=1,所以产生溢出中断2/3/202346第1章汇编语言基础知识6章输入/输出程序设计⑷
单步中断若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试2/3/202347第1章汇编语言基础知识6章输入/输出程序设计2.外部中断外部中断是由于8088外部提出中断请求引起的程序中断利用外部中断,微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt)内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception)2/3/202348第1章汇编语言基础知识6章输入/输出程序设计⑴
非屏蔽中断通过非屏蔽中断请求信号向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断8088的非屏蔽中断的向量号为2,非屏蔽中断请求信号为NMI非屏蔽中断主要用于处理系统的意外或故障。例如:电源调电前的数据保护存储器读写错误的处理2/3/202349第1章汇编语言基础知识6章输入/输出程序设计⑵
可屏蔽中断外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器8088通常需要配合中断控制器8259A共同处理可屏蔽中断可屏蔽中断主要用于主机与外设交换数据2/3/202350第1章汇编语言基础知识6章输入/输出程序设计第6章:中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF=1执行指令IRET恢复原IF状态明确IF标志的状态是关键2/3/202351第1章汇编语言基础知识6章输入/输出程序设计第6章:8088的中断向量表中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始256个中断占用1KB区域,就形成中断向量表向量号为N的中断向量的物理地址=N×42/3/202352第1章汇编语言基础知识6章输入/输出程序设计第6章:
中断过程NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF=1NNNNYYYYY查询中断的顺序,决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低2/3/202353第1章汇编语言基础知识6章输入/输出程序设计第6章:中断过程(续)Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)8088各种中断源的优先权,实际上是指被识别出来的先后多种中断同时请求时,最先响应的则可能是单步中断或NMI中断2/3/202354第1章汇编语言基础知识6章输入/输出程序设计第6章:
内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量设置必要的入口参数利用INTn指令调用中断服务程序处理出口参数2/3/202355第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:内部中断服务程序编写80H号中断服务程序,并调用功能:具有显示以“0”结尾字符串的功能,利用显示器功能调用INT10H实现字符显示字符串缓冲区首地址为入口参数:
DS:DX(段地址:偏移地址)传递参数2/3/202356第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的数据段;数据段intoff
dw? ;用于保存偏移地址intseg
dw? ;用于保存段基地址intmsg db‘AInstructionInterrupt!’,0dh,0ah,0以“0”结尾回车、换行2/3/202357第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的获取原中断向量;代码段movax,3580h ;利用DOS功能35H号int21h ;获取原80H中断向量mov
intoff,bx
;保存偏移地址mov
intseg,es
;保存段基地址获取中断向量(DOS功能调用INT21H)功能号:AH=35H入口参数:AL=中断向量号出口参数:ES:BX=中断向量(段地址:偏移地址)2/3/202358第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的设置新中断向量pushdsmov
dx,offsetnew80h ;取中断程序偏移地址mov
ax,segnew80h ;取中断程序段地址mov
ds,axmovax,2580hint21hpopds设置中断向量(DOS功能调用INT21H)功能号:AH=25H入口参数:AL=中断向量号DS:DX=中断向量(段地址:偏移地址)说明:也可以按照课本的方法来设置自己的中断功能。2/3/202359第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的中断调用;设置入口参数: DS=段地址(已设置)
DX=偏移地址mov
dx,offset
intmsg
int80h
;调用80H中断服务程序AInstructionInterrupt!程序功能2/3/202360第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的主程序返回mov
dx,intoff
;恢复原中断向量mov
ax,intsegmov
ds,ax
;改变DSmovax,2580hint21h ;因紧接着返回DOSmovax,4c00h ;故无需恢复DSint21h设置中断向量(DOS功能调用INT21H)功能号:AH=25H入口参数:AL=中断向量号DS:DX=中断向量(段地址:偏移地址)2/3/202361第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的中断服务程序(1);80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX=缓冲器首地址new80h proc
;过程定义
sti
;开中断
pushax
;保护寄存器
pushbx pushsi2/3/202362第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的中断服务程序(2)
mov
si,dxnew1: mov
al,[si] ;读取欲一个显示字符
cmpal,0 ;为结尾“0”,则结束
jznew2
movbx,0 ;采用ROM-BIOS功能调用
movah,0eh
int10h incsi
;准备显示下一个字符
jmpnew12/3/202363第1章汇编语言基础知识6章输入/输出程序设计第6章:例1:的中断服务程序(3)new2: popsi
;恢复寄存器
popbx popax
iret
;中断返回new80h endp
;过程(中断服务程序)结束AInstructionInterrupt!程序功能2/3/202364第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.1中断的概念
1.中断的引入中断功能已经成为计算机不可缺少的组成部分。中断的引入具有较多的优点:(1)分时操作(2)实现实时处理(3)故障处理2/3/202365第1章汇编语言基础知识6章输入/输出程序设计3.中断系统的功能6.4中断传送方式
6.4.1中断的概念实现中断及返回(2)实现优先级处理(3)中断嵌套2.中断源引起中断的原因或能发出中断申请的来源,称为中断源。通常中断源有以下4种:(1)输入/输出设备(2)实时时钟(3)故障源(4)为调试程序而设置的中断源2/3/202366第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.28088/8086中断系统
1.中断源非屏蔽中断请求中断逻辑软中断溢出中断单步中断除法错误2n014CPUNMIIR00IR10IR20IR30IR40IR50IR60IR70825908系统定时器09键盘0ACRT0B保留(通讯)0C串行通讯0D保留(ALT)0E软盘0F保留(打印机)INTR2/3/202367第1章汇编语言基础知识6章输入/输出程序设计8086中断的分类:内部中断和硬件中断(1)内部中断内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:
除数为0中断——类型0中断
溢出中断——类型4中断单步中断——类型1中断
断点中断——类型3中断
中断指令——指令INTn中断由cpu的某些错误引起为调试程序而设置的中断6.4中断传送方式
6.4.28088/8086中断系统
2/3/202368第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.28088/8086中断系统
(2)硬件中断:来自处理机的外条件所以又称外中断
硬件中断主要有两种来源——非屏蔽中断NMI和可屏蔽中断INTR。•非屏蔽中断NMI。非屏蔽中断来源于三方:系统板的RAM在读写时产生奇偶校验错;
I/O通道中的扩展选件出现奇偶校验错;协处理器8087的异常状态产生的中断。•可屏蔽中断INTR。由外部设备通过一片8259A产生的中断请求。2/3/202369第1章汇编语言基础知识6章输入/输出程序设计外部设备向cpu发出中断请求,cpu是否相应还与IF有关STI——开中断指令将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求CLI——关中断指令将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求6.4中断传送方式
6.4.28088/8086中断系统
从外设发出的中断请求到cpu相应中断,用两个控制条件起决定作用:1)外设的中断请求是否被屏蔽,2)cpu是否允许相应中断。2/3/202370第1章汇编语言基础知识6章输入/输出程序设计2.中断矢量表6.4中断传送方式
6.4.28088/8086中断系统
●中断向量表在8086系统中,内存最低端的1K字节地址范围内(从00000-003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地址,地址较低的两个字节放偏移地址。中断向量表中的存储地址=中断类型码n×42/3/202371第1章汇编语言基础知识6章输入/输出程序设计●中断类型号的获取凡与0~5号中断类型号对应的中断请求,一旦被响应,系统将自动提供中断类型号,并自动地转到中断处理程序中去。对于可屏蔽的外部中断INTR,则是经过中断控制器8259,在CPU中断响应的第二个周期,通过中断响应信号,将对应的中断类型号送至数据总线。内部中断是通过INTn指令将中断号直接发送给CPU。6.4中断传送方式
6.4.28088/8086中断系统
2/3/202372第1章汇编语言基础知识6章输入/输出程序设计用指令来为中断类型N设置中断向量:MOV AX,0MOV ES,AXMOV BX,N*4;中断入口地址MOV AX,OFFSETINTHANDMOV ES:WORDPRT[BX],AX ;设置中断处理程序INTHANDMOV AX,SEGINTHAND ;的入口地址MOV ES:WORDPRT[BX+2],AX
┆INTHAND: ;中断处理程序
┆
IRET
●用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。6.4中断传送方式
6.4.28088/8086中断系统
2/3/202373第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.28088/8086中断系统
●用户在编写自己的中断处理程序代替系统中的某个中断处理功能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量取中断向量预置AH=35H,AL=中断类型号执行INT21H——把类型号为AL的中断向量取出到ES:BX中设置中断向量预置AH=25H,AL=中断类型号,DS:DX=中断向量执行INT21H——把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处说明:也可以按照课本的方法来设置自己的中断功能。2/3/202374第1章汇编语言基础知识6章输入/输出程序设计3.中断处理程序结构6.4中断传送方式
6.4.28088/8086中断系统
中断处理程序的结构与子程序(即过程)相似,可用定义过程的方式来定义中断处理程序。所有编写过程的一些规定和要求均适用于中断处理程序,包括用伪指令PROC/ENDP定义过程为远类型。中断处理程序的典型结构
(1)现场保护(2)中断返回(3)中断嵌套(4)发中断结束命令
2/3/202375第1章汇编语言基础知识6章输入/输出程序设计例6.4中断处理程序的一般结构的程序如下。INTPRGPROCFARSTIPUSHDSPUSHDXPUSHAXPUSHBXSTI;开中断
CLI;关中断
MOVAL,20H;发中断结束命令EOIOUT20H,ALPOPDI;恢复现场
POPBXPOPAXPOPDXPOPDSIRET;中断返回
INTPRGENDP由于IRET将恢复中断前的标志,故IF也被恢复。6.4中断传送方式
6.4.28088/8086中断系统
2/3/202376第1章汇编语言基础知识6章输入/输出程序设计4.用户软中断的设置6.4中断传送方式
6.4.28088/8086中断系统
通常增加一个新的软中断,应完成下面一些操作。·选择一个可用的中断类型号n。·编写新的软中断处理程序。·将新的软中断处理程序的入口地址写入到中断矢量表的4×n起的4个字节中。
2/3/202377第1章汇编语言基础知识6章输入/输出程序设计程序如下:DATASEGMENTMESSDB‘Thisisanexampleaboutsoftinterrupt.$’ERRDB0AH,ODH,’ERROR!$’DATAENDSEXTRNINT4AHFARCODESEGMENTASSUMECS:CODE,DS:DATABG:MOVAX,SEGINT4AH;添加中断矢量表例6.5
利用空闲中断类型号4AH实现软中断设置。6.4中断传送方式
6.4.28088/8086中断系统
2/3/202378第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.28088/8086中断系统
MOVDS,AXMOVDX,OFFSETINT4AHMOVAX,254AH;置AH为25H,AL为4AHINT21HMOVAX,DATAMOVDS,AXMOVAX,OFFSETMESSINT4AHCMPAH,0FFH;判超过256个字符否
JEER;超过转ERMOVAH,4CHINT21HER:LEADX,ERR;显示错误信息
MOVAH,9INT21HMOVAH,4CHINT21HCODEENDS
ENDBG2/3/202379第1章汇编语言基础知识6章输入/输出程序设计INT4AH处理程序如下所示。CSEGSEGMENTASSUMECS:CSEGPUBLICINT4AHINT4AHPROCFARPUSHDX;保护现场
PUSHCXPUSHSIMOVCX,0;CX为字符数计数器
MOVSI,AX;SI为字符串首地址LP:MOVAL,[SI]CMPAL,‘$’;判是否是字符串尾
JZOVERMOVDL,AL;显示字符
MOVAH,2INT21HINCSIINCCX;字符计数
JMPLP6.4中断传送方式
6.4.28088/8086中断系统
2/3/202380第1章汇编语言基础知识6章输入/输出程序设计OVER:MOVAX,CXCMPAH,0JEDONE;未超过256字符
MOVAH,0FFH;超过256字符DONE:POPSI;恢复现场
POPCXPOPDXIRET;中断返回
INT4AHENDPCSEGENDSEND6.4中断传送方式
6.4.28088/8086中断系统
2/3/202381第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.3中断传送方式程序举例问题分析:·本例利用中断方式编写中断处理程序,类型为70H,实现打印机输出功能。·由于编写的是70H类型的软中断,因而应在主程序中将处理程序的入口地址写入中断矢量表中,然后利用INT70H便进入软中断,执行中断处理程序。例6.6
设打印机的数据端口地址为378H,状态端口地址为379H,状态D7为0时则忙,控制端口地址为37AH。当打印机不工作在中断方式时,控制字为0CH,表示可对打印机进行读取和输出,启动打印机,向打印机送数据。当控制字为0DH,给打印机送数据.选通位置1。2/3/202382第1章汇编语言基础知识6章输入/输出程序设计6.4中断传送方式
6.4.3中断传送方式程序举例SSEGSEGMENTSTACKDW100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEGPRINTO PROCFARSTI PUSHESPUSHDI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工企业成本控制措施手册
- 高中社团活动管理方案
- 初中八年级生物教案 呼吸与血液循环
- 初二音乐老师学期工作汇报
- 城市湿地修复保护技术方案
- 门诊部托管合同模板范本
- 合作开托管合同
- 抖音账号托管合同协议
- 开放教育试题及答案解析
- 2025年辽宁省北票市高考物理二模测试卷附参考答案详解(能力提升)
- 2025年中国美术学院中国近现代史纲要期末考试模拟题附答案
- 11387《电气传动与调速系统》国家开放大学期末考试题库
- 2025年工业废水处理系统智能加药算法实践案例研究
- 2024嘉兴辅警考试真题及答案
- 2025年车间级安全教育培训考试题及答案
- 126kV气体绝缘金属封闭开关设备GIS
- 《人工智能导论》课件-第六章 利用生成式人工智能策划大学生创新创业活动方案
- 要素式申请执行文书-强制执行申请书模版
- 台球厅员工手册
- 2025-2030中国重症监护医院资源配置与运营优化报告
- 风电场安全知识培训
评论
0/150
提交评论