《微机系统与接口》课程作业2019-20201习题五(第5章-1)1.I/O的控制方式主要有哪几种?各有什么特点?解:(1)直接传送方式这种方式CPU通过执行I/O指令控制外设工作,查询外设状态并和外设交换数据,CPU认为外设数据与自己完全同步——只需要数据端口(2)程序查询方式不能保证外设与CPU一定能配合,查询状态信号“准备好”后再传输数据。(3)程序中断方式由需要传送数据的外设主动发起;发中断请求信号——CPU完成当前指令后响应申请,转去执行中断服务程序——执行完,返回继续。用于处理中低速的I/O操作和随机事件。效率较高,CPU响应较快,但传送由中断软件完成(4)DMA方式直接存储器访问方式。是一种完全由硬件执行I/O交换的工作方式,可用于高速外设大批量数据传输,也可用于大批量数据采集系统和DRAM的刷新。效率较高,但电路复杂2.输入输出电路如教材中图5.11和5.12所示,试编一程序,实现微机连续检测开关K1-K8状态,当开关K1-K8全部闭合或全部断开时使LED亮,否则使LED熄灭,同时把开关状态存放在SwitchS单元内。解:MOVDX,218HINAL,DXMOVSwitchS,ALCMPAL,0FFH;全断开JZTURNONCMPAL,0;全闭合JZTURNONMOVAL,0JMPNEXTTURNON:MOVAL,1NEXT:MOVDX,219HOUTDX,AL《微机系统与接口》课程作业2019-202023.已知(SP)=0100H,(SS)=0300H,(FLAGS)=0204H,00020H至00023H单元的内容分别是40H,00H,00H,01H。已知INT8指令在0900H:00A0H的CS段内。试指出在执行INT8指令并进入该指令相应的中断程序时,SP、SS、IP、CS、FLAGS和堆栈最上面三个字的内容,用图表示。解:4.如正以单步方式运行某用户程序(该程序开放外部中断,即IF=1)的过程中执行一条除法指令时,INTR线上出现可屏蔽中断请求。然后,这条除法指令产生了除法出错中断。试指出CPU处理这三种同时出现的中断的顺序。解:除零——INTR——单步5.试编写出只有一片8259A的8088系统中8259A的初始化程序。8259A的地址为02C0H和02C1H,要求:⑴中断请求输入采用电平触发;⑵中断矢量起始地址为16(D=10H);⑶采用缓冲器方式;⑷采用正常结束方式;解:D7D6D5D4D3D2D1D0ICW1XXX11X11ICW200010XXXICW3无ICW4000011016.试编写一段将8259A中IRR、ISR和IMR的内容送至存储器中从RETARR开始的数组中去的程序。假定CPU为8086,8259A偶地址为50H。解:OUT50H,00001110B;IRRINAL,50HXORSI,SIMOVBYTEPTR[RETARR+SI],ALINCSI《微机系统与接口》课程作业2019-20203OUT50H,00001111B;ISRINAL,50HMOVBYTEPTR[RETARR+SI],ALINCSIINAL,51HMOVBYTEPTR[RETARR+SI],AL7.欲使用8253的2通道周期性地发出脉冲,周期为1ms,试编出初始化程序。(CNT0的地址为40H,Φ=2MHZ)解:T=1ms=10^(-3),Tclk=0.5*10^(-6)sT=2*10^(3)Tclk,N=2000OUT43H,10110111B;计数器216位方式3BCDMOVAL,00HOUT42H,ALMOVAL,20HOUT42H,AL;2000初值(十进制)8.用8253组成一个实时时钟系统。0通道作为秒的计时器,1和2通道作为计数器,分别用作分钟和小时的计时,试画出硬件电路,并写出初始化程序(Φ=1KHZ)。解:《微机系统与接口》课程作业2019-20204初始化程序:MOVDX,CNT0+3MOVAL,00110111B;计数器016位方式3BCDOUTDX,AL;OUT0应该是周期为1s的方波,1k*1msMOVAX,0999HMOVDX,CNT0OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,CNT0+3MOVAL,01010111B;计数器1低八位方式3BCDOUTDX,AL;OUT1应该是周期为60s的方波,60*1sMOVAL,60HMOVDX,CNT0+1OUTDX,ALMOVDX,CNT0+3MOVAL,10010001B;计数器1低8位方式0BCDOUTDX,AL;一天有24个小时,当一天结束后,可通过申请中断,结束MOVAL,24HMOVDX,CNT0+2OUTDX,AL9.假定一片8253连接至1KHZ的时钟,用该8253以BCD格式保持一天中的时间,精度为秒。在HOURS(小时)、MINUTES(分)、SECOND(秒)等字节均装入当前时间以后,就立即开始计时。试编写一个8253的初始化程序和一个在每秒结束时修改时间的中断程序。初始化程序:MOVDX,CNT0+3MOVAL,00110001B;计数器016位方式0BCDOUTDX,ALMOVAX,0999HMOVDX,CNT0OUTDX,ALMOVAL,AHOUTDX,AL;循环初始值999(十进制)循环一千次为1s,计数结束申请中断《微机系统与接口》课程作业2019-20205中断程序:INTSERVICE:(PUSH.......)INCSECONDS;SECONDSMINUTESHOURS初始值都设为0CMPSECONDS,60DJBNEXT;小于60跳转MOVSECONDS,0INCMINUTESCMPMINUTES,60DJBNEXTMOVMINUTES,0INCHOURSCMPHOURS,24DJBNEXTMOVHOURS,0NEXT:(POP.......)IRET