2023年现代微型计算机原理与接口技术习题解答接口部分_第1页
2023年现代微型计算机原理与接口技术习题解答接口部分_第2页
2023年现代微型计算机原理与接口技术习题解答接口部分_第3页
2023年现代微型计算机原理与接口技术习题解答接口部分_第4页
2023年现代微型计算机原理与接口技术习题解答接口部分_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

习题五接口电路与外部设备之间传送的信号有哪几种?传输方向如何?数据信号:对于输入设备,数据信号从外设通过接口送往总线,对于输出设备,数据信号从总线通过接口发往外部设备。状态信号:状态信号表白外部设备当前的工作状态,用来协调CPU与外部设备之间的操作。状态信号总是从外部设备通过接口发往总线。控制信号:控制信号是CPU向外设发出的命令,它指定设备的工作方式,启动或停止设备。控制信号从CPU通过接口发往外部设备。接口电路有哪些功能?哪些功能是必需的?接口电路可以具有:设备选择功能、信息传输功能、数据格式转换功能、联络功能、中断管理功能、复位功能、可编程功能和错误检测等功能。其中设备选择功能和信息传输功能是每一个接口电路所必备的。其他的功能是否需要则由设备的特点和工作方式决定。I/O端口的编址有哪几种方法?各有什么利弊?80X86系列CPU采用哪种方法?ﻩI/O端口的编址有两种不同的方式。I/O端口与内存统一编址:把内存的一部分地址分派给I/O端口,一个8位端口占用一个内存单元地址。已经用于I/O端口的地址,存储器不能再使用。I/O端口与内存统一编址后,访问内存储器单元和I/O端口使用相同的指令,这有助于减少CPU电路的复杂性,并给使用者提供方便。但是,I/O端口占用内存地址,相对减少了内存可用范围。并且,由于难以区分访问内存和I/O的指令,减少了程序的可读性和可维护性。I/O端口与内存独立编址:这种编址方法中,内存储器和I/O端口各自有自己独立的地址空间。访问I/O端口需要专门的I/O指令。80x86CPU采用I/O端口独立编址方式。按照传输信号的种类,I/O端口有几种?它们信号的传输方向如何?按照传输信号的种类,I/O端口有三种:数据端口:数据信息从端口输入CPU(输入设备接口),或者从CPU写入端口(输出设备接口);状态端口:外设状态信息从端口输入CPU;控制端口:命令信息从CPU写入端口。I/O端口译码电路的作用是什么?在最小模式和最大模式下分别有哪些输入信号?I/O端口译码电路用于产生端口的读写选择信号。在最小模式下,译码电路接受来自总线的地址信号(16位),(=0),或者信号。最大模式下,译码电路接受地址信号(16位),或者信号。外部设备数据传送有哪几种控制方式?从外部设备的角度,比较不同方式对外部设备的响应速度。外部设备数据传送有以下四种控制方式。直接传送方式(也称为无条件传送方式、同步传送方式):这种情况下,外部端口完全被动地等待CPU的访问,没有拟定的响应速度,响应时间取决于CPU忙碌的限度以及程序对外部设备控制采用的策略。查询方式:假如CPU在某一时刻只对一个外设采用查询方式进行数据传输,CPU的响应延迟约为3~10个指令周期。响应速度快于中断方式,慢于DMA方式。中断方式:CPU的响应延迟平均为几十个指令周期,慢于查询方式,但是这种方式可以同时管理多个外部设备。DMA方式:外部端口的传输请求由DMA控制器响应,由于DMAC是一个专用于传输控制的电路,任务单一,不发生DMA传输竞争时,响应延迟仅为1~2个DMAC使用的时钟周期,远快于中断方式和查询方式。叙述一次查询式输出过程中,接口内各电路、信号的状态变化过程。一个数据的查询式输出过程由二个阶段组成:CPU从接口反复读取状态字:由地址译码电路产生状态端口选择信号,该信号不影响接口内部的状态。外部设备输出完毕后,返回“确认”信号,该信号将状态寄存器相关位(READY)置位。如状态字表白外设已处在“就绪”状态,则向数据端口传送数据。由地址译码电路产生的数据端口选通信号一方面将数据总线上的数据写入数据寄存器,同时清除状态寄存器中的相关位(READY),向输出设备发出输出启动信号。有的输出接口设有控制端口,输出启动信号通过写控制端口产生。比较程序中断方式和查询方式的区别,根据比较,指出中断工作方式的优缺陷。中断方式:外部设备工作完毕后,通过“中断请求”信号“积极”向CPU“报告”。查询方式:外部设备工作完毕后,状态信号储存在接口电路内,被动地等待CPU来读取。根据上述比较,可以得到中断工作方式的如下特点:优点:CPU可以及时了解外部设备的状态,从而对外部设备IO请求进行及时解决。由于CPU“被动”地等待外部设备的“中断请求”,外部设备进行输入/输出操作时,CPU可以同时执行其他的程序,CPU和外部设备“并行”工作。由于同样的因素,在中断方式下,CPU可以同时管理多台外部设备,CPU的效率得到提高。缺陷:用中断方式需要CPU增长相应的管理逻辑,增长了CPU电路的复杂性。由于CPU“被动”地接受“中断请求”信号,CPU必须通过与外部的一个联络过程才干知道是那一个设备在申请中断,这增长了响应时间。为了从当前任务转移到中断服务,CPU必须保护原有的运营环境,进行“任务”的“切换”,这也会增长响应时间。有较多的设备使用中断方式时,会产生“中断申请”的“竞争”。这一方面减少了响应速度,另一方面增长了管理的复杂性。比较DMA方式和程序中断方式的区别,根据比较,指出DMA工作方式的优缺陷。中断方式:外部设备每进行一个数据的输入/输出,都要通过“中断申请”规定CPU进行解决。CPU通过执行一段“中断服务程序”完毕数据的传输。DMA方式:CPU通过对DMAC的初始化,启动一个数据块的传输操作。之后的数据传输通过信号的联络,在外设接口和存储器之间进行,CPU只需简朴地让出总线,而无需其他操作。根据上述比较,可以得到DMA工作方式的如下特点:优点:对于CPU而言,它的任务仅仅是在一个数据块传输之前对DMAC进行初始化,CPU用于传输控制的操作达成最小(不考虑与通道/IO解决器方式的比较),CPU的效率最高。CPU与外设“并行”工作。外部设备一个数据输入/输出完毕后,向DMAC申请进行数据传输,响应时间仅为DMAC的1~3个时钟周期。响应速度达成最快,可以满足高速传输的需要。缺陷:实现DMA控制需要增长DMA控制器和总线控制逻辑,增长了系统的复杂性。DMA传输需要占用总线,并且具有较高的“优先级”。这使得系统对其他设备的响应速度不能得到明确的保证。某输入设备接口数据端口、状态端口、控制端口地址分别为70H,71H,72H。状态端口D5=1表达输入完毕,控制端口D7=1表达启动设备输入(输入完毕后由设备清除该位)。从该设备输入100个字节数据,存入以BUFFER为首地址的缓冲区。假如启动该设备1秒后仍未完毕一次输入,则视为超时错,显示犯错信息后返回。分别用8086汇编语言和C语言编写完毕上述功能的I/O程序。汇编语言程序:DATA SEGMENTBUFFER DBﻩﻩ100DUP(?)ERROR DBﻩﻩ13,10,“OVERTIME!”,13,10,“$”DATA ﻩENDS;CODE ﻩSEGMENTﻩﻩﻩASSUMEﻩﻩCS:CODE,DS:DATASTART:ﻩ ﻩﻩMOV AX,DATA ﻩ ﻩMOV DS,AX ﻩ MOV CX,100ﻩ ﻩ LEAﻩﻩBX,BUFFERﻩONE:ﻩ XORﻩDX,DX ﻩ ;DX用作响应计时器,初值0MOV AL,80H ﻩOUTﻩ 72H,ALﻩ ;启动输入W:ﻩ IN AL,71HﻩﻩﻩﻩINC ﻩDXﻩﻩﻩﻩ;记录延迟时间 ﻩTESTﻩAL,00100000Bﻩ;测试完毕位ﻩ ﻩJNZﻩ READ ﻩﻩ;输入完毕,转READ读取数据ﻩﻩ ﻩCMPﻩDX,50000ﻩ ;假设循环50000次时间为1秒 ﻩﻩJB Wﻩﻩﻩ ;未超时,继续测试ﻩ ﻩﻩJMPﻩ OVERTIME ﻩ;超过1秒,报告犯错READ:ﻩ INﻩﻩAL,70H ﻩ ;读入数据 ﻩ MOVﻩ[BX],ALﻩﻩ ;数据存入缓冲区 ﻩﻩﻩINC ﻩBX ﻩﻩﻩ;修改指针ﻩﻩﻩﻩLOOPﻩONE ;100个数据尚未输入完毕,转ONE继续 ﻩJMPﻩﻩDONE ﻩﻩ;100个数据输入完毕,转DONE结束程序OVERTIME: LEAﻩﻩDX,ERRORﻩﻩ MOVﻩAH,9 ﻩ INT 21H ﻩﻩ ;响应超时,显示犯错信息DONE: MOV AX,4C00H ﻩ INTﻩ 21Hﻩ ﻩ;返回OSCODEﻩﻩENDS ﻩ ENDﻩ START C语言程序:ﻩmain(){inti,status,time,buffer[100];ﻩfor(i=0;i<100;i++)ﻩﻩ{ﻩoutportb(0x72,0x80); ﻩ /*启动输入*/for(time=0;time<20230;time++){status=inportb(0x71); /*读状态*/if(status&0x20){buffer[i]=inportb(0x70);exit;} /*读数据,保存*/}if(time>=20230){printf(“\nOverTime!\n”);exit;}ﻩﻩ/*超时报错*/}}某输出设备数据端口、状态端口地址分别为220H,221H。状态端口D0=1表达输出完毕。将数据段中以STRING为首地址的20个字符(用七位ASCII代码存储)添加水平和垂直校验发送到该外部设备。用8086汇编语言编写完毕上述功能的I/O程序。汇编语言程序:DATAﻩﻩSEGMENTSTRINGﻩ DBﻩﻩ20DUP(?)SUM ﻩﻩDB ﻩ0DATA ENDS;CODEﻩ SEGMENTﻩﻩﻩﻩASSUMEﻩCS:CODE,DS:DATASTART: MOV ﻩAX,DATAﻩ ﻩMOV DS,AX ﻩMOV ﻩCX,20 ﻩLEAﻩ ﻩBX,STRINGﻩ ﻩﻩMOV ﻩSUM,0ﻩﻩﻩ;垂直校验码初值为0 ONE: MOV DX,221H ﻩﻩ;DX置为状态端口地址 ﻩ INﻩﻩ AL,DX ﻩ ﻩTESTﻩﻩAL,00000001B ;测试输出完毕位 ﻩ JZ ONE ﻩﻩ ;未完毕,转ONE继续读取状态 ﻩ ﻩMOVﻩ AL,[BX] ﻩ ;从字符串取出一个字符的ASCII代码ﻩ ﻩANDﻩ AL,07FH ;清除最高位,准备置入校验位 ﻩJPEﻩ ﻩOUTPUTﻩﻩ ;判代码奇偶属性, ﻩﻩORﻩﻩ AL,80Hﻩﻩﻩ;奇数个“1”OUTPUT: MOVﻩ DX,220H ﻩ ﻩOUT ﻩ DX,AL ﻩ;输出添加了校验位的代码 ﻩXOR SUM,ALﻩﻩ ;生成垂直校验位 ﻩINCﻩ BXﻩﻩ ﻩ;修改指针 ﻩﻩﻩLOOPﻩ ONE ﻩ;20个数据尚未输出完毕,转ONE继续ﻩ MOV DX,221H ﻩ;输出垂直校验代码LAST:ﻩ INﻩﻩﻩAL,DXﻩ ﻩ ﻩﻩ TEST ﻩAL,00000001Bﻩﻩ ﻩﻩJZﻩ LAST ﻩ ﻩﻩﻩﻩﻩMOVﻩ AL,SUM ﻩ MOV ﻩDX,220H ﻩﻩﻩOUT DX DONE: ﻩMOV ﻩAX,4C00Hﻩﻩ ﻩINT ﻩﻩ21H ﻩ ﻩ;返回OSCODE ﻩENDSﻩﻩ ﻩENDﻩﻩ START试画出矩阵式键盘查询的程序流程图。上述流程中假设键盘为8×8结构,假如有键按下,返回它的8位扫描码。其中:最低3位为该键所在列,次低3位为该键所在行,最高2位为0。假如没有键按下,返回8位“1”。试画出公用端口多位LED输出的程序流程图。

习题六什么叫中断?有哪几种不同类型的中断?由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行解决该事件的一个程序。该程序执行完毕后,CPU接着执行被暂停的程序。这个过程称为中断。 根据中断源的位置,有两种类型的中断。有的中断源在CPU的内部,称为内部中断。大多数的中断源在CPU的外部,称为外部中断。根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种。什么是中断类型?它有什么用处?ﻩ用若干位二进制表达的中断源的编号,称为中断类型。中断类型用来区分不同的中断,使CPU可以在中断响应时调出相应的中断服务程序进行中断解决。有哪几种拟定中断优先级的方法?说明每一种方法各自的优劣之处。拟定中断优先权有四种可选的方法。(1) 软件查询法:采用程序查询的方法拟定中断服务的顺序。这种方法中断逻辑最简朴(基本上不需要外部中断逻辑),优先级可以灵活设立,但中断响应所需时间最长。(2)分类申请法:CPU分设二个中断申请信号的输入引脚。这种方法需要CPU提供条件。(3)链式优先权排队:菊花链法。这种方法需要的外部中断逻辑比较简朴,容易实现,但是设备较多时信号延迟大,对设备故障敏感。(4)可编程中断控制器:“向量”优先权排队专用电路。这种方法功能最全面,控制灵活,可以通过程序设定中断优先权为固定的或循环的,但需要增长专用的中断控制器。什么是中断嵌套?使用中断嵌套有什么好处?对于可屏蔽中断,实现中断嵌套的条件是什么?CPU在解决级别较低的中断过程中,出现了级别较高的中断请求。CPU停止执行低档别中断的解决程序而去优先解决高级别中断,等高级别中断解决完毕后,再接着执行低档别的未解决完的中断解决程序,这种中断解决方式称为多重(级)中断或中断嵌套。使用中断嵌套可以使高优先级别的中断得到及时的响应和解决。对于可屏蔽中断,由于CPU在响应中断时已将IF清零,所以一定要在中断解决程序中加入开中断指令,才有也许进行中断嵌套。什么叫中断屏蔽?如何设立I/O接口的中断屏蔽?用程序的方法使某些中断源的中断请求不可以发送到CPU,或者虽然可以发送但是不能得到响应,这种方法称为中断屏蔽。在外设的接口内增设一个中断屏蔽触发器(可以用D触发器实现),该触发器的端与中断请求信号相“与”后连接到INTR。当=0时,中断请求不能发往INTR。通过设定中断屏蔽触发器的状态,可以控制中断请求信号是否可以送到INTR端。置IF=0,可以使80x86CPU不响应来自INTR的可屏蔽中断请求。什么是中断向量?中断类型为1FH的中断向量为2345H:1234H,画图说明它在中断向量表中的安顿位置。中断服务程序的入口地址称为中断向量。中断类型为1FH,它的中断向量放置在1FH×4=0000:7CH开始的位置上。如右图。叙述一次可屏蔽中断的全过程。(1)中断源请求中断外部中断源通过INTR引脚向CPU请求中断。(2)中断响应中断源提出中断请求后,假如CPU处在允许中断状态(IF=1);没有不可屏蔽中断请求和总线请求;当前指令执行结束。则转入中断响应周期。在中断响应周期:CPU取得中断源的中断类型;将标志寄存器FLAGS和CS、IP(断点)先后压入堆栈保存;清除自陷标志位TF和中断允许标志位IF;读中断向量表,获得相应的中断服务程序入口地址,转入中断服务程序。(3)中断服务中断服务程序的重要内容涉及:保护现场开中断中断解决关中断恢复现场(4)中断返回简要叙述8259A内部IRR,IMR,ISR三个寄存器各自的作用。三个寄存器长度均为8位。IRR用来记录引脚IR7~IR0上由外部设备送来的中断请求信号。当外部中断请求线IRi变为有效时,IRR中与之相应的第i位被置1。IMR用于设立对中断请求的屏蔽信号。此寄存器的第i位被置1时,与之相应的外部中断请求线IRi被屏蔽,不能向CPU发出INT信号。可通过软件设立IMR内容,拟定每一个中断请求的屏蔽状态。ISR用于记录当前正在被服务的所有中断级,涉及尚未服务完而半途被更高优先级打断的中断级。若CPU响应了IRi中断请求,则ISR中与之相应的第i位置1。ISR用于中断优先级管理。8259A是如何进行中断优先权管理的?8259A通过以下两种途径实现对中断优先权的管理:通过设立中断屏蔽寄存器IMR,可以屏蔽某些中断请求,从而动态地改变各请求端的优先级别。8259A响应某个中断请求之后,将ISR寄存器相应位置1。假如后续的中断请求级别低于正在响应的中断请求,则该中断不能立即被响应。反之,假如新的中断请求级别高于正在响应的中断请求,则允许进行中断嵌套。中断服务结束时,应将ISR寄存器相应位清零。特殊全嵌套方式有什么特点?它的使用场合是什么?特殊全嵌套方式一般用于级联方式下的8259A主片。假如8259A主片在一次中断解决尚未结束时,收到了来自同一个引脚的第二次中断请求,并且该8259A采用普通全嵌套方式,则它不会响应来自同一个引脚的第二次中断请求。假如该8259A采用特殊全嵌套方式,就会响应当请求(中断嵌套),从而可以及时响应连接在同一从片8259A上,并且相对有较高优先级别的中断请求。向8259A发送“中断结束”命令有什么作用?8259A有哪几种中断结束方式?分析各自的利弊。中断服务完毕时,必须给8259A一个命令,使这个中断级别在ISR中的相应位清“0”,表达该中断解决已经结束,允许响应新的较低档别的中断。这个命令称为“中断结束”命令。8259A有两种不同的中断结束方式。(1)自动中断结束方式(AEOI)8259A在中断响应周期内自动清除ISR中相应位。这种方式使用简朴,但是不能充足实现中断的优先权管理。这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。(2)非自动中断结束方式(EOI)从中断服务程序返回前,在程序里向8259A输出一个中断结束命令(EOI),把ISR相应位清“0”。这种方式可以有效地实现中断优先权的管理,从而保证高优先级的中断可以得到及时响应。但是,假如在程序里忘了将ISR相应位清零,那么,8259A将不再响应这个中断以及比它级别低的中断请求。某系统中有两片8259A,从片的请求信号连主片的IR2引脚,设备A中断请求信号连从片IR5引脚。说明设备A在一次I/O操作完毕后通过两片8259A向8086申请中断,8086CPU通过两片8259A响应中断,进入设备A中断服务程序,发送中断结束命令,返回断点的全过程。设备A通过从片IR5引脚向从片发出中断请求;从片将IRR5置“1”,并通过INT(与主片IR2相连)向主片发出中断请求;主片将IRR2置“1”,通过INT(与CPU的INTR相连)向CPU发出中断请求;CPU通过第一个向主片和从片响应中断请求;主片8259A在CAS0~CAS2上发出代码“010”,表达连接在IR2上的从片中断被响应,同时主片还把本片ISR2置“1”,把本片IRR2清“0”;从片收到第一个和主片CAS0~CAS2上发来的010代码后,将本片ISR5置“1”,同时把本片IRR5清“0”。收到第二个后,将本片IRR5相应的中断类型通过数据总线发往CPU;CPU进入设备A的中断服务程序,在程序中先后对主片和从片发出中断结束命令,两个芯片内的ISR2和ISR5先后被清零。中断服务结束,返回断点继续执行。某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片的中断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片采用电平触发,嵌套方式,普通中断结束方式。请编写它们的初始化程序。假设主片端口地址为10H,12H。从片的端口地址分别为18H,1AH和1CH,1EH。……MOVﻩAL,00011001Bﻩ ﻩ;主片ICW1OUTﻩ10H,AL ﻩﻩ ;电平触发,级连方式MOVﻩAL,10H ﻩ ;主片ICW2OUTﻩ12H, ALﻩﻩﻩﻩ ;主片中断类型MOV AL,01010000B ;主片ICW3OUTﻩ12H,ALﻩﻩﻩ ﻩ;IR4,IR6连有从片MOV AL,00010001B ﻩﻩ;主片ICW4OUT 12H,ALﻩ ﻩﻩ;特殊全嵌套,非自动中断结束MOV AL,00011001Bﻩ ﻩ;从片ICW1OUT 18H,ALﻩﻩﻩ ;电平触发,级连方式MOVﻩAL,20H ﻩﻩ ﻩ;从片ICW2OUT 1AH,ALﻩ ﻩ ;从片中断类型MOV AL,00000100B ;从片ICW3OUT 1AH,ALﻩ ﻩﻩ ;本片连接在主片IR4引脚上MOV AL,00000001B ﻩﻩ;从片ICW4OUTﻩ1AH,ALﻩ ﻩﻩﻩ;非特殊全嵌套,非自动中断结束MOV AL,00011001Bﻩﻩ ;从片ICW1OUTﻩ1CH,ALﻩ ﻩ ;电平触发,级连方式MOV AL,30H ﻩﻩ;从片ICW2OUT 1EH,ﻩAL ﻩ ;从片中断类型MOVﻩAL,00000110Bﻩ ;从片ICW3OUTﻩ1EH,AL ﻩ ;本片连接在主片IR6引脚上MOVﻩAL,00000001B ﻩ ;从片ICW4OUTﻩ1EH,AL ﻩ ;非特殊全嵌套,非自动中断结束注意:由于8086系统有16根数据线,各8259A的端口地址均为偶数(假设各8259A的数据线连接在8086系统的低8位数据线上)。主片用特殊全嵌套,从片用一般全嵌套。给下面的8259A初始化程序加上注释,说明各命令字的含义。MOV AL,13Hﻩﻩ;ICW1:边沿触发,单片8259AOUTﻩ50H,ALﻩ ;MOVﻩAL,08Hﻩﻩ;ICW2:中断类型高5位为00001OUTﻩ51H,AL ﻩ;MOV AL,0BH ﻩ;ICW4:非特殊全嵌套,缓冲方式,主片,非自动中断结束OUT 51H,ALﻩﻩ;设8259A端口地址为20H和21H,如何发送清除ISR3的命令?为了清除ISR3,需要通过OCW2发送特殊的中断结束命令,使SL=1,EOI=1,L2L1L0=011。指令如下:ﻩ MOVﻩAL,01100011BﻩﻩOUTﻩ 20H,AL图4-17能否直接用于8086系统?为什么?图4-17不能直接用于8086系统,因素是:多个设备的中断请求假如直接送往CPU,应采用“线或”的方法,每个接口的中断请求信号应由“OC门(集电极开路门)”以“负逻辑”的方式连接,如下图。电路没有解决中断优先权的问题。CPU用信号响应中断时,会将所有正在申请中断的接口的请求信号清除。加接“菊花链”可以解决该问题。电路没有解决中断类型的发送问题,需要增长相关电路。例如,把设备接口的INTR连接到8259A。ﻬ习题七8255A的方式选择控制字和C口按位控制字的端口地址是否同样,8255A如何区分这两种控制字?写出A端口作为基本输入,B端口作为基本输出的初始化程序。解:8255A的方式选择控制字和C口按位控制字的端口地址同样,它们之间的区别在控制字的D7位(特性位)的值不同,8255A的方式选择控制字D7=1,而C口按位置位/复位控制字D7=0。初始化程序:(设端口地址为,A口:200H,B口:201H,控制口:203H)MOV AL,90HMOV ﻩDX,203HOUT ﻩ DX,AL用8255A的A端口接8位二进制输入,B端口和C端口各接8只发光二极管显示二进制数。编写一段程序,把A端口读入的数据送B端口显示,而C端口的各位则采用置0/置1的方式显示A端口的值。解:(设端口地址为,A口:200H,B口:201H,C口:202H,控制口:203H)MOV AL, 90Hﻩ ;8255A初始化:MOV DX,ﻩ203Hﻩ ;8255A各组方式0,A口输入OUT DX, AL ﻩﻩ;B、C口输出MOV DX,ﻩ200HINﻩAL,ﻩDXﻩ ;读A口输入值MOV DX,ﻩ201HOUT DX, ALﻩ ;送B口输出MOV AH,ﻩAL ﻩ ;A口输入值转存在AH中MOVﻩDX,ﻩ203HMOV CX,ﻩ08ﻩ ;CX置循环次数初值MOV AL,ﻩ00Hﻩﻩ;C端口置0/置1控制字初值LPA:AND AL, 0FEH ﻩ;清除最低位SHRﻩAH, 1ﻩﻩﻩ;A端口一位转入CFADCﻩAL, 0 ﻩ;A端口一位从CF转入命令字OUTﻩDX,ﻩALﻩﻩﻩ;A端口一位从送往C端口相应位ADD AL, 02H ;形成下一个命令字LOOPﻩLPA ﻩ ;解决C端口下一位将8255A用作两台计算机并行通信的接口电路,请画出采用查询式输入/输出方式工作的接口电路,并写出采用查询式输入/输出方式的程序。解:用两片8255作两台计算机8088_A与8088_B之间并行通信的接口电路,两片8255之间的连接如下图所示。两片8255均在方式1、查询方式下工作。(1)8088_A输出程序:(8255_A的A口作为数据输出口,C口的PC0作为“数据输出选通”信号,负脉冲输出。C口的PC6作为“应答”信号输入,负脉冲有效。端口地址:

A口:200H,C口:202H,控制口:203H)DATAﻩSEGMENTBuffer DB “Thisisaexample.”,0DH,0AH,-1DATAﻩENDSCODEﻩSEGMENTSTART:ﻩMOV AX,DATA MOVﻩDS,AXﻩLEA BX,Bufferﻩ;输出缓冲区指针送BX MOV DX,203HﻩMOV AL,0A0Hﻩ;8255_A的方式选择字,A口工作在方式1、输出,C口低四位输出 OUT DX,ALﻩﻩMOV AL,1ﻩOUT DX,ALﻩ;将PC0置1ﻩCALL DELAY ;延时等待对方完毕初始化 ﻩ;A口查询方式输出NEXT: MOVﻩDX,202H IN AL,DL TEST AL,80Hﻩ;判别是否有效ﻩJZ NEXT ;数据尚未取走,等待 MOV DX,200HﻩMOV AL,[BX] OUTﻩDX,ALﻩ;输出一项数据ﻩINCﻩBX MOV DX,203HﻩMOV AL,0ﻩOUT DX NOP NOP INC AL OUT DX,ALﻩ;通过PC0向对方发选通信号(负脉冲) CMP BYTEPTR[BX-1],-1 ;判断输出是否完毕ﻩJNEﻩNEXT ;未完毕,继续ﻩMOV AX,4C00H INTﻩ21HCODE ENDS END START(2)8088_B输入程序:(8255_B的A口作为输入,方式1,PC4作为“数据输入选通”信号,输入,负脉冲有效。PC0为“应答”信号输出,负脉冲有效。端口地址:A口:210H,C口:212H,控制口:213H)DATAﻩSEGMENTBufferﻩDBﻩ80DUP(?)DATA ENDS;CODEﻩSEGMENTSTART:ﻩMOV AX,DATAﻩMOV DS,AXﻩLEA BX,Buffer ;输入缓冲区指针送BXﻩMOVﻩDX,213H MOV AL,0B0Hﻩ;8255_B的方式选择字,A口工作在方式1,输入,C口低四位输出。 OUTﻩDX,ﻩMOVﻩAL,01H OUT DX,AL ;PC0置1,表达没有“应答”信号 CALL DELAYﻩ;延时等待对方状态就绪;A口查询方式输入AGA: MOV DX,212HﻩIN AL,DXﻩTESTﻩAL,20HﻩJZ AGA ﻩﻩ;PC5(IBF)是否为1,不是,无数据输入,继续查询ﻩMOV DX,210H IN AL,DXﻩMOV [BX],AL MOVﻩDX,212H MOVﻩAL,0ﻩOUT DXﻩINCﻩBX NOP NOP INC ALﻩOUT DX,ALﻩ;通过PC0向发送方发“应答”负脉冲ﻩCMPﻩBYTEPTR[BX-1],-1 ;数据接受完了吗?ﻩJNE AGA ;未完,继续 MOV AX,4C00H INTﻩ21HCODEﻩENDS ENDﻩSTART说明:这道题有多种可选的解法,上面的方法是程序比较简朴的一种。这种方法实行时,应先启动8088B,使它一方面“就绪”,然后开始通讯。由于双方都用负脉冲进行选通,联络过程比较简朴,也比较可靠。可选的另一种方法是:在上述连接的基础上用中断方式进行数据传输,以提高CPU的工作效率。需要编制双方的中断服务程序,初始化时要设立中断向量,允许8255中断,开放中断等操作。当然也要连接相应的中断请求信号线。可选的第三种方法是:双方用一根状态线(C端口某一位)送往对方,用这两根线进行联络(“握手”)。这种方法看似简朴,其实程序是比较复杂的。双方联络的过程如下图。 ﻩ8088B在初始化完毕后,把它的状态线置为“高电平”,表达可以开始接受数据。而8088A在初始化完毕后,把它的状态线置为“低电平”,表达数据传输尚未开始。8088A查询8088B的状态,在发现8088B“就绪”(状态线为高电平)后,把数据发往8255的(A或B)端口。8088A发出数据之后把本机状态置为“就绪”(高电平),表达数据已经送到端口的数据线上。8088B查询8088A的状态,得知8088A的状态线“就绪”,知道8088A已经把数据送出,于是从8255接受数据,并把自身的状态线置为“未就绪”,表达已经把8088A发出的数据接受。8088A查询到8088B的状态线变为低电平,知道对方已经把数据接受完毕,于是把本机的状态线置为“低电平”,表达这个数据的发送已经完毕,而下一个数据尚未发出。8088B查询到8088A的状态线变为“低电平”,知道对方已经结束了第一个数据的传输,在本机做好下一个数据的接受准备之后(例如,把数据存入缓冲区,假如缓冲区满,则把缓冲区内容存入磁盘文献),把本机状态线置为“高电平”,表达已经做好了接受下一个数据的准备。8088A得知8088B做好准备,发送下一个数据。于是,下一个数据的传输可以由此开始(转①)。这种方法实行时,应一方面启动8088A。设计一个用8255A作为8个七段显示器的接口电路,并设计一个把内存地址为ADDRA的8个数字在这8个七段显示器上显示的程序。解:设8个七段显示器采用共阳接法,A口控制段的显示,B口控制位的显示。端口地址A口:200H,B口:201H,控制口:203HDATAﻩSEGMENT ADDRA ﻩDB ×,×,×,×,×,×,×,×ﻩTABLEﻩﻩDB 40H,4FH,24H,30H,19HﻩﻩDBﻩ12H,02H,78H,00H,10HDISPBITﻩ DB ?DATAﻩENDSCODE SEGMENTASSUME CS:CODE,ﻩDS:DATASTART:MOVﻩAX, DATA ﻩﻩMOV DS,ﻩAXMOV AL, 80Hﻩ;对8255A初始化,方式0,输出MOV DX, 203HﻩOUTﻩDXLEAﻩBX,ﻩTABLE ;BX置为七段码表首地址MOV DISPBIT,ﻩ7FHﻩ;置位码初值为7FHLEA SI,ﻩADDRA ;SI置为显示缓冲区首地址MOVﻩCX, 8ﻩ;CX置为循环次数初值8AGA:ﻩMOV AL,ﻩ0FFHﻩ ﻩﻩMOV DX, 201HOUT DX,ﻩALﻩ;熄灭所有数码管MOVﻩAL,ﻩ[SI] ;取出一个待显示数ﻩXLAT ﻩ;转换成七段码MOVﻩDX, 200HOUTﻩDX, ALﻩ;送入段码端口MOV AL, DISPBITﻩ;MOVﻩDX, 201HOUT DX, AL ;送当前位码,点亮一个数码管RORﻩDISPBIT, 1ﻩ;产生下一个位码INC SIﻩﻩ;修改指针,指向下一个待显示数据CALL DELAY ;延时LOOPﻩAGAﻩ ;解决下一个数码管的显示MOVﻩAX,ﻩ4C00HINT 21HCODEﻩENDSENDﻩSTART8254定期/计数器的定期与计数方式有什么区别?8254在方式0工作时,各通道的CLK、GATE信号有什么作用?各通道的控制字地址都相同,8254是如何区分的?解:8254作为计数器使用时,对CLK端的输入脉冲进行单纯的减法计数,这时CLK端输入的脉冲不作为计时基准。此外,用作计数器时,计数完毕后必须重新初始化,只能使用一次。ﻫ8254作为定期器使用时,规定CLK端输入的脉冲必须作为时钟基准,通过对该基准时钟脉冲的计数来实现精拟定期。用作定期器时,计数的过程周而往复,反复进行。8254工作在方式0时,CLK端输入计数用的脉冲信号;GATE信号为高电平时,对CLK端输入的脉冲进行计数;GATE信号为低电平时,暂停计数;GATE信号重新为高电平后,恢复原先的计数。由8254的方式控制字中的D7、D6两位来选择计数通道。设8254的端口地址为0240H~0243H,通道0输入的CLK频率为1MHz,为使通道0输出1KHz的方波,编写初始化程序。假如让通道0与通道1级联(即OUT0接CLK1)实现1秒钟定期,则初始化程序如何编制。解:通道0输出1KHz的方波:计数初值为1MHz/1KHz=1000,等于十六进制数03E8H,控制字设定为先写低8位,后写高8位,方式3工作,二进制计数方式,所以控制字为36H。初始化程序如下:MOVﻩAL,36Hﻩ;MOV DX,243H ;写入通道0的控制字OUTﻩ DX,ALﻩ;MOV DX,240H ;MOVAL,0E8H ;写入通道0的时间常数OUTﻩDX,ALﻩ;MOVAL,03H ;ﻩOUT DX,AL ;通道0与通道1级联实现1秒定期:要实现1秒定期,对1MHz输入脉冲进行分频的系数为1000000=5000×200。通道0工作在方式2,分频系数200,采用十进制计数,则通道0方式控制字为:25H。通道1工作在方式0,分频系数5000,也采用十进制计数,则通道1方式控制字为:61H。初始化程序如下:MOVAL,25Hﻩ;通道0控制字:方式2,十进制计数,只写高8位MOVDX,243Hﻩ;OUTDX,AL ;MOVAL,61H ;通道1控制字:方式0,十进制计数,只写高8位OUTDX,AL ;MOVDX,0240H ;MOVAL,02Hﻩ;通道0时间常数(BCD数高8位)OUTDX,ALﻩ;MOVAL,50Hﻩ;通道1时间常数(BCD数高8位)MOVDX,0241Hﻩ;OUTDX,ALﻩ;假如要再次进行1秒钟定期,则需要对通道1重新初始化。假如需要连续的1秒定期信号,则通道1应选用方式3。ﻩ对总数为1000000的分频系数,可以有多种分解方法。编制一个使PC机的8254产生600Hz方波的程序,并使该方波送至扬声器发声。解:PC机中运用8254定期器的通道2来驱动扬声器。通道2的工作及其输出受到主板上8255A的PB口(口地址61H)控制:GATE2接PB0,即PB0=1时,定期器才也许工作;OUT2与PB1相与后输出到扬声器,即PB1=1时,定期器2的OUT2才干输出到扬声器。定期器的输出波形是对1.1931MHZ频率信号分频得到的,因此将定期器2工作在方式3,分频系数用下式计算:分频系数=1193100÷给定频率(1193100=12348CH)因此程序如下:MOVﻩAL, 0B6H ;通道2控制字:方式3,16位常数OUT 43H,ﻩAL ﻩ;送入8254控制端口MOV DX,ﻩ12H ;MOVﻩAX, 348CH ;DX,AX中置入常数12348CHMOVﻩDI,ﻩ600 ;DI为输出频率DIVﻩDIﻩﻩ ;除法运算,计算分频系数OUT 42H, ALﻩ ;低8位送通道2MOV AL,ﻩAHﻩ ;OUT 42H, AL ;高8位送通道2IN AL,ﻩ61H ;ORﻩAL,ﻩ3 ﻩ;OUTﻩ61H, AL ;将8255A的B端口低2位置“1在RS-232C接口标准中,引脚TxD、RxD、、、、、的功能是什么?解:TxD:串行数据输出。RxD:串行数据输入。:数据终端准备好状态,低电平有效。用于向调制解调器或外设表达数据终端已准备好。:数据设备准备好状态,低电平有效。调制解调器或外设准备好时eq\o(\s\up7(——),DSR)有效。:请求发送信号,低电平有效。表达数据终端设备已经做好发送数据的准备,请调制解调器/外设准备接受数据。:清除发送(允许传送)信号,低电平有效。调制解调器/外设作好传送准备,允许数据终端设备发送数据时有效。16550的通信控制寄存器中的寻址位有什么作用?在初始化编程时,应当如何设立?解:16550芯片内,接受缓冲寄存器/发送保持寄存器的地址与除数低字节寄存器的地址相同,中断允许寄存器的地址与除数高字节寄存器的地址相同。为了区分同一地址的不同用途,16550使用DLAB位来加以标记。DLAB位是通信线控制寄存器的最高位D7,该位设立为0,随后的相应操作对接受缓冲寄存器/发送保持寄存器或中断允许寄存器进行;该位设立为1,随后的相应操作对除数寄存器进行。在向除数寄存器写入初值之前,应将DLAB置为1。由于一般不需要反复访问除数寄存器,写完除数后应将DLAB置为0,以方便后续的操作。编写用PC机中16550查询方式输入50个字符的异步通信程序。设16550的端口地址为3F8H~3FFH,数据格式为:8位数据位、1位偶校验位、2位停止位,通信速率为19.2Kbps。解:接受子程序中,假如接受成功,清CF标志,否则,置位CF标志位。程序如下:;16550查询方式接受程序DATA SEGMENT REC_DATAﻩDB50DUP(?)ﻩ;存放接受的数据 TIMES ﻩDW50ﻩﻩ ;要接受的数据个数DATA ENDSCODEﻩSEGMENTﻩASSUME CS:CODE,DS:DATAﻩBEGIN:ﻩMOV AX,DATA MOV DS,AX;初始化16550 MOVﻩDX,03FBH ;16550控制寄存器地址送DXﻩMOV AL,80H ﻩ;置DLAB=1,设立除数寄存器ﻩOUT DX,AL MOV AX,003CHﻩﻩ;波特率为19200bps时,除数为003CHﻩMOV DX,03F8Hﻩ ﻩ;除数寄存器地址送DX OUTﻩDX,ALﻩMOVﻩAL,AHﻩINC DX OUT DX,ALﻩMOV AL,1FHﻩ ﻩ;8位数据位,偶校验,2位停止位ﻩMOV DX,03FBHﻩﻩ;16550控制寄存器地址送DXﻩOUTﻩDX,AL ﻩﻩ;写入控制字……CALLﻩRECEIVE……MOV AH,4CH ;程序结束,返回操作系统 INT 21H ;查询方式接受子程序RECEIVEPROCﻩNEAR LEAﻩBX,REC_DATAﻩ;接受缓冲区首地址送BXﻩMOVﻩCX,TIMES ﻩ;要接受的数据个数送CXREPIN:ﻩMOV DX,03FDH ;通信状态寄存器地址送DXﻩINﻩAL,DX TEST AL,1EHﻩﻩ;检测接受过程有无错误 JNZﻩERRORﻩTESTﻩAL,01Hﻩﻩ;检测接受缓冲器中是否有数据 JZ REPINﻩ ;没有数据,继续检测 MOVﻩDX,03F8Hﻩﻩ;数据接受寄存器地址送DX IN AL,DXﻩMOVﻩ[BX],AL INCﻩBX LOOPﻩREPINﻩCLCﻩ ﻩﻩ;接受成功,清CF标志位ﻩJMP DONEERROR: STCﻩ ﻩﻩ;接受不成功,置CF标志位DONE:ﻩRETRECEIVEﻩENDPCODE ENDSﻩENDﻩBEGINIntel8251A与16550芯片相比较,有些什么不同之处?答:两个芯片的重要区别是:16550芯片只能进行异步串行通讯,而Intel8251A不仅可以进行异步串行通讯,并且也可以用于同步串行通讯。Intel8251A芯片没有内部的波特率发生电路,因此,它所需要的发送、接受时钟信号只能依赖外部提供。为什么Intel8251A芯片初始化时需要先送3个00H,1个40H?是否每次都需要?答:由于Intel8251A只使用两个端口地址,所有的控制信息都写入同一个地址的端口内。这样,所有的控制信息必须按照一定的顺序写入,否则就会产生错误。为了保证初始化时,Intel8251A芯片处在初始的状态,可以向Intel8251A先送3个00H,1个40H。假如程序可以保证Intel8251A已经处在初始状态,那么这项操作是可以省略的。ﻬ习题八什么是DMA传输?DMA传输有什么优点?为什么?所谓直接存储器传送(DMA)是指将外设的数据不通过CPU直接送入内存储器,或者,从内存储器不通过CPU直接送往外部设备。使用DMA传输之后,每个数据的传输过程不需要CPU参与,在DMA控制器的控制下,在一个DMA总线周期里完毕数据在外部接口和存储单元之间的直接传输。所以使用DMA传输既可以减轻CPU的承担,又可以缩短系统对外部设备的响应时间,提高数据传输速率。叙述一次数据块DMA传输和一个数据DMA传输的全过程。一次数据块DMA传输的全过程:程序对DMA控制器进行初始化,写入存储器数据块首地址,传输字节数,传输方向等信息。同时启动外部设备(例如,启动输出设备进行第一次输出);外部设备每完毕一次输入/输出,它的完毕信号通过DMA控制器启动一次DMA数据传输;所有预设的数据传输完毕,DMA控制器发出“传输完毕”信号,向CPU申请中断。CPU在中断服务程序中设立完毕标志,或者对DMA控制器进行下一次初始化。一个数据DMA传输的全过程。外设准备就绪,需要进行DMA操作时,向DMA控制器发出“DMA请求信号”。DMA控制器接到此信号后,向CPU发“总线请求信号”。CPU接到总线请求信号,在当前总线周期结束后,发出“DMA响应信号”。DMAC向外部设备发出“外设读”或“外设写”控制信号,向存储器发出“存储器写”或“存储器读”控制信号,同时发出存储单元地址。在这二个信号的作用下,一字节的数据从外设接口通过数据总线送往存储单元,或者从存储单元送往外设接口。传送1个字节之后,DMAC自动修改内部地址寄存器和字节计数器的内容。DMA控制器撤消“总线请求信号”,CPU也撤消“总线应答”信号。什么叫DMA通道?它如何组成?DMA通道是控制一个外设接口和存储器进行DMA传输的相关电路的总和。每个通道涉及地址寄存器、字节计数器、方式寄存器、DMA请求触发器、屏蔽触发器、状态寄存器以及所需的其他控制电路。DMA控制器8237A的成组传送方式和单字节传送方式各有什么特点?它们的合用范围各是什么?成组传送方式下,DMA控制器获得总线控制权后,可以连续进入多个DMA周期,进行多个字节的传输。这种方式可以获得最高的数据传输速度。在数据传输期间,CPU不能访问总线。假如一次传输的数据较多,这种方式会对系统工作产生一定的影响。成组传送方式合用于外部设备规定很高的传输速率,系统其他承担较轻,连续占用总线不会产生严重后果的情形。在单字节传输方式下,8237A完毕1个字节传输后都释放系统总线,一次DMA传输结束,CPU可以在每个DMA周期结束后控制总线。这种方式合用于外部设备的传输速率规定不太高,或者系统不允许有较长时间停顿的情况。如何用指令启动一次DMA传输?如何用指令允许/关闭一个通道的DMA传输?用指令将DMA请求寄存器中相关位置位,可以启动一次DMA传输。用指令将DMA屏蔽寄存器中相关位复位,可以允许一个通道的DMA传输。将DMA屏蔽寄存器中相关位置位,可以关闭一个通道的DMA传输。DMA控制器8237A能不能用中断方式工作?请说明。DMA控制器8237A可以用中断方式工作。将8237A的信号反相后连接到中断控制器的中断请求输入端,则一次数据块传输结束后,可以向CPU申请中断,由专门的中断服务程序进行结束解决。如何判断某通道的DMA传输是否结束?有几种方法可供使用?判断某通道的DMA传输是否结束有二种方法。其一是读出DMA控制器的状态寄存器内容,测试其中代表该通道的状态位,可以得知该通道的DMA传输是否结束。其二是读出该通道的字节计数器内容,假如值为0(对8237A而言为-1),表达该通道的DMA传输已经结束。此外,可以用8237A的信号向CPU申请中断。一旦进入这个中断服务程序,表白该通道的DMA传输已经结束。叙述一次DMA控制器8237A编程使用的重要环节。DMA控制器8237A初始化编程的重要环节为:发复位命令;写命令字,设立8237A的工作方式;写方式字,设立需使用的通道的工作方式;清除先/后触发器;写入内存储器起始地址;写入传送的字节数-1;清除该通道的屏蔽位;启动外部设备,假如是内存到输出设备,用指令设立第一次DMA请求。使用DMA控制器8237A传输一个字节需要多少时间?受那些因素影响?请作具体分析。使用DMA控制器8237A传输1字节数据需要4个DMA控制器使用的时钟周期,对于速度稍慢的外设/存储器,也可以插入一个或多个等待周期。影响DMA周期时间长短的因素有:DMA控制器使用的时钟频率:频率越高,DMA周期越短;存储器和外部设备的工作速度:假如速度跟不上DMA时钟的规定,则需要插入等待周期,从而延长整个DMA周期;使用压缩时序可以缩短DMA周期;假如存储器数据块首地址低8位为“0”,前256个字节内存地址的高8位相同,它们传送时只需要发送一次高8位地址,后面255个数据的DMA周期达成最小;假如进行存储器之间数据传输,每个字节的传输需要二个DMA周期。ﻬ习题九A/D和D/A转换在微机应用中分别起什么作用?计算机加工、解决的信号可以分为数字量(Digit)和模拟量(Analog)两种类型。现代计算机内部都采用二进制表达的数字量进行信号的输入、存储、传输、加工与输出。为了使用计算机对模拟量进行采集、加工和输出,需要把模拟量转换成便于数字计算机存储和加工的数字量(A/D转换),或者把数字量转换成模拟量(D/A转换)。因此,D/A与A/D转换是计算机用于多媒体、工业控制等领域的一项重要技术。如何将D/A转换器连接到微型计算机?D/A转换器将数字量转换成模拟量输出。为了保存由计算机送来的数字信号,通常需要配置一个“数据寄存器”,向D/A转换器提供稳定的数字信号。D/A转换芯片输出的模拟信号功率一般比较小,为了可以驱动执行机构工作,D/A转换器的输出一般都要连接到运算放大器进行功率放大。修改图9-5,将DAC0832的两级锁存合为一级使用,画出连接图,并编写输出三角波和锯齿波的程序。为了将DAC0832的二级缓冲锁存器合为一级使用,可以将它的第二级置为“直通”,也就是把和接地,用第一级的和对输入进行控制,如下图。输出三角波的程序段如下:S0:ﻩMOVAL,0 ;AL中置初值0,输出三角波的上升段S1: CALLﻩOUTPUTﻩﻩﻩﻩ;调用输出子程序,输出一个值ﻩINCﻩAL ﻩ ;产生上升段下一个值 JNZ S1ﻩ ﻩ;上升段未结束,继续输出ﻩ DECﻩALﻩ ﻩﻩ;恢复到最大值S2: CALL OUTPUT ﻩﻩ ;输出三角波的下降段 DECﻩALﻩﻩ ;产生下降段下一个值 ﻩJNZﻩﻩS2 ;下降段未结束,继续输出 JMP S1 ﻩﻩﻩ ;下降段结束,输出下一个三角波输出锯齿波的程序段如下:MOV AL,0J1:CALL OUTPUTﻩﻩﻩ;输出当前值INCﻩALﻩ ;产生下一个输出值JMP J1子程序“OUTPUT”为上面两段程序共用:OUTPUTﻩPROC NEAR MOVﻩDX,PORT0ﻩ ;DAC0832端口地址ﻩOUTDX PUSHAXﻩMOVAX,Nﻩ ;延时的时间常数WT: DEC AX JNZ WT ;延时ﻩPOPﻩAX RETOUTPUTﻩENDP一个8位D/A转换器的满量程(相应于数字量255)为10V。分别拟定模拟量2.0V和8.0V所相应的数字量。模拟量2.0V所相应的数字量为(2.0/10)×255=51模拟量8.0V所相应的数字量为(8.0/10)×255=204简述逐次逼近式A/D转换器的工作原理,并将它和∑-△A/D转换器进行比较。逐次逼近型(也称逐位比较式)A/D转换器重要由逐次逼近比较寄存器SAR,D/A转换器、比较器以及时序和控制逻辑等部分组成。它从SAR的最高位开始,逐位设定SAR寄存器中的数字量,经D/A转换得到电压VC,与待转换模拟电压Vx进行比较。通过比较,逐次拟定各位的数码应是“1”还是“0”。转换结果能否准确逼近模拟信号,重要取决于SAR和D/A的位数。位数越多,越能准确逼近模拟量。∑-△型模数转换器是根据二次采样的差进行计算的,有很强的抗干扰能力,转换精度高,以串行方式输出数据。常用于高分辨率(常见为16、18、24位)的中、低频信号测量。当模拟量输入端接有多路开关时,通道切换后要等待足够长的时间,才干读取转换结果。若ADC输入模拟电压信号的最高频率为100KHZ,采样频率的下限是多少?完毕一次A/D转换时间的上限是多少?香农定理告诉我们:采样频率一般要高于或至少等于输入信号最高频率的2倍。因此,采样频率的下限应是200KHz。在200KHz采样频率下,完毕一次A/D转换时间的上限是5μs。实际应用中,采样频率可以达成信号最高频率的4~8倍。假如采用400KHz的采样频率,完毕一次A/D转换时间的上限是2.5μs。在使用A/D和D/A转换器的系统中,地线连接时应注意什么?模拟信号很容易受到电源和数字信号的干扰引起波动。为提高输出的稳定性,减少误差,模拟信号部分必须采用高精度基准电源VREF和独立的地线。所以,要把数字地和模拟地分开。模拟地是模拟信号及基准电源的参考地,其余信号的参考地,涉及工作电源地,数据、地址、控制等相应的“地”都是数字地。连接时,先所有的模拟地连接在一起,把所有的数字地连接在一起,然后在一个点上(注意:不是两个或更多)把模拟地和数字地连接起来。如何用一个AD芯片测量多路信息?模拟量多于一个时,可以使用多路模拟开关,轮流接通其中的一路进行转换,使多个模拟信号共用一个ADC进行A/D转换。一台工控PC有两块818卡,基地址分别为BASE1,BASE2,试编制采样24路(一块卡16路,一块卡8路)模拟量的C语言程序。#include“dos.h”#define N24ﻩ/*采样点数*/#define BASE10x300ﻩﻩﻩ #defineﻩBASE20x310#defineﻩINTERRUPT0x1cﻩ/*定期中断类型号*/staticunsignedad,tad[N],tt[N][16];voidfarhandler();ﻩ/*函数handler()声明*/voidAD818(int);ﻩ/*函数AD818()声明*/void(interruptfar*oldhandler)();/*定义oldhandler为指向中断服务程序的指针*/…………..main()ﻩ ﻩ ﻩ{oldhander=getvect(INTERRUPT);ﻩ/*读出原1CH中断向量*/setvect(INTERRUPT,handler);ﻩ/*把新的1CH中断向量写入向量表*/…………..}voidAD818(intscan)ﻩ/*函数AD818从AD818卡采集一次数据*/{intlbit,hbit,it=0,status,base,ch;ﻩ/*采集结果置入全局变量ad中*/ base=(scan<=15)?BASE1:BASE2;ﻩ/*根据点号拟定所在采集卡的基地址*/ch=scan%16; /*计算该点在本采集卡上的通道号*/outportb(base+2,ch); /*向AD818输出通道号*/outportb(base+1,0);ﻩ/*AD输入量程控制*/outportb(base+9,0);ﻩ/*不使用中断或DMA*/outportb(base+0,0);ﻩ/*启动AD转换*/do{it=it+1;status=inportb(base+8)&128;/*读出AD状态寄存器,查询EOC,等待AD转换完毕*/}while(status!=0&&it<=10000);lbit=inportb(base+0)&240; /*读入低8位,清除其中无效的最低4位*/hbit=inportb(base+1); /*读入高8位*/if(it<=10000)ad=hbit*16+lbit/16;ﻩ/*采集正常,拼接二段数据*/elsead=0;ﻩ/*采集数据超时,818卡有故障*/}voidinterruptfarhandler() /*55ms定期中断服务程序,采集每个点的数据*/{intisp,s,i;for(isp=0;isp<=N-1;isp++){AD818(isp);ﻩ/*采集一个模拟量,存入ad*/for(i=0,s=0;i<=14;i++)ﻩ{tt[isp][i]=tt[isp][i+1];ﻩ/*移动队列中的数据,以便装入新的数据*/s=s+tt[isp][i];}ﻩ/*求前15个数据的累加和*/tt[isp][15]=ad;s=s+ad;ﻩ/*新数据进队列,求出16个数据的累加和*/tad[isp]=s/16;ﻩ/*求出16个数据的平均值*/}oldhandler(); /*进入原1CH中断服务程序,此后返回断点*/}ﻬ习题十查找相关资料,用列表方式给出8088,8086,……直到P4各代微解决器的地址、数据线引脚数量,并推算出各自的内存寻址空间。解决器数据线地址线内存寻址空间80888201MB808616201MB80286162416MB80386/48632324GBPentium64324GBPentium2~4643664GB什么是MMX指令?它有什么特点?MMX指令是“多媒体扩展指令”的英文简称,它采用SIMD(单指令流多数据流)技术,使得解决器在一条指令中对多个数据进行解决,提高了对多媒体数据的解决能力。什么叫动态执行?使用动态执行技术会带来什么好处?动态执行是通过预测指令流和数据流,调整指令的执行顺序,最大地发挥CPU内部各部件的功效,提高系统执行指令的速度。动态执行重要采用了:多路分支预测:运用转移预测技术允许程序几个分支流同时在解决器内执行;数据流分析:通过度析指令数据的相关性,把指令进行优化排序后执行,充足运用解决器内部资源;推测执行:根据各推测最终的对的性,对多个分支的运营结果进行取舍。32位微解决器有哪几种工作方式?各有什么特点?32位微解决器有4种不同的工作方式:实地址方式、保护方式、虚拟8086方式、系统管理方式。实地址方式:实地址方式使用16位80x86解决器的寻址方式(使用20位地址寻址1MB空间)、存储器管理和中断管理。可以使用32位寄存器,使用特权级0,可以执行大多数指令。 保护方式:保护方式是32位微解决器的基本工作方式。它使用32位地址寻址4GB的实存空间,通过虚拟存储管理、用户优先级管理、I/O管理等技术,扩大可使用的存储空间,对操作系统和用户程序进行隔离和保护。虚拟8086方式:虚拟8086方式是保护模式下为任务提供的的8086工作环境。每个任务使用16位地址寻址1MB的内存空间,以最低特权级运营,不能使用特权指令。系统管理方式:系统管理模式重要用于电源管理,可以使解决器和外围设备部件进入“休眠”状态,在有键盘按下或鼠标移动时“唤醒”系统,使之继续工作。运用SMM可以实现软件关机。叙述XT总线与ISA总线的异同之处。XT总线可以看作是ISA总线的一个“子集”,它涉及8位数据线,20根地址线,使用与CPU相同的4.77MHz的时钟信号。ISA总线在XT总线的基础上,把数据线扩展到16根,地址线扩展到24根,使用独立于CPU的8MHz时钟信号,中断和DMA通道数目都有所增长。ISA总线插槽由8位的XT总线插槽和ISA总线扩展插槽两部分组成。什么叫分级总线?使用分级总线有什么优点?所谓分级总线是指系统中存在多组总线,每组总线可以有不同的数据线宽度、数据传输速率和不同的信号传输协议。系统内的设备按照它们对传输速率、数据吞吐量的不同规定合理地连接在不同的总线上。不同总线之间通过“桥”电路进行连接。使用分级总线可以使各种设备的数据传输规定得到最大限度的满足,同时使整个系统的数据吞吐量和效能达成最大化。简述“两个中心”结构与“南北桥”结构的区别,同时说明“两个中心”结构的优越之处。“南北桥”结构和“中心结构”都支持多级总线的系统结构。它们的重要区别在于,南桥芯片连接的所有高速外设都要通过PCI总线与解决器相连接,而“中心结构”里所有连接IO设备的总线(PCI,ISA,USB……)都通过IO控制中心(ICH)与中心高速接口直接连接,从而缓解了PCI总线数据互换的拥挤限度。相比较而言,“中心结构”对信息流的途径分派更为合理。CPU←→Cache,Cache←→主存,主存←→辅存之间的数据传输各有什么特点?为什么?请分析因素。CPU与Cache之间数据传输的重要特点是:高速:Cache以与CPU相同或接近的速度工作;不拟定:CPU对Cache的访问也许因“命中”而成功,也也许以“失靶”而失败。Cache与主存之间数据传输的重要特性是:数据传输以“页”为单位,使用“成组传输方式(突发总线方式)”进行。导致上述特点的因素是,这一层次以“高速”为追求的目的,运用了程序、数据的“局部性”原理。主存与辅存之间的数据传输以“数据块/扇区”为单位,通常以DMA方式进行。导致上述特点的因素是,这一层次以“大容量”、“低价格”为追求的目的,辅存大容量、“粗粒度”的结构特点正好可以满足对上述目的的规定。系统对不同层次的数据传输有着不同的规定,因而设立了不同的软硬件结构,最终导致了传输方式上的差异。什么叫“相联存储映像表”?说明它的结构和用途。相联存储映像表是Cache内纪录Cache中各页在主存的位置和其他信息的表格,由各页的“标记(Tag)”,“状态”和“LRU位”组成。“标记(Tag)”记录了该页在主存中的位置,供CPU访问时进行匹配查找使用。“状态”和“LRU位”用于Cache页的替换操作。为什么要进行Cache和主存的“映像”?有哪几种相联映像的方法?比较各自的利弊。Cache和主存的“映像”是主存页调入Cache的“规则”,为了提高CPU在Cache中查找信息的速度,这种“规则”是必须的。常见相联映像的方法有三种:全相联映像法:内存页可以调入Cache的任何一页,规则简朴,页冲突的也许性最小,查找所需工作量最大。直接映像法:每一个内存页只能调入Cache中相同页号的一个页,规则简朴,查找方便,块冲突的也许性大。组相联映像法:每一个内存页可以与Cache中一个组内的若干个页面相相应,规则稍复杂,查找工作量中档,块冲突的也许性中档。什么叫“突发总线周期”?它有什么优点?“突发总线周期”也称为“成组传送方式”,总线主设备在发送一个主存地址之后,通过连续的多个周期,传输(读/写)多个地址相连的存储单元的数据。这种方式省去了多次发送地址、多次申请总线和多次互相联络的过程,因此可以获得很高的数据传输速率。逻辑地址是如何转换成线性地址的?简要叙述转换过程。实地址方式下没有“线性地址”。保护模式下,逻辑地址由“段号”和“段内地址”两部分组成。使用“段号”查找“段描述符表”,可以获得该段的起始地址,与“段内地址”相加,就得到了相应的“线性地址”。线性地址是如何转换成物理地址的?简要叙述转换过程。“线性地址”由处在高位的“页组号”、处在中间的“页号”和处在低位的“页内地址”三部分组成。用“页组号”查找“页组表”,得到“页表”的起始地址;用“页号”查找该“页表”,得到该页的起始地址;页起始地址加上“页内地址”就得到了它相应的物理地址。请分析使用虚拟存储管理带来的利弊。虚拟存储管理把辅存的一部分用作“虚拟”的主存,扩大了操作系统可分派,程序员可运用的存储空间,便于实现任务之间的隔离和保护,有效地支持了“多任务”运营环境的实现。它还可以有效地克服“内存碎片”问题,简化了存储管理。但是,实现虚拟存储后,每次访问主存都需要进行两次地址的转换,增长了系统的复杂性,增长了系统的硬件成本,减少了访问主存的速度,并且,由于系统复杂限度的增长,系统的可靠性也会受到影响。32位微解决器实行保护机制的目的是什么?有哪些重要措施?32位微解决器实行保护机制的主线目的在于增长在“多任务”运营环境下系统的可靠性,使得任务之间、任务和操作系统之间实现隔离和保护。为了实现隔离和保护,采用了以下几项措施:为任务和资源设定一个“优先级”,优先级较低的任务不能访问优先级较高的资源,不能调用优先级较高的程序模块。使用虚拟内存管理机制,使得任务和任务、任务和操作系统所使用的存储空间互相隔离,从而保证每个任务的正常运营不受其它任务的影响,一个任务的故障不影响整个系统的正常运营。说明操作系统在保护模式下启动一个任务的过程。一个任务用JMP或CALL指令启动一个新的任务时,解决器将当前任务的所有通用寄存器、所有段寄存器中的选择子、EFLAGS、EIP存入该任务自身的TSS,然后将新任务的选择子、描述符装入TR寄存器,并且将相应TSS段中所保存的通用寄存器、段寄存器、EFLAGS、EIP副本装入解决器相应的寄存器中。在CS:EIP的控制下,一个新的任务开始执行。用JMP、CALL指令调用同一个任务中其他程序段时,指令中的“段选择子”及其描述符被存入CS寄存器,“偏移地址”进入EIP,于是,目的程序被执行。对于CALL指令,本来程序的返回信息“CS:EIP”被压入堆栈,和16位微解决器中十分相似。中断和异常也会导致任务的转换。32位微解决器如何实行对I/O过程的管理?保护方式下对I/O过程的管理重要有两项措施:任务状态段TSS中有一个最多64Kbits组成的“I/O允许位图(IOM)”,它的每一位相应一个I/O端口,为0表达该端口允许这个用户进行I/O操作。解决器一方面检查存放在CS中的当前任务的CPL(当前任务优先级),假如CPL的特权级高于或等于EFLAGS中由IOPL规定的特权级,I/O操作不会受限制,否则将进一步检查IOM,对IOM为1的端口进行操作将产生保护异常;对于运营在虚拟8086方式的任务,用IOM来控制对I/O端口进行访问,对位图相应位为1的端口进行访问将产生保护异常。另一种办法是:在IOM中封锁对所有端口的访问,当前任务一旦执行I/O指令,立即产生保护异常,进入由操作系统设立的“异常解决程序”,在操作系统的控制下进行间接的“I/O操作”。简要叙述保护方式与实地址方式下的中断管理方法的区别。在实地址方式下,32位80X86微解决器采用与16位80X86相同的中断管理机制,用1KB大小的“中断向量表”存储各中断服务程序入口地址,这些“中断向量”按照“中断类型”的顺序存放。中断向量表存放在地址0000:0000开始的主存中。保护方式下用“中断描述符表”来指出各中断解决程序的入口地址,每一个中断类型相应一个“中断门”或“陷阱门”描述符。中断描述符表可以放在内存的任何位置,表的首地址存放在IDTR寄存器中。保护模式下中断响应的过程与实地址方式基本相同,但是可以用中断机制进行任务的切换。什么叫“串行中断”?它有什么优点?串行

温馨提示

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

评论

0/150

提交评论