1第5章微计算机中处理器与I/O设备间数据传输控制方法1.试说明一般中断系统的组成和功能。答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑。2.什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。3.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程。硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。4.试叙述基于8086/8088的微机系统处理硬件中断的过程。答:以INTR请求为例。当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。5.在PC机中如何使用“用户中断”入口请求中断和进行编程?答:PC机中分配给用户使用的中断是IRQ9,经扩展插槽B4引出,故把用户的中断请求线连接到B4上。在应用程序中,利用25H号系统调用将中断服务程序的入口地址写入对应0AH类型中断对应的中断向量表中去。在应用程序中把主片8259AD2屏蔽位清0,把从片8259AD1屏蔽位清0,使主片的IR2、从片的IR1可以输入中断请求。中断服务程序结束前向主片8259A发中断结束命令。应用程序结束之前对主片的IR2和从片的IR1进行屏蔽,关闭用户中断请求。6.8259A中断控制器的功能是什么?答:8259A中断控制器可以接受8个中断请求输入并将它们寄存。对8个请求输入进行优先级判断,裁决出最高优先级进行处理,它可以支持多种优先级处理方式。8259A可以对中断请求输入进行屏蔽,阻止对其进行处理。8259A支持多种中断结束方式。8259A与微处理器连接方便,可提供中断请求信号及发送中断类型码。8259A可以进行级连以便形成多于8级输入的中断控制系统。7.8259A初始化编程过程完成那些功能?这些功能由那些ICW设定?答:初始化编程用来确定8259A的工作方式。ICW1确定8259A工作的环境:处理器类型、中断控制器是单片还是多片、请求信号的电特性。ICW2用来指定8个中断请求的类型码。ICW3在多片系统中确定主片与从片的连接关系。ICW4用来确定中断处理的控制方法:中断结束方式、嵌套方式、数据线缓冲等。8.8259A在初始化编程时设置为非中断自动结束方式,中断服务程序编写时应注意什么?答:在中断服务程序中,在返回主程序之前按排一条一般中断结束命令指令,8259A将ISR2中最高优先级位置0,结束该级中断处理以便为较低级别中断请求服务。9.8259A的初始化命令字和操作命令字有什么区别?它们分别对应于编程结构中那些内部寄存器?答:8259A的工作方式通过微处理器向其写入初始化命令字来确定。初始化命令字分别装入ICW1~ICW4内部寄存器。8259A在工作过程中,微处理器通过向其写入操作命令字来控制它的工作过程。操作命令字分别装入OCW1~OCW3内部寄存器中。8259A占用两个端口号,不同的命令字对应不同的端口,再加上命令字本身的特征位及加载的顺序就可以正确地把各种命令字写入对应的寄存器中。10.8259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别?答:IF是8086微处理器内部标志寄存器的一位,若IF=0,8086就不响应外部可屏蔽中断请求INTR引线上的请求信号。8259A有8个中断请求输入线,IMR中的某位为1,就把对应这位的中断请求IR禁止掉,无法被8259A处理,也无法向8086处理器产生INTR请求。11.若8086系统采用单片8259A中断控制器控制中断,中断类型码给定为20H,中断源的请求线与8259A的IR4相连,试问:对应该中断源的中断向量表入口地址是什么?若中断服务程序入口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定位?答:中断向量表入口地址为:0段的0090H地址。对应4FE24H中断服务程序入口,在向量表中定位情况:(0090H)=24H、(0091H)=00H、(0092H)=E0H、(0093H)=4FH。12.试按照如下要求对8259A设定初始化命令字:8086系统中只有一片8259A,中断请求信号使用电平触发方式,全嵌套中断优先级,数据总线无缓冲,采用中断自动结束方式。中断类型码为20H~27H,8259A的端口地址为B0H和B1H。答:ICW1=1BH(送B0H端口),ICW2=20H(送B1H端口),ICW4=03H(送B1H端口)13.比较中断与DMA两种传输方式的特点。答:中断方式下,外设需与主机传输数据时要请求主给予中断服务,中断当前主程序的执行,自动转向对应的中断处理程序,控制数据的传输,过程始终是在处理器所执行的指令控制之下。直接存储器访问(DMA)方式下,系统中有一个DMA控制器,它是一个可驱动总线的主控部件。当外设与主存储器之间需要传输数据时,外设向DMA控制器发出DMA请求,DMA控制器向中央处理器发出总线请求,取得总线控制权以后,DMA控制器按照总线时序控制外设与存储器间的数据传输而不是通过指令来控制数据传输,传输速度大大高于中断方式。14.DMA控制器应具有那些功能?答:DMA控制器应有DMA请求输入线,接收I/O设备的DMA请求信号;DMA控制器应有向主机发出总线请求的信号线和接收主机响应的信号线;DMA控制器在取得总线控制权以后应能发出内存地址、I/O读写命令及存储器读写命令控制I/O与存储器间的数据传输过程。15.8237A只有8位数据线,为什么能完成16位数据的DMA传送?答:I/O与存储器间在进行DMA传送过程中,数据是通过系统的数据总线传送的,不经过8237A的数据总线,系统数据总线是具有16位数据的传输能力的。16.8237A的地址线为什么是双向的?答:8237A的A0~A3地址线是双向的,当8237A被主机编程或读状态处于从属状态,A0~A3为输入地址信号,以便主机对其内部寄存器进行寻址访问。当8237A取得总线控制权进行DMA传送时,A0~A3输出低4位地址信号供存储器寻址对应单元用,A0~A3必需是双向的。17.说明8237A单字节DMA传送数据的全过程。3答:8237A取得总线控制权以后进行单字节的DMA传送,传送完一个字节以后修改字节计数器和地址寄存器,然后就将总线控制权放弃。若I/O的DMA请求信号DREQ继续有效,8237A再次请求总线使用权进行下一字节的传送。18.8237A单字节DMA传送与数据块DMA传送有什么不同?答:单字节传送方式下,8237A每传送完一个字节数据就释放总线,传送下一字节时再请求总线的控制权。块传送方式下8237A必须把整个数据块传送完才释放总线。19.8237A什么时候作为主模块工作,什么时候作为从模块工作?在这两种工作模式下,各控制信号处于什么状态,试作说明。答:8237A取得总线控制权后,开始进行DMA传送过程,此时8237A作为主模块工作。8237A在被处理器编程或读取工作状态时,处于从模块工作状态。8237A处于从模块时,若CS#=0、HLDA=0说明它正被编程或读取状态,IOR#与IOW#为输入,A0~A3为输入。8237A处于主模块时,输出地址信号A0~A15(低8位经A0~A7输出,高8位经DB0~DB7输出)。8237A还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信号供DMA传送过程使用。20.说明8237A初始化编程的步骤。答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),确定信号有效电平、优先级方式、通道工作允许等。(3)写模式字(B号地址),确定某通道传送方式、传送类型、地址寄存器变化方式等。(4)置0先/后触发器。(5)设置地址寄存器、字节数寄存器的初值。(6)清除某通道屏蔽位,允许8237A响应其DMA请求。21.8237A选择存储器到存储器的传送模式必须具备那些条件?答:必须使用8237A内部的暂存器作为数据传送的缓冲器。8237A通道0的地址寄存器存放存储器的源地址、通道1的地址寄存器存放存储器的目的地地址、字节计数器存放传送的字节数,建立通道0的软件DMA请求来启动这一传输过程。21.利用8237A的通道2,由一个输入设备输入一个32KB的数据块至内存,内存的首地址为34000H,采用增量、块传送方式,传送完不自动初始化,输入设备的DREQ和DACK都是高电平有效。请编写初始化程序,8237A的首地址用标号DMA表示。答:设存储器页面寄存器内容已被置为3。8237A初始化程序如下:MOVAL,06H;屏蔽通道2MOVDX,DMA+0AH;OUTDX,AL;MOVAL,80H;写通道2命令字:DREQ、MOVDX,DMA+08H;DACK高电平有效,正常DUTDX,AL;时序、固定优先级、允许8237A工作等。MOVAL,86H;写通道2模式字:块传MOVDX,DMA+0BH;输、写传输、地址增、OUTDX,AL;禁止自动预置等。MOVDX,DMA+0CH;置0先/后触发器OUTDX,AL;MOVAL,00H;设通道2基地址为4000HMOVDX,DMA+04H;OUTDX,AL;MOVAL,40H;OUTDX,AL;MOVAL,0FFH;设通道2基字节数为4MOVDX,DMA+05H;7FFFH(32767D)OUTDX,AL;MOVAL,7FH;OUTDX,AL;MOVAL,02H;清除通道2屏蔽。MOVDX,DMA+0AH;OUTDX,AL;MOVAL,06H;通道2发DMA请求MOVDX,DMA+09H;OUTDX,AL;第6章常用可编程外围接口芯片1.设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H。试编写程序片段,读出计数器2的内容,并把读出的数据装入寄存器AX。答:MOVAL,80HOUT200H,ALINAL,203HMOVBL,ALINAL,203H,MOVBH,ALMOVAX,BX2.设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H。输入时钟为2MHz,让1号通道周期性的发出脉冲,其脉冲周期为1ms,试编写初化程序段。答:要输出脉冲周期为1ms,输出脉冲的频率是331110110,当输入时钟频率为2MHz时,计数器初值是6332102102000110使用计数器1,先读低8位,后读高8位,设为方式3,二进制计数,控制字是76H。设控制口的地址是200H,计数器0的地址是202H。程序段如下:MOVDX,200HMOVAL,76HOUTDX,,ALMOVDX,202HMOVAX,2000OUTDX,ALMOVAL,AH5OUTDX,AL3.设8253计数器的时钟输入频率为1.91MHz,为产生25KHz的方波输出信号,应向计数器装入的计数初值为多少?答:Z1.91MHz25KH=76.4应向计数器装入的