当前位置:文档之家› ACM+第1课+正确处理输入输出

ACM+第1课+正确处理输入输出

ACM+第1课+正确处理输入输出
ACM+第1课+正确处理输入输出

ACM 第一课正确处理输入输出

一,输入输出原理

之所以我们平时编程输入输出都是在一个黑框框里面完成的,是因为你输入流和输入流都是在这个黑框框里面看到的。所以导致好多同学看到“Sample Input”

1 2

3 4

5 6

7 8

想到的是先把所有输入存起来,然后再输出a+b的结果。因为这样在黑框框里面看到的结果才和标准的一样。

如果你真的明白了什么是输入输出流,你就不会这么写了。

如上图,你给程序一个输入流,经过程序处理后,会给出一个输出流。默认情况下,输入流由键盘敲入,就是俗称的黑框框。输出流的显示也是在黑框框里面。如果我们人工改变它,比如,输入流成了一个文本文档,输出流也成了一个文本文档。

将这两项分开。你现在就应该明白为啥会这样写了吧?

其中用途是将输入流重定向为一个

文档文件in.txt

同理是将输出流重定向为一个

文档文件out.txt

打开当前cpp 文件所在目录

新建一个名字为in 的txt文档,在里面输入

1 3

4 5

6 7

保存,然后执行上一段代码,会自动生成一个out.txt

打开里面,你就看到输出结果

5

9

13

怎样?是不是和题目给的sample in 和sample out 格式看起来一样了?

所以你在考虑编程的时候要把输入输出流分开考虑。不必先把所有输出流存下来然后输出,来一个输一个就OK了。

细心的人会发现我在循环里面写的是

EOF 是end of file 明白了吧?默认系统给他的值是-1 用-1 替换EOF 也行,不过为了程序的可阅读性。还是用EOF好。

为啥不用cin?cin,cout 的处理速度很慢,之所以你没有体会到,是因为给你的用力少,如果给你1000000000个用力,cin 接收字符的速度慢就会被放大,有的题就会超时。所以建议大家全用scanf 和printf 。

Scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, &a, &b );

如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。所以用来结束程序。好多人用while (1)晕,不超时才怪。

二,常见的输入

1),

Input

T he input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.

Sample Input

1 5

10 20

这种输入是以EOF 为文件结尾,所以只要检测EOF就OK了。就是上面我写的那种方法。

2),

Input

Input contains an integer N in the first line, and then N lines follow. Each line consists of a

pair of integers a and b, separated by a space, one pair of integers per line.

Sample Input

2

1 5

10 20

先给出测试用力个数n,然后给出n行。

解决方法就是先接收字符n ,然后控制循环循环n次,每次接收两个数。代码不提供了,自己写。

3),

Input

Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.

Sample Input

1 5

10 20

0 0

结束条件不是EOF了!!是一个指定的0 0 所以你一定别写成EOF 了。好多用例很阴的比如

2 3

4 5

0 0

6 6

4 6

如果用EOF结束,你应该知道发生了啥。。。。。。

方法就是输入两个数,检测一下是不是0 0 ,简单吧?

4),

以上三种情况的组合。

给你举个比较复杂的例子:

Input

Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.

Sample Input

4 1 2 3 4

5 1 2 3 4 5

每行先给一个数字N ,然后后面跟着N个数,以0为结束。所以你只要检测第一个数是否是0 ,如果不是,接收N个字符,是退出。

5),字符输入,比较恶心。

Input

Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets. All characters will be uppercase.

A single data set has 3 components:

Start line - A single line, "START"

Cipher message - A single line containing from one to two hundred characters, inclusive, comprising a single message from Caesar

End line - A single line, "END"

Following the final data set will be a single line, "ENDOFINPUT".

Sample Input

START

NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX

END

START

N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ END

START

IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ

END

ENDOFINPUT

其中有几个特殊字符start end endofinput 读懂题意就明白啥意思了。字符比较就能解决。

主要是怎么去接收这些字符串呢?而且还有空格。

scanf(“%s”,str); 可以么?不行啊,,,有空格,比如第一个他收到NS 就退出了。

gets(str); 可以么?显然他是可以的。但在用gets时要注意题目的输入中是否有数值输入,gets()会吸收‘\n’所以如果是一个数值后面跟着一个字符串,就要先吸收掉一个‘\n’然后再接收字符串。

getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输

入了特定的字符。它的函数声明形式(函数原型)如下:

istream& getline(char line[], int size, char endchar = '\n');

不用管它的返回类型,来关心它的三个参数:

char line[]:就是一个字符数组,用户输入的内容将存入在该数组内。

int size : 最多接受几个字符?用户超过size的输入都将不被接受。

char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。

结合后两个参数,getline可以方便地实现:用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。

char name[4];

cin.getline(name,4,'\n');

由于endchar 默认已经是'\n',所以后面那行也可以写成:

cin.getline(name,4);

相关注意的事项请参考咱们本校资料里面的cin和scanf在使用时的注意事项

三,常见的输出

输出就比较容易了。

1),见的最多

1

3

4

这种输出只要在正常输出的数值后面加个换行符就ok

2),

Output

For each pair of input integers a and b you should output the sum of a and b, and followed by a blank line.

每两个输出之间有空行。好多人刚开始都是用的这种方法:直接两个\n\n 你提交,他会提示你格式出错因为结尾的地方你给了两个空行,显然是不行的。

解决方法是,用一个tag 初值为0 ,当输出的时候检查它是不是0 ,如果是0 ,说明是第一次输出,则输出xxxxxxxxxxxx\n 然后把tag值变成 1 。当第N次(N>1)输出时,检查到tag为1 按照\nxxxxxxxxx\n 输出就OK了。

3),

形如

1 2 3 4 5 6 7 8

2 3 4 5 6 7 8 9

3 4 5 6 7 8 9 0

这种输出看似简单,其实很阴,如果你的输出是“%d空格”那么最后一个输出也有一个空格,如果你的结果正确,提交后肯定是格式出错。

所以怎么解决这个问题呢?还是和2一样,检测,如果是第一次,输出一个数,没有空格,如果不是第一次,空格+数值,最后补个换行。Ok!!

在做题时的一点建议:最好把给的用例粘贴到记事本里面看,然后全选。看看输出是不是有啥特殊的地方。比如刚才的3),如果正常输出的话如下图

如果你的输出最后也有空格

看到了吧?

本文档由郭一伟整理

第六章“输入输出及接口”习题答案

第六章输入输出及接口 〔习题6.2〕 I/O端口与存储器地址常有__????___?和__????___?两种编排方式,8088/8086处理器支持后者,设计有专门的I/O指令。其中指令IN是将数据从__????___?传输到__????___?,执行该指令时8088/8086处理器引脚产生__????___?总线周期。指令“OUT DX, AL”的目的操作数是__????___?寻址方式,源操作数是__????___?寻址方式。 〔解答〕 (I/O端口与存储器地址)统一编址 (I/O端口与存储器地址)独立编址 外设 处理器 I/O读 (I/O端口的DX)寄存器间接 寄存器 〔习题6.4〕 基于教程P142图6-7接口电路,编程使发光二极管循环发光。具体要求是:单独按下开关K0,发光二极管以L0、L1、L2、……L7顺序依次点亮,每个维持200ms,并不断重复,直到有其他按键操作;单独按下开关K1,发光二极管以L7、L6、L5、……L0顺序依次点亮,每个也维持200ms,并不断重复,直到有其他按键操作;其他开关组合均不发光,单独按下开关K7,则退出控制程序。延时200ms可以直接调用子程序DELAY实现。 〔解答〕 again: mov dx,6000h mov al,0ffh out dx,al ;全不亮 again1: in al,dx cmp al,7fh ;D7~D0=0111111B ? jz done ;单独按下K7,退出 cmp al,0feh ;D7~D0=11111110B ? jz next1 ;单独按下K0,转移到next1 cmp al,0fdh ;D7~D0=11111101B ? jz next2 ;单独按下K1,转移到next2 jmp again ;其它情况不点亮 next1: mov cx,8 mov al,1 ;从K0开始 next11: out dx,al ;某个LED电亮 call delay ;延时200ms shl al,1 ;rol al,1 loop next11 jmp again1 next2: mov cx,8

第十章 输入输出系统习题

第十章输入输出系统习题 一、单项选择题: 1、“总线忙”信号是由__ __建立的。 A.获得总线控制权的设备B.发出“总线请求”的设备 C.总线控制器D.CPU 2、在不同速度的设备之间传送数据__ __。 A.必须采用同步控制方式B.必须采用异步控制方式 C.可以选用同步方式,也可选用异步方式D.必须采用应答方式 3、挂接在总线上的多个部件___ _。 A.只能分时向总线发送数据,并只能分时从总线接收数据 B.只能分时向总线发送数据,但可同时从总线接收数据 C.可同时向总线发送数据,并同时从总线接收数据 D.可同时向总线发送数据,但只能分时从总线接收数据 4、总线从设备是____。 A.掌握总线控制权的设备 B.申请作为从设备的设备 C.被主设备访问的设备D.总线裁决部件 5、假设某系统总线在一个总线周期中传输4个字节信息,一个总线周期占用2个时钟周期,总线时钟频率为10MHz,则总线带宽是__ __。 A.10 MB/s B.20 MB/s C.40 MB/s D.80 MB/s 6、波特率表示传输线路上____。 A.信号的传输速率B.有效数据的传输速率 C.校验信号的传输速率D.干扰信号的传输速率 7、中断系统中的断点是指____。 A.子程序入口地址B.中断服务子程序入口地址 C.中断服务程序入口地址表D.中断返回地址 8、显示器的主要参数之一是分辨率,其含义是____。 A.显示屏幕的水平和垂直扫描频率 B.显示屏幕上光栅的列数和行数 C.可显示不同颜色的总线 D.同一个画面允许显示不同颜色的最大数目 9、下列选项中,能引起外部中断的事件是____。 A.键盘输入B.除数为0 C.浮点运算下溢D.访存缺页 10.CPU响应中断时,最先完成的两个步骤是_ __和保护现场信息。 A.开中断 B.恢复现场 C.关中断 D.不可屏蔽中断 11、在独立编址方式下,存储单元和I/O设备是靠来区分的。 A.不同的地址代码B.不同的地址总线 C.不同的指令和不同的控制信号D.上述都不同 12、计算机系统的输入/输出接口通常是__ __。 A.CPU与存储器之间的交界面B.存储器与打印机之间的交界面 C.主机与外围设备之间的交界面D.CPU与系统总线之间的交界面 13.根据连线的数量,总线可分为串行总线和_____ ___总线

第六章 基本输入输出技术

微机原理与接口技术
第六章
基本输入输出技术
合肥工业大学计算机与信息学院
2017年 2017 年 5月

第六章 基本输入输出技术
6.1 I/O接口概述 6.2 无条件传送方式及其接口 6.3 查询传送方式及其接口 6.4 中断传送方式及其接口 6.5 DMA传送方式
2

6.1 I/O接口概述 什么是输入/输出设备?
? 能够完成输入/输出操作的设备,简称外设或I/O设备。 ? 输入设备:键盘、鼠标器、条形码阅读器和扫描仪等; 输出设备:显示器、打印机、绘图仪、投影仪等。
3

6.1 I/O接口概述 I/O设备与CPU信息交换时存在的问题
? 速度不匹配:CPU的速度很高,而外设的速度要低得多, 而且不同的外设速度差异很大。 ? 时序不匹配:各种外设都有自己的定时和控制逻辑,与 计算机的CPU时序不一致。 ? 信号格式不匹配:CPU能识别的是8 (16或32)位的并行 数字量信息,而有些外设用的是模拟量(电流信号或是 电压信号),有些设备采用串行方式传送数据。 ? 信号电平不匹配:CPU所使用的信号都是TTL电平,而 外设大多不能用TTL电平所驱动,有自己的电源系统和 信号电平。
4

6.1 I/O接口概述
1. I/O接口 2. 接口信息 3. 端口及编址方式 4. I/O地址的译码 5. 数据传送方式
5

6.1.1 I/O接口 定义
? I/O接口(Interface):实现外部设备与微机之间连接和 信息交换的功能电路。 输入输出设备
I/O设备 外设
? 接口技术是把由处理器等组成的基本系统与外部设备连 接起来,从而实现计算机与外设通信的一门技术。
6

计算机组成原理第八章输入输出系统

第八章输入输出系统 一、填空题; 1.直接内存访问(DMA)方式中,DMA控制器从CPU完全接管对A.______的控制,数据交换不经过CPU,而直接在内存和B.______之间进行。 2.通道是一个特殊功能的A.______ ,它有自己的B.______ 专门负责数据输入输出的传输控制。 3.并行I/O接口A.______ 和串行I/O接口B.______ 是目前两个最具有权威性的标准接口技术。 4.在计算机系统中,CPU对外围设备的管理,除了程序查询方式、程序中断方式外,还有A.______方式、B.______方式和C.______方式。 5.程序中断方式控制输入输出的主要特点是,可以使A 和B 并行工作。 6.DMA控制器按其A 结构,分为B 型和C 型两种。 7.通道是一个特殊功能的A ,它有自己的B 专门负责数据输入输出的传输控制,CPU只负责C 功能。 8.通道有三种类型:A 通道、B 通道、C 通道。 二、选择题: 1.下面有关“中断”的叙述,______是不正确的。 A.一旦有中断请求出现,CPU立即停止当前指令的执行,转而去受理中断请求 B.CPU响应中断时暂停运行当前程序,自动转移到中断服务程序 C.中断方式一般适用于随机出现的服务 D.为了保证中断服务程序执行完毕以后,能正确返回到被中断的断点继续执行程 序,必须进行现场保存操作 2.中断向量地址是______。 A. 子程序入口地址 B. 中断服务例行程序入口地址 C. 中断服务例行程序入口地址的地址 D. 主程序返回地址 3.在数据传送过程中,数据由串行变并行或由并行变串行,其转换是通过______。 A. 移位寄存器 B. 数据寄存器 C. 锁存器 D. 指令寄存器 4.采用DMA方式传送数据时,每传送一个数据要占用______的时间。 A. 一个指令周期 B. 一个机器周期 C. 一个时钟周期 D. 一个存储周期 5.发生中断请求的条件是______。 A. 一条指令执行结束 B. 一次I/O操作开始 C. 机器内部发生故障 D. 一次DMA操作开始 6.为了便于实现多级中断,保存现场最有效的方法是采用______。 A. 通用寄存器 B. 堆栈 C. 存储器 D. 外存 7.采用串行接口进行七位ASCII码的传送,带有一位奇校验位、一位起始位和一位停止位,当波特率为4800波特时,字符传送速率为___。 A.480 B. 436 C. 685 D. 240 8.在单级中断系统中,CPU一旦响应中断,则立即关闭___标志,以防止本次中断服务结束前同级的其他中断源产生另一次中断进行干扰。 A.中断允许 B. 中断请求 C. 中断屏蔽

第6章输入输出系统

第六章输入输出系统 一、填空题 l 、操作系统中,设备管理的目标是()和()。 2、中断装置通常是按预定的顺序来响应同时出现的中断事件的,这个预定的顺序通常被称为()。 3.通道通过执行通道程序来完成控制设备工作,完成指定的()操作. 4.通道可分为()、()和()三种类型. 5.中断向量实际上是一种指针,它指向对应()的入口. 6.访问磁盘时间由(),()和()三部分组成. 7.缓冲是一种()扶术,它利用某种存储设备,在数据传送过程中进行暂时的存放. 8.I/O管理中,()技术是操作系统得以响应外部和内部物理请求的必不可少的重要机制. 9、()算法是选择当前磁头所在磁道距离远近的请求作为下一次服务的对象. 10.磁盘地址空间是()维的. 11.为实现CPU与外部设备的并行工作,系统引入了()硬件机制. 12,IlO涉及的基本的硬件元素有()等等. 13.控制设备的核心模块为()· 14.设备和CPU之间数据传送控制方式有四种:程序直接控制方式,中断控制方式,DMA方式和()· 15. 缓冲,中断及()也是设备管理中的一个重要部分. 16. 磁盘是海量存储设备.海量存储设备的出现使得计算机系统的数据保留得以实现.磁盘也就成了 ()数据的关键. 17.许算机两个最主要的工作就是()和处理机. 18.磁盘又可以分为()· 19.如何有效地对连接到计算机的外设进行()是操作系统设计者最关心的问题之一. 20.一个设备可能通过电缆甚至()发送信号,与计算机系统通信. 21 、一般来说,把设备与主机之间的接口称之为()· 22.如果很多设备都共用一条线路通信,称镇线路为() 23.之所以区分控制器和设备本身是因为操作系统大多与()打交道,而非设备本身.

第10章 输入输出系统

第10章输入输出(I/O)系统 一、选择题(每题2分) 12.串行接口是指()。 A.主机和接口之间、接口和外设之间都采用串行传送 B.主机和接口之间串行传送,接口和外设之间并行传送 C.主机和接口之间并行传送,接口和外设之间串行传送 D.系统总线采用串行总线 【分析】主机的工作速度较快,因此主机和接口之间采用并行传送;外设的工作速度较慢,因此接口和外设之间采用串行传送。 【答案】C 35.为了便于实现多级中断,保存现场信息最有效的办法是采用______。 A 通用寄存器 B 堆栈 C 存储器 D 外存 【答案】B 35.为了便于实现多级中断,保存现场信息最有效的办法是采用______。 A 通用寄存器 B 堆栈 C 存储器 D 外存 【答案】B 70. 当采用______对设备进行编址情况下,不需要专门的I/O指令组。 A.统一编址法 B.单独编址法 C.两者都是 D.两者都不是 【答案】A 71. 下面有关“中断”的叙述,______是不正确的。 A.一旦有中断请求出现,CPU立即停止当前指令的执行,转而去受理中 断请求 B.CPU响应中断时暂停运行当前程序,自动转移到中断服务程序 C.中断方式一般适用于随机出现的服务 D.为了保证中断服务程序执行完毕以后,能正确返回到被中断的断点继 续执行程序,必须进行现场保存操作 【答案】A 95. 周期挪用(窃取)方式常用于______中。

A. 直接内存存取方式的输入/输出 B. 直接程序传送方式的输入/输出 C. CPU的某寄存器与存储器之间的直接传送 D. 程序中断方式的输入/输出 【答案】A 114. 采用DMA方式传送数据时,每传送一个数据就要用一个______时间。 A. 指令周期 B. 机器周期 C. 存储周期 D. 总线周期 【答案】C 二、填空题(每题2.5分) 3.按照传输数据格式不同划分,总线数据通信方式可分为串行总线和____________两类。 【答案】并行总线 4.对I/O数据传送的控制方式,可分为:程序直接控制方式、______________、DMA方式、_____________和外围处理机方式。 【答案】程序中断方式、通道控制方式 5.计算机系统的输入输出接口是(C)之间的交接界面。 A.CPU与存储器B.存储器与外围设备 C.主机与外围设备D.CPU与系统总线

第6章_设备管理习题及答案

第六章设备管理习题 一、填空题 1.磁带是一种①的设备,它最适合的存取方法是②。磁盘是一种③的设备,磁盘在转动时经过读/写磁头所形成的圆形轨迹称为④。 【答案】①顺序存取,②顺序存取,③直接存取,④磁道(或柱面) 【解析】顺序存取的设备只有在前面的物理块被存取访问过之后,才能存取后续物理块的内容。如果按随机方式或按键存取方式存取磁带上的文件信息的话,其效率反而会更低,所以顺序存取方法更能发挥磁带这种设备的效率。磁盘设备是一种典型的直接存取设备,它允许文件系统直接存取磁盘上的任意物理块。 2.从资源分配的角度看,可以把设备分为①设备和②设备;打印机是一种典型的③设备,而磁盘是一种④设备。 【答案】①独享,②共享,③独享,④共享 【解析】独享设备:为了保证传递信息的连贯性,通常这类设备一经分配给某个作业,就在作业整个运行期间都为它独占。多数的低速设备都属于独享设备。 共享设备:是指允许若干个用户同时共享使用的设备。 3.虚拟设备是通过①技术,把②变成能为若干用户③的设备。 【答案】①SPOOLING,②独享,③共享 【解析】虚拟设备的提出是为了把原为独享的设备改造成便于共享的设备,以提高设备的利用率。这种改造就是通过SPOOLING技术来实现的。SPOOLING可以译为外围设备同时联机操作的意思。 4.UNIX系统中,所有的输入/输出设备都被看成是①。它们在使用形式上与②相同,但它们的使用是和设备管理程序紧密相连的。 【答案】①特殊文件,②普通文件 【解析】在一些操作系统中,常常把设备也看成是文件。这样的好处是:用户可以用统一的观点去使用设备,并处理存放在设备上的信息。从这个意义上来说,文件系统在用户和外设之间提供了一个接口。 5.系统中,象键盘、终端、打印机等以①为单位组织和处理信息的设备称为②;而磁盘、磁带等以③为单位组织和处理信息的设备称为④。 【答案】①字符,②字符设备,③块,④块设备 6.一个进程只有获得了①、②和所需设备三者之后,才具备了进行I/O操作的物质条件。 【答案】①通道,②控制器 7.设备分配应保证设备有高的利用率并应注意避免。 【答案】死锁问题 【解析】设备分配的总原则是要充分发挥设备的使用效率,尽可能地让设备忙,而同时又要避免由于不合理的分配方法造成进程死锁。因为进程发生死锁将使得进程中的进程处于无休止的相互等待状态,使系统的效率下降。 8.通道是一个独立于CPU、专门负责①,它控制②与内存之间的信息交换(传输)。 【答案】①输入/输出的处理机,②外设或外存 【解析】通道是一个独立于CPU的专管输入和输出控制的处理机,它有自己的通道指令,以驱动外设进行读写操作。不过这些指令需要CPU执行相应的“启动通道”指令来启动信号之后才开始执行,并在操作结束时向CPU发中断信号。 9.缓冲区可分为①、②、③和④。 【答案】①单缓冲区、②双缓冲区、③多缓冲区、④缓冲池 【解析】单缓冲是在设备和处理机之间设置一个缓冲区。设备和处理机交换数据时,先把被交换的数据写入缓冲区,然后,需要数据的设备或处理机从缓冲区取走数据。 双缓冲区是一种能够实现设备和设备、CPU和设备并行操作的简单模型,当其中一个缓冲区数据装满后,可向另一个缓冲区写入数据,同时前一个缓冲区可被访问。 多缓冲区是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。 缓冲他是把多个缓冲区连接起来统一管理,既可用于输入,又可用于输出的缓冲结构。 10.对磁盘上一物理块信息的访问要经过:①、②、③三个过程。 【答案】①寻找时间、②延迟时间、③传送时间 【解析】对移动臂磁盘的存取访问一般要经过三部分时间:首先要将磁头移动至相应的柱面上,这个时间叫做寻找时间;一旦磁头到达指定柱面,等待所访问的扇区旋转到读/写头下,叫延迟时间;实际传送所需时间叫传送时间。一次磁盘访问的时间就是以上三者之和,其中“寻找时间”所花费的时间最长。

微机原理习题答案-第六章

习题6 1.什么是接口接口的功能是什么 答:位于主机与外设之间,用来协助完成数据传送和控制任务的逻辑电路称为接口电路,接口电路对输入/输出过程起缓冲和联络作用。接口的功能是有,数据缓冲功能,联络功能,寻址功能,预处理功能,中断管理功能。 2.计算机对I/O端口编址时通常采用哪两种方法在8086系统中,用哪种方法进 行编址 答:I/O端口和存储器统一编址;I/O端口单独编址。8086系统采用I/O端口单独编址方式。 3.CPU和输入/输出设备之间传送的信息有哪几类 答: 数据信息,控制信息,与状态信息。 4.简述CPU与外设进行数据交换的几种常用方式. 答: 程序控制方式: 特点是依靠程序的控制来实现主机和外设的数据传送,可分为无条件传送方式和查询方式. 中断控制方式: 每次输入和输出一个数据,CPU都要检查外设的状态。 直接存储器存取控制方式:cpu不参加数据传送,而是由DMA控制器来实现内存与外设,外设与外设之间的直接传递。 通道方式:可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。 外围处理机方式:由PPU独立于主机工作,减少了CPU控制外设的负担。 5.无条件传送方式适用哪些场合查询方式原理怎样主要用在什么场合 答:无条件传送适用于简单的输入/输出设备,CPU可以随时读取或接受状态。这些信号变化缓慢,当需要采集数据时,无需检查端口,就可以立即采集数据,直接用输入/输出指令完成。无条件传送方式主要用于控制CPU与低俗I/O接口之间的信息交换。

6.现有一输入设备,其数据端口的地址为FFE0H,并于端口FFE2H提供状态,当其D0位为1时表明输入数据准备好。请编写采用查询方式进行数据传送的程序段,要求从该设备读取100B并输入到1000H:2000H开始的内存中。 MOV DX, 0FFE2H L1:IN AL, DX 这是习题6的第6题的答案,TEST AL, 01H 这个程序写不出来,建议删这一问 JZ L1 MOV AX, 1000H MOV DS, AX MOV DX, 2000H MOV CX, 100 MOV DX, 0FFE0H L2: IN AL, DX MOV [DX], AL INC BX LOOPN L2 7.查询式传送方式有什么优缺点中断方式为什么能弥补查询方式的缺点 答:查询传送方式CPU通过程序不断查询相应设备的状态,状态不符合要求,则CPU需要等待;只有当状态信号符合要求时,CPU才能进行相应的操作。中断方式提高了计算机系统中信息处理的并行和处理器效率,中断可以实现同步操作,实时处理等功能。 1.8088/8086中断向量表的作用是什么 答:中断向量表建立了不同的中断源与其相应的中断服务程序首地址之间的联系,它是CPU在响应中断时可以依据中断类型码自动转向中断服务程序。 2.什么叫中断向量它放在哪里对于1CH的中断向量在哪里如果1CH的中断程序 从5110H开始:2030H开始,则中断向量应该怎样存放 答:中断向量即用来提供中断入口地址的一个指针。 3.8259中IRR, IMR, ISR三个寄存器的作用是什么

第六章输入输出控制第一讲

第六章 输入输出控制 第一讲 回顾:微机系统的层次结构,CPU、主机、接口电路及外部设备之间的结构关联,输入/输出的一般概念。 本讲重点:微机系统主机与外部设备之间的数据传送,包括I/O端口的寻址方式,输入/输出的传送控制方式。 讲授内容: 6.1输入/输出数据的传输控制方式 CPU与外设之间传输数据的控制方式通常有三种:程序方式、中断方式和DMA 方式。 一.程序方式 指用输入/输出指令,来控制信息传输的方式,是一种软件控制方式,根据程序控制的方法不同,又可以分为无条件传送方式和条件传送方式。 ①无条件传送方式 条件:利用程序来控制与外设交换信息时,如果可以确信外设总是处于“准备好”的状态,不需用任何状态查询,就可以直接利用输入/输出指令进行信息的输入/输出操作。 如图6-1,从硬件电路上来看: 输入:加三态缓冲器(控制端由地址译码信号和RD信号选中,CPU用IN指令)输出:加锁存器(控制端由地址译码信号和WR信号选中,CPU用OUT指令) 这种方式下的硬、软件设计都比较简单,但应用的局限性较大,因为很难保证外设在每次信息传送时都处于“准备好”状态,一般只用在一些简单外设的操作上,如开关控制,七段数码管的显示控制等。 图6-1 ②条件传送方式(亦称为查询方式) 又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。

一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY”=1表示输入数据已准备好。输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据。 查询式传输,即用程序查询相应设备的状态,(对输入设备就是查询READY,对输出设备查询BUSY),若状态不符合要求则等待,只有当状态信号符合要求时,才进行相应的传输。 过程: 输入操作的程序流程如图6-2所示: 对READY的状态查询,是通过读状态端口的相应位来实现的,输出的情况亦大致相同,这种传送控制方式的最大优点是,能够保证输入/输出数据的正确性。输入接口 以输入设备将数据送入锁存,发选通信号开始,→READY=1→CPU查询(读READY)→读数据→清除READY。见图5-3。 图6-3 输出接口 CPU送数据至锁存器,发选通信号,→a。通知外设取数据;→b。BUSY→输出设备取完数据→ACK→清BUSY→CPU查询。见图6-4

微机原理习题答案-第六章

习题6 1.什么是接口?接口的功能是什么? 答:位于主机与外设之间,用来协助完成数据传送和控制任务的逻辑电路称为接口电路,接口电路对输入/输出过程起缓冲和联络作用。接口的功能是有,数据缓冲功能,联络功能,寻址功能,预处理功能,中断管理功能。 2.计算机对I/O端口编址时通常采用哪两种方法?在8086系统中,用哪种方 法进行编址? 答:I/O端口和存储器统一编址;I/O端口单独编址。8086系统采用I/O端口单独编址方式。 3.CPU和输入/输出设备之间传送的信息有哪几类? 答: 数据信息,控制信息,与状态信息。 4.简述CPU与外设进行数据交换的几种常用方式. 答: 程序控制方式: 特点是依靠程序的控制来实现主机和外设的数据传送,可分为无条件传送方式和查询方式. 中断控制方式: 每次输入和输出一个数据,CPU都要检查外设的状态。 直接存储器存取控制方式: cpu不参加数据传送,而是由DMA控制器来实现内存与外设,外设与外设之间的直接传递。 通道方式:可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。 外围处理机方式:由PPU独立于主机工作,减少了CPU控制外设的负担。 5.无条件传送方式适用哪些场合?查询方式原理怎样?主要用在什么场合?答:无条件传送适用于简单的输入/输出设备,CPU可以随时读取或接受状态。这些信号变化缓慢,当需要采集数据时,无需检查端口,就可以立即采集数据,直接用输入/输出指令完成。无条件传送方式主要用于控制CPU与低俗I/O接口之间的信息交换。

6.现有一输入设备,其数据端口的地址为FFE0H,并于端口FFE2H提供状态,当其D0位为1时表明输入数据准备好。请编写采用查询方式进行数据传送的程序段,要求从该设备读取100B并输入到1000H:2000H开始的内存中。 MOV DX, 0FFE2H L1: IN AL, DX 这是习题6的第6题的答案, TEST AL, 01H 这个程序写不出来,建议删这一问 JZ L1 MOV AX, 1000H MOV DS, AX MOV DX, 2000H MOV CX, 100 MOV DX, 0FFE0H L2: IN AL, DX MOV [DX], AL INC BX LOOPN L2 7.查询式传送方式有什么优缺点?中断方式为什么能弥补查询方式的缺点?答:查询传送方式CPU通过程序不断查询相应设备的状态,状态不符合要求,则CPU需要等待;只有当状态信号符合要求时,CPU才能进行相应的操作。中断方式提高了计算机系统中信息处理的并行和处理器效率,中断可以实现同步操作,实时处理等功能。 1.8088/8086中断向量表的作用是什么? 答:中断向量表建立了不同的中断源与其相应的中断服务程序首地址之间的联系,它是CPU在响应中断时可以依据中断类型码自动转向中断服务程序。 2.什么叫中断向量?它放在哪里?对于1CH的中断向量在哪里?如果1CH的中 断程序从5110H开始:2030H开始,则中断向量应该怎样存放? 答:中断向量即用来提供中断入口地址的一个指针。 3.8259中IRR, IMR, ISR三个寄存器的作用是什么?

相关主题
文本预览
相关文档 最新文档