版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/8/2,第6章 输入/输出程序设计,1,8086/8088和ARM核汇编语言程序设计,第6章 输入/输出程序设计,2020/8/2,第6章 输入/输出程序设计,2,6.1 输入/输出指令,6.2 CPU与外设传送数据的控制方式,6.3 程序查询传送方式,第6章 输入/输出程序设计,6.4 中断传送方式,2020/8/2,第6章 输入/输出程序设计,3,6.1.1 I/O端口编址方式,6.1 输入/输出指令,(1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。 (2)独立编址:内存与I/
2、O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足存储空间的寻址范围。,2020/8/2,第6章 输入/输出程序设计,4,6.1.1 I/O端口编址方式,6.1 输入/输出指令,2020/8/2,第6章 输入/输出程序设计,5,6.1.2 输入/输出指令,6.1 输入/输出指令,I/O指令: 输入指令: IN AL,PORT IN AX,PORT IN AL,DX IN AX,DX 输出指令: OUT PORT,AL OUT PORT,AX OUT DX,AL
3、 OUT DX,AX PORT: 端口地址 若地址值255,可直接寻址(寻址范围256个端口); 否则, 需经寄存器DX间接寻址(寻址范围64K个端口),2020/8/2,第6章 输入/输出程序设计,6,6.1.3 I/O端口寻址方式,6.1 输入/输出指令,1直接I/O端口寻址方式,这种寻址方式就是直接书写端口地址,由于这种寻址方式的指令编码是两字节的,其中第一字节是操作码,第二字节存放端口地址。所以这种寻址方式仅能对256个8位或16位端进行输入输出。例如: IN AL,n IN AX,n OUT n,AL OUT n,AX 其中,n0255,2020/8/2,第6章 输入/输出程序设计,
4、7,6.1.3 I/O端口寻址方式,6.1 输入/输出指令,2间接I/O端口寻址方式 这种寻址方式是用寄存器DX表示端口地址。采用这种寻址方式的输入/输出指令是单字节编码。由于DX是16位寄存器,所以这种寻址方式可对065535个端口地址进行访问: IN AL,DX IN AX,DX OUT DX, AL OUT DX, AX,在程序设计中,这种寻址方式比较灵活。因为在程序中,只要修改DX的内容就可以用同一条输入/输出指令去访问不同的端口,实现可变端口的输入/输出。,2020/8/2,第6章 输入/输出程序设计,8,6.1 输入/输出指令,6.3 程序查询传送方式,第6章 输入/输出程序设计,
5、6.4 中断传送方式,6.2 CPU与外设传送数据的控制方式,2020/8/2,第6章 输入/输出程序设计,9,6.2 CPU与外设传送数据的控制方式,主机与外设之间的数据传送(控制)方式有: 程序查询传送方式 程序中断传送方式 直接存储器存取(DMA)方式 I/O处理机方式(简称IOP协处理机方式)。,查询方式,先查询外设的状态,后进行输入/输出操作的工作方式,称为查询式输入/输出方式。外设的状态是通过输入指令读外设的状态寄存器获得的。每个状态寄存器都有对应的地址,称为端口地址。,2020/8/2,第6章 输入/输出程序设计,10,6.2 CPU与外设传送数据的控制方式,图6.2 主机与外设
6、间传送的信息,2020/8/2,第6章 输入/输出程序设计,11,【例】向打印机输出字符。,6.2 CPU与外设传送数据的控制方式,2020/8/2,第6章 输入/输出程序设计,12,2程序中断传送方式,6.2 CPU与外设传送数据的控制方式,从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。 为了解决这个矛盾,提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由
7、外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。,2020/8/2,第6章 输入/输出程序设计,13,3直接存储器存取(DMA)传送方式,6.2 CPU与外设传送数据的控制方式,中断输入/输出方式可以大大提高CPU的效率,但仍需要CPU通过程序进行传送。每次中断处理需要保护断点、保护现场及恢复现场、恢复断点,这些操作都要占用CPU的额外时间。对于
8、高速的外部设备在成批地交换数据时,这种中断传送方式就显得太慢,因而不能满足高速交换数据的要求。DMA方式能摆脱CPU的直接干预,利用硬件控制设备DMA控制器(DMAC),实现外部设备与内存间的直接数据传送。,2020/8/2,第6章 输入/输出程序设计,14,6.1 输入/输出指令,第6章 输入/输出程序设计,6.4 中断传送方式,6.2 CPU与外设传送数据的控制方式,6.3 程序查询传送方式,2020/8/2,第6章 输入/输出程序设计,15,6.3 程序查询传送方式,问题分析:发送给打印机的字符,暂存于控制器中的数据锁存器。打印机的状态存放在控制器的缓冲器中,使用查询方式控制打印过程时,
9、在每把一个字符送到控制器后,都要先查询打印机的状态信息是否为忙(BUSY为0)。如不忙,则发送选通信号,启动打印机取走字符并打印。若为忙,则重新查询,直到不忙时为止。,例6.1 输出字符至打印机。设打印机控制器有3个端出:数据端口的端口地址为378H,状态端口地址为379H,控制端口地址为37AH。在PC机中,打印机通过打印控制器与CPU连接。,2020/8/2,第6章 输入/输出程序设计,16,程序如下: MOV BX,OFFSET BUFFER MOV CX,COUNT BG: MOV AL,BX ;取字符 MOV DX,378H OUT DX,AL ;输出字符到控制器 MOV DX, 3
10、79H WT: IN AL, DX ;读入打印机状态 TEST AL,80H ;判忙否 JZ WT MOV DX, 37AH MOV AL, 0DH ;令打印机打印字符 OUT DX,AL MOV AL,0CH OUT DX,AL INC BX ;指向下一个输出字符 LOOP BG,6.3 程序查询传送方式,2020/8/2,第6章 输入/输出程序设计,17,问题分析: 为了采集具有8个模拟量输入的数据,通过端口4的低3位的值选通模拟量IN0,IN1至IN7中的一个,使其通过多路开关把一个被选择的模拟量送至A/D转换器。 A/D转换器的启停则由端口4的D4位加以控制,若D41,则启动A/D转换
11、器进行转换;若D40,使A/D转换器停止转换。 A/D转换器的状态信号EOC是由端口2的D0位输入CPU的,A/D转换后的数字量由端口3送入CPU。因此,端口4为控制端口,端口2为状态端口,端口3为数据端口。,6.3 程序查询传送方式,例6.2 采用程序查询的数据采集程序。,2020/8/2,第6章 输入/输出程序设计,18,6.3 程序查询传送方式,DATA SEGMENT BUFF DB 8 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DL, 10H ;设置
12、AD启动转换 MOV DI, OFFSET BUFF ;DI指向输入缓冲区 MOV CX, 8 AGAIN: MOV AL, DL AND AL, 0EFH ;使端口4的D4为0 OUT 4, AL ;停止A/D转换 CALL DELAY ;延时等待A/D停止操作 MOV AL, DL OUT 4, AL,程序如下所示。,2020/8/2,第6章 输入/输出程序设计,19,6.3 程序查询传送方式,A1: IN AL, 2 ;读入状态 TEST AL, 01H ;将EOC送CF JZ A1 ;为0,则未推备好 IN AL, 3 ;读入一个A/D转换值 MOV DI, AL INC DI INC
13、 DL ;选择下一个模拟量 LOOP AGAIN MOV AH, 4CH INT 21H CODE ENDS END START,2020/8/2,第6章 输入/输出程序设计,20,6.1 输入/输出指令,6.3 程序查询传送方式,第6章 输入/输出程序设计,6.2 CPU与外设传送数据的控制方式,6.4 中断传送方式,2020/8/2,第6章 输入/输出程序设计,21,6.4 中断传送方式,6.4.1 中断的概念,1中断的引入,中断功能已经成为计算机不可缺少的组成部分。中断的引入具有较多的优点: (1)分时操作 (2)实现实时处理 (3)故障处理,2020/8/2,第6章 输入/输出程序设计
14、,22,3. 中断系统的功能,6.4 中断传送方式,6.4.1 中断的概念,实现中断及返回 (2) 实现优先级处理 (3) 中断嵌套,2. 中断源,引起中断的原因或能发出中断申请的来源,称为中断源。 通常中断源有以下4种: (1) 输入/输出设备 (2) 实时时钟 (3) 故障源 (4) 为调试程序而设置的中断源,2020/8/2,第6章 输入/输出程序设计,23,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,24,8086中断的分类:内部中断和硬件中断,(1)内部中断 内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不
15、受中断标志位状态的影响。8086/8088内部中断有以下5种: 除数为中断类型0中断 溢出中断类型4中断 单步中断类型1中断 断点中断类型3中断 中断指令指令INT n中断,由cpu的某些错误引起,为调试程序而设置的中断,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,25,6.4 中断传送方式,6.4.2 8088/8086中断系统,(2)硬件中断:来自处理机的外条件 所以又称外中断 硬件中断主要有两种来源非屏蔽中断NMI 和 可屏蔽中断INTR。 非屏蔽中断NMI。非屏蔽中断来源于三方: 系统板的RAM在读写时产生奇偶校验错; I
16、/O通道中的扩展选件出现奇偶校验错; 协处理器8087的异常状态产生的中断。 可屏蔽中断INTR。由外部设备通过一片8259A产生的中断请求。,2020/8/2,第6章 输入/输出程序设计,26,外部设备向cpu发出中断请求,cpu是否响应还与IF有关,STI开中断指令 将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求 CLI关中断指令 将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求,6.4 中断传送方式,6.4.2 8088/8086中断系统,从外设发出的中断请求到cpu相应中断,用两个控制条件起决定作用: 1)外设的中断请求是否被屏
17、蔽,2)cpu是否允许相应中断。,2020/8/2,第6章 输入/输出程序设计,27,2. 中断矢量表,6.4 中断传送方式,6.4.2 8088/8086中断系统,中断向量表 在8086系统中,内存最低端的1K字节地址范围内(从00000003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地址,地址较低的两个字节放偏移地址。 中断向量表中的存储地址 中断类型码n4,2020/8/2,第6章 输入/输出程序设计,28,中断类型号的获取 凡与05号中断类型号对应的中断请求,一旦被响应,系统将自动提供中断类型号,
18、并自动地转到中断处理程序中去。 对于可屏蔽的外部中断INTR,则是经过中断控制器8259,在CPU中断响应的第二个周期,通过中断响应信号,将对应的中断类型号送至数据总线。 内部中断是通过INT n指令将中断号直接发送给CPU。,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,29,用指令来为中断类型N设置中断向量: MOVAX,0 MOVES,AX MOVBX,N*4 ;中断入口地址 MOVAX,OFFSET INTHAND MOVES:WORD PRTBX,AX;设置中断处理程序INTHAND MOVAX,SEG INTHAND;的
19、入口地址 MOVES:WORD PRTBX+2,AX, INTHAND:;中断处理程序 IRET,用户可以为保留的中断类型号扩充自己的需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,30,6.4 中断传送方式,6.4.2 8088/8086中断系统,用户在编写自己的中断处理程序代替系统中的某个中断处理功能时,要注意保留原来的中断向量。程序结束时,要恢复原来的中断向量。可以使用dos功能调用来存取中断向量,取中断向量 预置AH=35H, AL=中断类型号 执行INT
20、 21H 把类型号为AL的中断向量取出到ES:BX中 设置中断向量 预置AH=25H, AL=中断类型号,DS:DX=中断向量 执行INT 21H 把DS:DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处,说明:也可以按照课本的方法来设置自己的中断功能。,2020/8/2,第6章 输入/输出程序设计,31,3中断处理程序结构,6.4 中断传送方式,6.4.2 8088/8086中断系统,中断处理程序的结构与子程序(即过程)相似,可用定义过程的方式来定义中断处理程序。所有编写过程的一些规定和要求均适用于中断处理程序,包括用伪指令PROC/ENDP定义过程为远类型。,中断处理程序的典型
21、结构,(1)现场保护 (2)中断返回 (3)中断嵌套 (4)发中断结束命令,2020/8/2,第6章 输入/输出程序设计,32,例6.4 中断处理程序的一般结构的程序如下。 INTPRG PROC FAR PUSH DS PUSH DX PUSH AX PUSH BX STI ;开中断 CLI ;关中断 MOV AL, 20H ;发中断结束命令EOI OUT 20H, AL POP DI ;恢复现场 POP BX POP AX POP DX POP DS IRET ;中断返回 INTPRG ENDP 由于IRET将恢复中断前的标志,故IF也被恢复。,6.4 中断传送方式,6.4.2 8088/
22、8086中断系统,2020/8/2,第6章 输入/输出程序设计,33,4用户软中断的设置,6.4 中断传送方式,6.4.2 8088/8086中断系统,通常增加一个新的软中断,应完成下面一些操作。 选择一个可用的中断类型号n。 编写新的软中断处理程序。 将新的软中断处理程序的入口地址写入到中断矢量表的4n起的4个字节中。,2020/8/2,第6章 输入/输出程序设计,34,程序如下: DATA SEGMENT MESS DB This is an example about soft interrupt. $ ERR DB 0AH,ODH,ERROR! $ DATA ENDS EXTRN IN
23、T4AH FAR CODE SEGMENT ASSUME CS:CODE,DS:DATA BG: MOV AX,SEG INT4AH ;添加中断矢量表,例6.5 利用空闲中断类型号4AH实现软中断设置。,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,35,6.4 中断传送方式,6.4.2 8088/8086中断系统,MOV DS, AX MOV DX, OFFSET INT4AH MOV AX, 254AH ;置AH为25H,AL为4AH INT 21H MOV AX, DATA MOV DS, AX MOV AX, OFFSET
24、MESS INT 4AH CMP AH,0FFH ;判超过256个字符否 JE ER ;超过转ER MOV AH, 4CH INT 21H ER: LEA DX, ERR ;显示错误信息 MOV AH, 9 INT 21H MOV AH, 4CH INT 21H CODE ENDS END BG,2020/8/2,第6章 输入/输出程序设计,36,INT4AH处理程序如下所示。 CSEG SEGMENT ASSUME CS:CSEG PUBLIC INT4AH INT4AH PROC FAR PUSH DX ;保护现场 PUSH CX PUSH SI MOV CX, 0 ;CX为字符数计数器
25、MOV SI, AX ;SI为字符串首地址 LP: MOV AL, SI CMP AL, $ ;判是否是字符串尾 JZ OVER MOV DL, AL ;显示字符 MOV AH, 2 INT 21H INC SI INC CX ;字符计数 JMP LP,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,37,OVER: MOV AX, CX CMP AH, 0 JE DONE ;未超过256字符 MOV AH, 0FFH ;超过256字符 DONE: POP SI ;恢复现场 POP CX POP DX IRET ;中断返回 INT 4
26、AH ENDP CSEG ENDS END,6.4 中断传送方式,6.4.2 8088/8086中断系统,2020/8/2,第6章 输入/输出程序设计,38,6.4 中断传送方式,6.4.3 中断传送方式程序举例,问题分析: 本例利用中断方式编写中断处理程序,类型为70H,实现打印机输出功能。 由于编写的是70H类型的软中断,因而应在主程序中将处理程序的入口地址写入中断矢量表中,然后利用INT 70H便进入软中断,执行中断处理程序。,例6.6 设打印机的数据端口地址为378H,状态端口地址为379H,状态D7为0时则忙,控制端口地址为37AH。当打印机不工作在中断方式时,控制字为0CH,表示可
27、对打印机进行读取和输出,启动打印机,向打印机送数据。当控制字为0DH,给打印机送数据选通位置1。,2020/8/2,第6章 输入/输出程序设计,39,6.4 中断传送方式,6.4.3 中断传送方式程序举例,SSEG SEGMENT STACK DW 100 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG PRINTO PROC FAR STI PUSH ES PUSH DI PUSH DS PUSH CX PUSH DX PUSH BX PUSH AX MOV DX,378H ;指向数据端口 OUT DX,AL ;送打印数据,程序如下:,2020/8/2,第6章 输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中班科学活动纸教案
- 中国会议用水市场需求变化与营销策略报告
- 中国会展边缘计算技术应用与实时响应系统报告
- 中国会展节能环保技术推广与碳中和路径报告
- 中国会展经济对区域发展带动效应评估报告
- 中班科学教案秋天的宝贝
- 语文第17课《壶口瀑布》教学设计-2025-2026学年统编版语文八年级下册
- 2026年智慧树思修测试题及答案
- 2026年老年综合评估测试题及答案
- 2025年海航MPT人才选拔考试内部专属题库附完整参考答案
- 2025统编版道德与法治小学六年级下册每课教学反思(附教材目录)
- 高中主题班会 安全第一课护航开学季!高中开学第一课主题班会安全教育课件
- 《经络与腧穴》课件-手厥阴心包经
- 后厨安全培训
- 零红蝶全地图超详细攻略
- 东风风神AX7使用手册201410
- 医生护士家长进课堂助教儿童医学小常识课件
- DLT 572-2021 电力变压器运行规程
- 主题二第2课我给学校提建议(教学设计)教科版六年级下册综合实践活动
- 材料成形工艺基础智慧树知到期末考试答案章节答案2024年华东交通大学
- 房屋验收授权委托书样本模板
评论
0/150
提交评论