您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 现代微机原理与接口技术-(杨全胜-著)-电子工业出版社-课后答案
1《现代微机原理与接口技术》部分习题答案第1章5.在8088/8086中,逻辑地址FFFF∶0001,00A2∶37F和B800∶173F的物理地址分别是多少?答:物理地址=段地址×10H+偏移地址所以FFFF:0001的物理地址是FFFFH×10H+0001H=FFFF1H00A2:37F的物理地址是00A2×10H+037FH=00D9FHB800:173F的物理地址是B800×10H+173F=B973FH6.在8088/8086中,从物理地址388H开始顺序存放下列三个双字节的数据,651AH,D761H和007BH,请问物理地址388H,389H,38AH,38BH,38CH和38DH6个单元中分别是什么数据?答:地址内容388H1AH389H65H38AH61H38BHD7H38CH7BH38DH00H13.PC/XT机中的各种系统支持芯片的功能在815EP为处理器支持核心的PC机中分别由什么部件完成?答:对照PC/XT的基本结构图和815EP芯片组,我们可以看到:数学协处理器已经集成到了奔腾级的CPU中,8237DMA控制器、8253定时/计数器、8259中断控制器等都被集成到了82801BA芯片中。串口、并口、键盘、鼠标等功能集成到SIOLPC48B27X芯片中。2第2章6.请简述I/O保护的实现原理。答:首先要明确一点,在DOS环境(实地址模式)下,I/O是没有保护的,只有在保护模式下才有I/O的保护功能。I/O保护有两种机构:I/O特权级IOPL(I/OPrivilegeLevel)和I/O允许位映像(I/OPermissionBitMap)。EFLAG标志寄存器中IOPL字段定义使用I/O相关指令的权限;任务状态段TSS(TaskStateSegment)的I/O允许位映像用来修正IOPL对I/O敏感指令的影响,允许较低特权级的程序或任务访问某些I/O端口。在保护方式下,当处理器遇到一条I/O指令(IN,INS,OUT和OUTS)时,它首先检查CPLIOPL是否成立,其中CPL是当前任务的特权级。若成立,则可以处理I/O操作;若不成立,则处理器检查I/O允许映像。在虚拟8086方式下,处理器只查看这个映像而不考虑IOPL。I/O允许位映像是一个位向量,每一位都表示一个端口地址,每个字节都可以表示8个端口。若任何一个被测试的位置位,则处理器发出一般保护异常信号;若所有被测试位都是0,则I/O操作可以继续进行。7.设计一个外设端口译码器,使CPU能寻址四个地址范围:①0280~0287H,②0288~028FH,③0290~0297H,④0298~029FH。答:本题可以用一个2-4译码器,考虑到大家对74LS138比较熟悉,所以我们用74LS138这个3-8译码器来做这到题。分析,从四段地址的低位来看,显然地址的低3位作为地址低位,不参与到译码电路中,而四段地址范围为1010000XXX~1010001XXX~1010010XXX~1010011XXX,显然我们可以将A5A4A3作为74LS138的输入,这样得到的电路是:8.已知PC机系统中某接口板的板地址译码电路如图2.8所示。现希望该板的地址范围为0240~0247H,请确定DIP开关各位的状态(打开或闭合)。3图2.8习题8答:应该关闭的开关有Q0、Q1、Q2、Q4、Q59.以查询输出方式编程,从内存中首地址为BUFFER的缓冲区向CRT终端输出128个字节,CRT终端数据口地址为0008H,状态口地址为0020H,D7为状态位,0表示输出缓存空闲。……MOVSI,OFFSETBUFFERMOVCX,128WAIT:INAL,20HTESTAL,80HJNZWAIT;输出缓冲不空MOVAL,[SI]OUT08H,ALDECCXJNZWAIT……4第6章3.如果8254-2某计数器的计数初值为400H,信号频率为10MHz,求时间片(微秒)。答:所谓时间片是指输出脉冲的周期,由题可知,fOUT=fCLK÷计数初值=10M/1K=10K。时间片(周期)=1/fOUT=100微秒。如果是BCD码计数,则fOUT=fCLK÷计数初值=10M/400=25000,时间片(周期)=1/fOUT=40微秒。4.用8254作为某数据采集系统的定时器,每隔10ms用中断方式采集一次数据,已知输入时钟频率为10kHz,8259端口地址为20~21H,中断类型号为13H,8254端口地址为40~43H,请为8259和8254编制初始化程序。分析:8254的中断请求的中断类型号为13H,则显然初始化8259的ICW2的值为10H(中断类型号的高5位),而中断引脚显然用的是IR3。8254的输入时钟频率为10kHz,需要输出10ms周期(频率100)的方波,作为中断请求信号,可以考虑用方式2或3,初始值为10K/100=100。答:;对8259初始化:MOVAL,00010011B;边沿触发,单片使用,要ICW4OUT20H,AL;ICW1JMPSHORT$+2MOVAL,10H;中断类型号高位OUT21H,AL;ICW2JMPSHORT$+2MOVAL,00000001B;非总线缓冲方式,全嵌套,正常的中断结束OUT21H,AL;ICW4JMPSHORT$+2;对8254的初始化MOVAL,00010100B;计数器0方式3,低8位二进制计数OUT43H,ALJMPSHORT$+2MOVAL,100;计数初始值OUT40H,ALJMPSHORT$+27.某系统中8254芯片的通道0~通道2和控制字端口号分别为FFF0H~FFF3H,定义通道0工作在方式2,CLK0=5MHz,要求输出OUT0=1kHz方波;定义通道l工作在方式4,用OUT0作计数脉冲,计数值为1000,计数器计到0向CPU发中断请求,CPU响应这一中断后继续写入计数值1000,重新开始计数,保持每1秒钟向CPU发出一次中断请求。请画出硬件连接图,并编写初始化程序。8254初始化程序如下:MOVAL,00110100BMOVDX,FFF3HOUTDX,ALMOVAX,5000MOVDX,FFF0HOUTDX,AL5MOVAL,AHOUTDX,ALMOVDX,FFF3HMOVAL,01111000BOUTDX,ALDECDXDECDXMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL电路图如下:9.试编写一程序,使PC/AT系统板上的发声电路发出200Hz至900Hz频率连续变化的报警声。分析:PC/AT机是使用8254的计数器2输入工作时钟频率1.1931816MHz,工作在方式3,产生一定频率的方波来驱动喇叭发声的(当然,8255PB口D1位要置1,这个我们假设都是打开的),题目要求的发声频率从200Hz到900Hz,按照书上P185上的公式:初始值=输入时钟频率/输出频率,初始值范围为5966~1326,可以编程,初始值给5966,然后每隔一定延迟(如20ms)将初始值减1,直到1326为止。答:MOVAL,10110110BOUT43H,ALMOVAX,5966P1:PUSHAXOUT42H,ALMOVAL,AHD08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK218U?8253VCCD011D110D29D38D47D56D65D74A027CS1RD3WR2SP/EN16INT17INTA26IR018IR119IR220IR321IR422IR523IR624IR725CAS012CAS113CAS215U?8259AA1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77U?74ALS138123U?AND123U?AND123U?ANDU?NOTA2A3A4AD5A6A7A8A9A0A1IOR#IOW#IRQ0IRQ0AD0AD1AD2AD3AD4AD5AD6AD7AD0AD1AD2AD3AD4AD5AD6AD7A0IOR#IOW#5MHz6OUT42H,ALCALLWAIT20ms;延迟20秒POPAXDECAXCMPAX,1325JNZP110.在8086系统中,用8254构成一个定时、计数与脉冲发生器系统。利用通道0完成对外部事件计数功能,计满100次向CPU发中断请求;利用通道1产生频率为1kHz的方波;利用通道2产生1秒标准时钟。8254的计数频率为2.5MHz,8254的端口地址为41H~47H,试完成硬件连接和初始化编程。分析:8254从CLK0输入时钟频率为2.5MHz,通道0计数100次后输出的中断频率是25KHz,因为是做中断源,所以通道0可以工作在方式3或2,另外OUT0输出的这个脉冲还要作为通道1的输入时钟,从CLK1中输入,利用通道1计数25次(方式3)获得从OUT1输出的1KHz的方波,该输出同时作为通道2的时钟输入,通道2工作在方式3下,对CLK2中输入的1KHz时钟计数1000次(既进行1000分频),输出1秒的标准时钟(频率1Hz)。再来看8254的译码问题,题目中端口地址为41H~47H,显然通道0、1、2和控制字的地址分别为41H、43H、45H和47H,也就是说A0这根地址线始终为1,根据这些分析,我们得到如下电路。初始化8254程序:MOVAL,00010110BOUT47H,ALMOVAL,01010110BMOV47H,ALMOVAL,10110110BMOV47H,ALMOVAL,100OUT41H,ALMOVAL,25OUT43H,ALMOVAX,1000OUT45H,ALMOVAL,AHOUT45H,AL74LS1388254A1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77U?D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK218U?VCCA5A6A7A8A9A0IRQ02.5MHz1sTimerA1A2AD0AD1AD2AD3AD4AD7AD5AD6IOR#IOW#7第7章6.试使用8255实现对74LS138的检测。分析:本题是要用8255芯片来检测一个74LS138芯片的输入输出是否满足真值表。可以采用8255的PA口的PA0PA1PA2作为74LS138的ABC三个输入,将74LS138的Y0~Y78个输出接到8255的PB口,PB口作为输入口来获取这些信息,C口作为按位输出口输出到74LS138的控制信号(使能信号)。然后按下图的真值表来进行验证。答:假设8255A的端口地址为60H~63H。检测程序如下:MOVAL,10000010B;A口为输出,B口为输入,OUT63H,AL;C口上下半全输出,全为方式0MOVAL,0OUT60H,ALMOVAL,00000000B;将PC0(G1)清0,不使能138OUT62H,ALINAL,61HCMPAL,FFHJZTEST1JMPERRORTEST1:MOVAL,00000011B;将PC1(G2A)置1,不使能1388OUT62H,ALINAL,61HCMPAL,FFHJZTEST2JMPERRORTEST2:MOVAL,00000101B;将PC2(G2B)置1,不使能138OUT62H,ALINAL,61HCMPAL,FFHJZTEST3JMPERRORTEST3:MOVAL,00000001B;使能138OUT62H,ALMOVCX,7;从CBA为111检测到CBA为000,MOVBX,FF7FH;所以第一个输出0的是Y7。也就是PB7应该为0TEST4:MOVAL,CLOUT60H,ALJMP$+2INAL,61HCMPAL,BLJZTEST5;如果相等则这一个CBA组合通过验证,
本文标题:现代微机原理与接口技术-(杨全胜-著)-电子工业出版社-课后答案
链接地址:https://www.777doc.com/doc-2932494 .html