• 498.00 KB
  • 2022-04-22 11:37:31 发布

微机原理第二版+田辉+课后习题答案

  • 55页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'习题1-1.微型计算机包括哪几个主要组成部分,各部分的基本功能是什么?答:微型计算机由CPU、存储器、输入/输出接口及系统总线组成。CPU是微型计算机的核心部件,一般具有下列功能:进行算术和逻辑运算。暂存少量数据。对指令译码并执行指令所规定的操作。与存储器和外设进行数据交换的能力。提供整个系统所需要的定时和控制信号。响应其他部件发出的中断请求;总线是计算机系统各功能模块间传递信息的公共通道,一般由总线控制器、总线发送器、总线接收器以及一组导线组成;存储器是用来存储数据、程序的部件;I/O接口是微型计算机的重要组成部件,在CPU和外设之间起适配作用。1-2.CPU执行指令的工作过程。答:取指令、执行指令。指令执行的基本过程:(1)开始执行程序时,程序计数器中保存第一条指令的地址,指明当前将要执行的指令存放在存储器的哪个单元。(2)控制器:将程序计数器中的地址送至地址寄存器MAR,并发出读命令。存储器根据此地址取出一条指令,经过数据总线进入指令寄存器IR。(3)指令译码器译码,控制逻辑阵列发操作命令,执行指令操作码规定的操作。(4)修改程序计数器的内容。1-3.果微处理器的地址总线为20位,它的最大寻址空间为多少?201-4.处理器、微型计算机和微型计算机系统之间有什么关系?答:微处理器是微型计算机的核心部件。微处理器配上存储器、输入/输出接口及相应的外设构成完整的微型计算机。以微型计算机为主体,配上系统软件和外部设备以后,就构成了完整的微型计算机系统。1-5.下面十进制数分别转换为二进制、八进制和十六进制数:128,65535,1024答:128,二进制:10000000B,八进制:200O,十六进制:80H65535,二进制:1111111111111111B,八进制:177777O,十六进制:FFFFH1024,二进制:10000000000B,八进制:2000O,十六进制:400H1-6.下面二进制数分别转换为十进制及十六进制数:1011.1010B,1111101.11B答:1011.1010B,十进制:11.625,十六进制:B.AH答:2=1048576=1MB 1111101.11B,十进制:125.75,十六进制:7D.CH1-7.(5487)10=(0101010010000111)BCD=1010101101111B 1-8.设字长为8位,请写出下列数的原码、反码、补码和移码:15,-20,-27/32答:[+15]原=00001111,[+15]反=00001111,[+15]补=00001111,[+15]移=10001111[-20]原=10010100,[-20]反=11101011,[-20]补=11101100,[-20]移=01101100[-27/32]原=1.1101100,[-27/32]反=1.0010011,[-27/32]补=1.0010100,第2章微型计算机系统的微处理器习题2-1.086/8088CPU的功能结构由哪两部分组成?它们的主要功能是什么?答:8086/8088CPU的功能结构由以下两部分组成:总线接口单元BIU(BusInterfaceUnit),执行部件EU(ExecutionUnit)。总线接口单元BIU的主要功能是:负责与存储器、I/O端口进行数据传送。具体讲:取指令:总线接口部件从内存中取出指令后送到指令队列。预取指令。配合EU执行指令,存取操作数和运算结果。执行部件EU主要功能是:负责指令执行。2-2.086CPU指令部件(队列)的作用是什么?地址加法器的作用是什么?答:8086/8088的指令队列分别为6/4个字节,存储预取的指令。地址加法器用来产生20位物理地址。8086/8088可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。2-3.据8086CPU的结构,简述程序的执行过程。答:设程序的指令代码已存放在存贮器中。为执行程序,CPU按照时钟节拍,产生一系列控制信号,有规则地重复进行以下过程。(1)BIU从存贮器中取出一条指令存入指令队列。(2)EU从指令队列取指令并执行指令。BIU利用总线空闲时间,从内存取第二条指令或取第三条指令存入指令队列。(3)EU执行下一条指令。如果前面一条指令有写存贮器的要求,则通知BIU把前条指令结果写到存贮器中,然后再取指令存入指令队列。(4)如指令执行要求读取操作数,由BIU完成。(5)EU执行再下一条指令,返回(1)处继续执行上述操作过程。所以,程序的执行过程就是CPU取指令、分析指令、执行指令,再取指令这样一个循环重复过程。在指令执行过程中,利用EU分析指令操作码和执行指令时不占用总线操作时间的特点,BIU自动地通过总线读取存贮器中的指令码存入BIU指令队列,从而使BIU与EU并行工作,提高CPU执行指令的速度。2-4.什么是总线周期?8086/8088的基本总线周期由几个时钟周期组成?若CPU的主时钟频率为10MHz,则一个时钟周期为多少?一个基本总线周期为多少?答: 总线周期:BIU通过系统总线对存储器或I/O端口进行一次读/写操作的过程称为一个总线周期。8086/8088CPU的一个基本总线周期由4个时钟周期(T1~T4)组成,也称4个T状态。-7若CPU的主时钟频率为10MHz,则一个时钟周期为10s,一个基本总线周期为4× 10-7s。2-5.复位信号RESET到来后,8086/8088CPU的内部状态有何特征?系统从何处开始执行指令?答:8086/8088系统中,复位信号RESET到来后,处理器内部的各寄存器和标志寄存器的内容自动设置为:CSFFFFHDS0000HSS0000HES0000HIP0000H指令队列空FR0000H(禁止中断)因CS=FFFFH,IP=0000,所以8086/8088将从地址FFFF0H开始执行指令。2-6.在总线周期的T1~T4状态,CPU分别执行什么操作?在CPU的读/写总线周期中,数据在哪个状态出现在数据总线上?答:CPU在每个时钟周期内完成若干个基本操作,具体是:T1状态:CPU向多路复用总线上发送地址信息指出要寻址的存储单元或外设端口地址。T2状态:CPU从总线上撤消地址,使总线的低16位置为高阻抗状态,为传输数据作准备。总线的高4位输出本总线周期状态信息。这些状态信息用来表示中断允许状态、当前正在使用的段寄存器等。T3状态:CPU在总线的高4位继续输出总线周期状态信号。在总线的低16位出现由CPU写出的数据,或者从存储器或I/O端口读入的数据。T4状态:总线周期结束。在CPU的读/写总线周期中,数据在T3状态出现在数据总线上。2-7.8086/8088读/写总线周期,微处理器是在(B)时刻采样READY信号,以便决定是否插入Tw。A.T2B.T3C.T3下降沿D.T2上升沿2-8.8086/8088系统中为什么要有地址锁存器?需要锁存哪些信息?答:因8086/8088系统中地址线、数据线是复用的,所以要有地址锁存器锁存T1状态输出的地址。8086系统锁存20位地址及BHE信号,8088系统锁存20位地址。2-9.8086/8088的最大模式系统配置与最小模式系统配置在结构上有何区别?总线控制器8288的作用是什么?答:最大模式系统配置在结构上与最小模式系统的主要区别是增加了一个总线控制器8288和一个总线仲裁器8289。总线控制器8288的作用是:对来自8086/8088CPU的总线状态信号S2、S1、S0译码,与输入控制信号AEN、CEN和IOB相互配合,产生总线命令信号和总线控制信号。2-10.关于8086最大工作模式的特点描述正确的是(D)。A.不需要总线控制器8288B.适用于单一处理机系统C.由编程进行模式设定D.M/IO引脚不可以直接引用2-11.8086/8088有最小和最大模式两种工作模式,当(B)时为最小模式。 A.MN/MX=OB.MN/MX=lB.INTR=lD.HOLD="1 2-12.8086最小工作模式和最大工作模式的主要差别是(D).A.地址总线的位数不同C.数据总线位数不同B.I/O端口数不同D.单处理器与多处理器的不同2-13.PC机中地址总线的作用是(C)。A.用于选择存储器单元B.用于选择进行信息传输的设备C.用于给存储器单元和I/O设备接口电路的选择地址D.以上都不正确2-14.设当前SS=C000H,SP=2000H,AX=2355H,BX=2122H,CX=8788H,则当前栈顶的物理地址是多少?若连续执行PUSHAX,PUSHBX,POPCX3条指令后,堆栈内容发生什么变化?AX、BX、CX中的内容是什么?2-15.8086/8088的控制标志位有(C)个。A.lB.2C.3D.42-16.编程人员不能直接读写的寄存器是(C)。A.DIB.CXC.IPD.SP2-17.设(AH)=03H,(AL)=82H,试指出将AL和AH中的内容相加和相减后,标志位CF、AF、OF、SF、IF和PF的状态。答:(AH)=00000011H+(AL)=10000010H10000101CF=0、AF=0、OF=0、SF=1、IF不确定和PF=0(AH)=00000011H_(AL)=10000010H10000001CF=1、AF=0、OF=0、SF=1、IF不确定和PF=12-18.8086CPU中的标志寄存器FR中有哪些状态标志和控制标志?这些标志位各有什么含义?见教材。2-19.BHE信号的作用是什么?简述8086系统中,访问存储器在读写一个字和字节的过程中,BHE和A0的状态。答:高8位数据总线允许/状态复用信号。总线周期的T1状态,8086在BHE/S7输出低电平,表示高8位数据总线AD15~AD8上的数据有效。8086系统中,BHE和AD0结合起来,指出当前传送的数据在总线上将以何种格式出现。(见教材表2-4-1)8088系统中,由于数据总线只有8位,不存在高8位与低8位的问题。所以,该引脚(第34号)被定义为双功能引脚。在最大模式时,该引脚恒为高电平;在最小模式中,则定义为SS0。2-20.8086向偶地址存储单元0送一个字节数据时,须执行一个总线周期,在第一个T状态中,ALE为1,A0为0,WR为1。 2-21.8086系统中,为什么要对存储器进行分段管理?其分段管理是如何实现的?答:8086/8088地址总线是20位的,CPU中的寄存器是16位的,20位地址无法用16位寄存器表示,所以必须分段。通常有代码段、数据段、堆栈段、辅助段。段内地址16位,每个段的大小最大可达64KB;实际使用时可以根据需要来确定段大小。2-22.已知某存储单元的段地址为4500H,偏移地址为4500H,该单元的物理地址是多少?答:49500H2-23.某指令对应当前段寄存器CS=FFFFH,指令指针寄存器IP=FF00H,此时,该指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?试举例说明答:该指令的物理地址为:CS+IPFFFF0H+FF00H=10FEF0H这一物理地址的CS值和IP值是唯一的吗:不唯一2-24.因为8086CPU的字数据既可以存放在内存的偶地址单元,也可以安排在奇地址单元,所以其堆栈指针SP(A)。A.最好是指向偶地址单元B.可以指向任何地址单元C.只能指向偶地址单元D.只能指向奇地址单元 第3章8086/8088的指令系统习题3-1.试举例说明8086/8088微处理器的各种寻址方式。(略)3-2.假定DS=1000H,SS=9000H,SI=100H,BX=20H,BP=300H,请指出下列指令的源操作数是什么寻址方式?若源操作数位于存储器中,其物理地址是多少?(1)MOVCX,[1000H](3)MOVAX,[BX](5)MOVAL,[BP+5](2)MOVAX,100H(4)MOVBL,CL(6)MOVAL,[BP+SI+2]答:(1)中源操作数为直接寻址,其物理地址=DS*16+1000H=11000H;(2)中源操作数为立即寻址;(3)中源操作数为寄存器间接寻址,其物理地址=DS*16+(BX)=10020H;(4)中源操作数为寄存器寻址;(5)中源操作数为变址寻址,其物理地址=SS*16+(BP)+5=90305H;(6)中源操作数为基址加变址寻址,物理地址=SS*16+(BP)+(SI)+2=90402H。3-3.在8088/8086微机的内存物理地址34780H处,存放有字节数据58H,已知DS=3000H,试写指令序列将该字节数据送入AL寄存器。要求分别采用三种不同的寻址方式。答:(1)直接寻址:MOVAL,[4780H](2)寄存器间接寻址:MOVBX,4780HMOVAL,[BX](3)变址寻址:MOVSI,4782HMOVAL,[SI-2]3-4.判断下述8086/8088指令的写法是否正确:(1)MOV[AX],BH(3)MOV[SP],AX(5)OUT10H,CL(7)PUSHAL(9)MOVES:[SI],DI答:(1)MOV[AX],BH(2)MOV[BP],AX(3)MOV[SP],AX(X)(√)(X)(2)MOV[BP],AX(4)MOV[DI],[SI](6)INCWORDPTR[SI](8)CMP36H,AL(10)MOVBYTEPTR[BX],800 (4)MOV[DI],[SI](5)OUT10H,CL(X)(X)(6)INCWORDPTR[SI](√)(7)PUSHAL(8)CMP36H,AL(9)MOVES:[SI],DI(X)(X)(√)(10)MOVBYTEPTR[BX],800(X)3-5.设有关寄存器及存储单元的内容如下:DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20102H]=33H,[20103]=44H,[21200]=9BH,[21201H]=99H,[21202H]=0AAH,[21203H]=88H。问:下列各条指令单独执行后相关寄存器或存储单元的内容为多少?(1)MOV(3)MOV(5)MOVAX,1800HBX,[1200H][BX+SI],AL(2)MOV(4)MOV(6)MOVAX,BXDX,[BX+1100H]AX,[BX+SI+1100H]答:(1)(2)(3)(4)(5)(6)AX=1800HAX=BX=0100HBX=999BHDX=999BH[20102H]=AL=00HAX=88AAH3-6.已知SS=0FF00H,SP=0000H,试编写程序片段将两个16位数1122H和3344H先后压入堆栈,并画出堆栈区和SP内容变化的过程示意图(标出存储单元的地址)。答:MOVAX,1122HPUSHAX0FF00:0FFFEH0FF00:0FFFFH22H11HSPMOVAX,3344HPUSHAX 0FF00:0FFFCH0FF00:0FFFDH0FF00:0FFFEH0FF00:0FFFFH44H33H22H11HSP3-7.设在数据段偏移地址为2000H单元开始的地方连续存放了0~15的平方值。试写出包含有XLAT指令的指令序列,用来查找0~15范围内的某个数N的平方值(设N的值存放在CL寄存器中)。答:MOVBX,2000HMOVAL,CLXLAT3-8.试用简单的几条指令完成对AL寄存器中的无符号数乘以12的操作。要求只能用移位、加法及MOV指令。答:MOVAH,0MOVCL,2SHLAX,CLMOVBX,AXSHLAX,1ADDAX,BX;AL左移两位,相当于乘4;保存;AL再左移一位,相当于原数乘8;相当于原数乘123-9.已知程序段如下:MOVAX,1234HMOVCL,4ROLAX,CLDECAXMOVCX,4MULCX问:执行完每条指令后,AX=?CF=?SF=?ZF=?(设在执行第一条指令前CF=SF=ZF=0)。答:AX=8D00HCF=0,SF及ZF不确定。3-10.执行如下三条指令后:MOVAH,0MOVAL,7ADDAL,5问:(1)若再执行一条非组合BCD码加法调整指令AAA后,AX的内容为多少?(2)若题中的三条指令后紧跟的是一条组合BCD码加法调整指令DAA,则执行完DAA后AX的内容为多少? 答: (1)AX=0102H(2)AX=0012H3-11.已知AX=14C6H,BX=80DCH,问执行下列程序段后,程序转向何处?ADDAX,BXJNCL2SUBAX,BXJNCL3JMPL4若初始AX=B568H,BX=54B7H,情况又如何?答:程序转向地址标号L2处。若初始AX=B568H,BX=54B7H,程序转向地址标号L4处。3-12.如下程序完成什么功能?MOVAX,5000HMOVDS,AXMOVCX,100MOVAX,0MOVSI,AXSTART:ADDAX,[SI+1000H]ADDSI,2LOOPSTARTMOV[200H],AX答:程序完成内存5000H:1000H开始的连续100个字数据的求和,并将和数存于5000H:200H处。3-13、试写一程序片段,将当前数据段偏移地址为2000H开始的100个字节单元内容与偏移地址为3000H开始的100个字节单元内容相交换,即:偏移地址2000H对应单元内容与偏移地址3000H对应单元内容交换,偏移地址2001H对应单元内容与偏移地址3001H对应单元内容交换,依此类推。答:MOVSI,2000HMOVDI,3000HMOVCX,100REPT0:MOVAL,[SI]MOVBL,[DI]MOV[DI],ALMOV[SI],BLINCSIINCDILOOPREPT03-14.在数据段中偏移地址分别为1000H及2000H开始的存储区内有两个10字节的字 符串,试编写一段程序来比较这两个字符串。如果这两个字符串不同,则程序转至8000H:1000H处,否则顺序执行。答:MOVSI,1000HMOVDI,2000HMOVCX,10CLD;装入源串偏移地址;装入目的串偏移地址;装入字符串长度;方向标志复位REPECMPSBJCXZCONTIJMP8000H:1000HCONTI:NOP3-15.利用串操作指令将数据段中偏移地址1000H开始处的100个字节移动到数据段偏移地址为1050H开始的地方。答:MOVCX,100MOVSI,1000H+99MOVDI,1050H+99STDREPMOVSB;地址减量方式传送;数据块传送(串操作) 第4章汇编语言程序设计习题4-1.如下定义:VAR1DB4VAR2DB10CNST1EQU12试指出下列指令的错误原因:(1)MOVCNST1,CX(3)CMPVAR1,VAR2(2)MOVVAR1,AX(4)CNST1EQU24答:(1)目的操作数不能是立即数;(2)VAR1单元定义为字节类型,而AX为字;(3)8086/8088中两个内存单元不能直接比较;(4)同一符号名不允许用EQU重复定义。4-2.某人定义了如下数据段:DATASEGMENTAT1000HORG100HVAL1DB11HVAL2DW22H,33HVAL3DB5DUP(44H)DATAENDS试指明该数据段中偏移地址从100H到109H的各存贮单元的内容。答:100H:11H101H:22H102H:00H103H:33H104H:00H105H:44H106H:44H107H:44H108H:44H109H:44H4-3.对于下面的数据定义,写出各条指令执行后的结果:DATASEGMENTORG0100HAAAADW0A244HBBBBDB33H,66H,92H,29HCCCCEQUWORDPTRBBBB DDDDDB‘ABCD’EEEEEQU$-DDDDDATAENDS答:(1)MOVAX,AAAA(2)MOVBX,CCCC(3)MOVDX,OFFSETDDDD(4)MOVCL,EEEEAL=(BH=(DL=(CL=())))(1)MOVAX,AAAAAL=(44H(2)MOVBX,CCCCBH=(66H(3)MOVDX,OFFSETDDDDDL=(06H)))(4)MOVCL,EEEECL=(04H)4-4.试编程序将内存从50000H到5FFFFH的每个单元均写入数55H,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将AL置0;只要有错,则将AL置0FFH。答:START:LOOP1:MOVAX,5000HMOVDS,AXMOVSI,0MOVCX,0FFFFHMOVBYTEPTR[SI],55HMOVAL,[SI]CMPAL,55HJNZLOOPERRLOOP2:INCSILOOPLOOP1MOVBYTEPTR[SI],55H;最后一个单元MOVAL,[SI]CMPAL,55HJNZLOOPERRMOVAL,0;全对JMPLOOPOUTLOOPERR:MOVAL,0FFHLOOPOUT:NOP4-5.编写一个子程序,对AL中的ASCII字符添加偶校验位(bit7),即:使AL中的“1”的个数为偶数。答:ADDPARITYPROCNEARANDAL,7FHJPADDEXITORAL,80HADDEXIT:RETADDPARITYENDP4-6.利用上题的子程序,编程对内存物理地址10000H开始的1024个单元的ASCII字符加上偶校验位。 答:START:MOVAX,1000HMOVDS,AXMOVSI,0MOVCX,1024LOOP1:MOVAL,[SI]CALLADDPARITYMOV[SI],ALINCSILOOPLOOP14-7、试写一子程序,完成对一个8位无符号数乘6的操作。要求:(1)只能用传送、加法及移位指令;(2)入口参数(即8位无符号数)放于AL中,出口参数(即乘6后的结果)放于AX。答:MULTI6PROCNEARPUSHBXMOVAH,0SHLAX,1MOVBX,AXSHLAX,1ADDAX,BX;乘2;乘4;乘6POPBXRETMULTI6ENDP4-8.给定如下程序片段:START:MOVAX,1000H,OVSS,AXOVSP,000FHOVAX,1000HUSHAXOVBX,5439HUSHBXALLNEARPTRSUBRTOPAXSTOP0:HLTSUBRT:PUSHBPOVBP,SPVAAX:MOVAX,[BP+4]DDAX,456AHOV[BP+4],AXOPBPET4问:(1)程序执行到标号为SUBRT处的指令时,SP=?(2)执行完标号为VAAX的MOV指令后,AX=?(3)执行到标号为STOP0处的指令时:SP=?AX=?BX=?CF=?SF=? OF=?答:(1)程序执行完标号为SUBRT处的“PUSHBP”指令后,SP=0006H(2)执行完标号为VAAX的MOV指令后,AX=5439H(3)程序执行到标号为STOP0处的指令时(实际执行“HLT”指令之前):SP=000CHAX=99A3HBX=5439H以及以下标志寄存器的内容:CF=0SF=1OF=14-9.自符号地址为MARK开始的内存缓冲区中,存有100个学生的某门课的考试成绩。试找出成绩不低于80分以及成绩低于60分的学生个数,同时求出最高的成绩分及最低的成绩分数,并将它们分别存于符号地址为PST、FST、MAXMK及MINMK的四个单元中。要求写出完整的数据段及代码段。答:DATASEGMENTMARKDB100DUP(?)PSTDW0FSTDW0MAXMKDB0MINMKDB100DATAENDSCODESTART:AGAIN:HIGHL:MKCHK:HIGHMK:SEGMENTASSUMECS:CODE,DS:DATAMOVAX,DATAMOVDS,AXMOVCX,100MOVBX,OFFSETMARKMOVAL,[BX]CMPAL,MAXMKJCHIGHLMOVMAXMK,AL;updatehighestmarkCMPAL,MINMKJNCMKCHKMOVMINMK,AL;updatelowestmarkCMPAL,60JNCHIGHMKINCFST;increasetheno.ofstudentswhosemark<60JMPCHKFHCMPAL,80JCCHKFH INCPST;increasetheno.ofstudentswhosemark>=80CHKFH:INCBXLOOPAGAINMOVAX,4C00HINT21HCODEENDSENDSTART4-10.编写一段程序,接收从键盘输入的10个数(输入回车符后结束),然后将这些数按位取反后存于BUFF开始的缓冲区中。答:DATASEGMENTBUFFDB10DUP(0);数据段;数据区DATAENDSSTACKSEGMENTSTACK‘STACK’;堆栈段DB100DUP(?)STACKENDSCODESEGMENT;代码段ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVCX,10LEASI,BUFFREPT1:MOVAH,1INT21H;键入数据CMPAL,0DH;判断是否是回车键JENEXT1;是,转NEXT1;否继续输入NOTALMOVBUFF,ALDECCXNEXT1:ORCX,CXJNZREPT1MOVAX,4C00HINT21HCODEENDSENDSTART4-11.试编程序完成两个一位十进制数的加法功能。具体步骤与要求如下:(1)利用DOS1号功能调用,顺序从键盘输入被加数、“+”运算符及加数;(2)完成相加功能;(3)将相加的结果用DOS9号功能调用在屏幕上显示出来。例如:输入8+6后,屏幕上应显示相加结果14。如果在上述步骤(1)中有非法输入,应在屏幕上显示“Inputerror”,之后程序须重新从头开始(即从被加数的输入开始)。(略)4-12.试定义一条能对任意寄存器进行左移指定位的宏指令。答:SHIFTMACROREG,COUNT LOCALLENDPUSHCXMOVCL,COUNTCMPCL,1JCLEND;forCOUNT<1,donotshiftSHLREG,CLLEND:POPCXENDM4-13.某人写了如下宏定义,以将某寄存器中的一位16进制数转化为相应的ASCII码。试分析该宏定义是否有错,若有,试指出错误之处及原因。HEXASCMACROHEXREGPUSHFCMPHEXREG,10JLLS10ADDHEXREG,"a"-‘0’-10LS10:ADDHEXREG,‘0’POPFRETHEXASCENDP答:错误之处:开始处缺:LOCALLS10应去除“RET”语句“HEXASCENDP”应为“ENDM”4-14.在数据段偏移地址BUFFER开始处顺序存放了100个无符号16位数,现要求编写程序将这100个数据从大到小排序。(略) 第5章微型计算机总线习题5-1.ISA总线是属于____C______总线。A.同步B.异步C.半同步D.自适应5-2.以下的接口芯片中,可以用作总线主设备的是____A______。A.DMA控制器B.中断控制器C.计数器D.A/D变换器5-3.总线最大传输率等于_____D_______。A.总线宽度乘以总线频率B.总线宽度乘以总线频率的二分之一C.总线宽度乘以总线频率的四分之一D.总线宽度乘以总线频率的八分之一5-4.总线宽度的意思是_______B________。A.总线插槽的尺寸B.总线中数据线的数目C.总线中所有信号线的数目D.总线插槽所有引脚的数目5-5.8088CPU在形成对外的数据总线和地址总线时要使用____B_____。A.三态地址锁存器和三态双向数据缓冲器B.非三态地址锁存器和三态双向数据缓冲器C.三态地址锁存器和非三态双向数据缓冲器D.非三态地址锁存器和非三态双向数据缓冲器5-6.8088在最大模式下使用8288总线控制器产生读写控制信号,8288产生的读写信号有6条,在PC总线中使用的读写控制线是_____C______。A.6条B.5条C.4条D.2条5-7.PC总线标准中不包括_____C_________。A.DMA请求和应答线B.硬中断请求线C.和CPU连接的中断请求和应答线D.复位线5-8.PCI总线是一种______D________总线。A.8位/16位C.16位/32位5-9.ISA总线是一种______A________总线。A.8位/16位C.16位/32位B.8位/16位D.32位/64位B.8位/16位D.32位/64位5-10.以下的说法中,不是同步总线特点的是______C________。A.不需要应答信号B.总线周期的长度一般较短C.总线周期的长短可以变化D.总线上各部件的工作速度比较接近 5-11.什么是总线,微型计算机为什么要采用总线结构?答:总线是在计算机系统中,CPU和其他模块,模块和模块之间传输某种信息的公共通道。采用总线结构,便于微型计算机设计和生产的标准化和模块化,降低了生产和使用的成本,对于微型计算机的推广使用具有非常重要的价值。5-12.总线操作有什么限制?这些限制对于微型计算机的性能有什么影响?答:总线上同时只能传输一种信号。所以,不允许同时有几个部件互相传输信息。不同部件之间的传输只能分时进行。这种总线传输的分时性限制了微型计算机操作的并发性。5-13.ISA总线是一种同步总线还是半同步总线?答:是一种半同步总线。5-14.ISA总线通过什么信号可以调整总线周期的长短?答:I/OCHRDY。如果此信号线的输入是低电平,要求CPU延长总线周期。5-15.PCI总线是不是可以接入多个主设备?在接入多个主设备时,PCI总线是什么类型的总线?答:PCI总线可以接入多个主设备。PCI总线本来是属于半同步总线,可以通过TRDY#和IRDY#来控制插入等待周期。在引入多个主设备时,需要通过REQ和GNT信号来进行请求和应答的联络,但是,并不会因此而改变总线的类型位异步总线。总线的类型仍然是半同步总线。5-16.现在实际的微型计算机是多总线系统还是单总线系统?微型计算机采用多总线系统有什么优点?答:现在的微机系统都是多总线系统。多总线系统可以根据不同的速度需要,在系统的不同地方使用不同速度的总线。使得系统的配置具有更多的灵活性。由于不需要所有的总线都使用同样高速的性能,也可以降低系统的成本。5-17.一个USB系统包括几种硬设备,分别在系统中起什么作用?答:一个USB系统包含三类硬件设备:USB主机(USBHost)、USB设备(USBDevice)、USB集线器(USBHub)USB主机有以下功能:♦♦♦♦♦检测USB设备的加入和退出;管理主机和USB设备间的通信;读取和分析设备的配置信息,对USB设备进行配置操作;对总线上的错误进行管理和恢复;为加入的USB设备提供电源。USBHub就是USB集线器。USB集线器用于设备扩展连接,通过USB集线器可以连接更多的USB设备。USB设备就是使用USB总线标准的外部设备。5-18.为什么USB总线很快的得到了普及和应用? 答:传输速度快,可以满足一般的需要;即插即用,使用方便;成本较低,易于接受。 第6章半导体存储器习题6-1.半导体存储器分为哪两大类?随机存取存储器由哪几个部分组成?答:由随机存取存储器(RAM)和只读存储器(ROM);RAM由地址寄存器、译码驱动电路、存储体、读写驱动电路、数据寄存器和控制逻辑6部分组成。6-2.简述ROM、PROM、EPROM、EEPROM在功能上各有何特点。答:a)b)c)d)ROM是只读存储器,使用时只能读出,不能写入,适用于保存不需要更改而经常读取的数据,通常使用的的光盘就是这类存储器;PROM属于一次可编程的ROM,通常使用时也只能读出,不能写入,通常使用的刻录光盘就属于此类存储器。最初从工厂中制作完成的PROM内部并没有资料,用户可以用专用的编程器将自己的资料写入,但是这种机会只有一次,一旦写入后也无法修改,若是出了错误,已写入的芯片只能报废;EPROM属于可擦除ROM,但是用户需要使用专用的紫外线擦除器对其进行数据擦除,并使用专用的编程器对其重新写入数据;EEPROM是电可擦写ROM,可以用专用的编程器对其进行擦写。6-3.存储器的地址译码有几种方式?各自的特点是什么?答:地址译码有三种方式:线选法、全译码法和部分译码法。e)f)g)线选法:使用地址总线的高位地址作为片选信号,低位地址实现片内寻址;优点是结构简单,需要的硬件电路少,缺点是地址不连续,使用中不方便,而且同一存储区的地址不唯一,造成地址空间浪费;全译码法:将地址总线中除片内地址以外的全部高位地址都接到译码器的输入端参与译码。特点是每个存储单元的地址是唯一的,地址利用充分,缺点是译码电路复杂;部分译码:将高位地址的部分地址线接到译码器参与译码,产生存储器的片选信号。特点是各芯片的地址是连续的,但是地址不唯一,仍然存在地址的堆叠区。6-4.某RAM芯片的存储容量为1024×8位,该芯片的外部引脚最少应有几条?其中几条地址线?几条数据线?若已知某RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是多少?答:至少23根,其中有10根地址线,8条数据线;存储容量是213*8bit=64Kbit=8KB。6-5.用Intel21141K×4位的RAM芯片组成32K×8位的存储器,需要多少块这样的芯片?答:需要64片。6-6.设某微型机的内存RAM区的容量为128KB,若用2164芯片构成这样的存储器,需多少片2164?至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码? 答: 需要16片;至少地址线需要17根,其中1条用于片选,16条用于片内寻址。6-7.某8088系统用2764ROM芯片和6264SRAM芯片构成16KB的内存。其中,ROM的地址范围为0FE000H~0FFFFFH,RAM的地址范围为0F000H~0F1FFFH。试利用74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。答:6-8.什么是Cache?简述其工作原理?若主存DRAM的的存取周期为70ns,Cache的存取周期为5ns,命中率为85%,则它们构成的存储器的平均存取周期是多少?答:Cache位于主存和CPU之间,有SRAM组成,用来协调CPU和主存之间的数据传输速度;Cache的工作原理是基于程序访问的局部性,即在单位时间内对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少;平均存储周期=5ns*85%+70ns*15%=14.75ns。6-9.什么是虚拟存储器?它的作用是什么?答:虚拟存储器又称虚拟内存,是指在内存不足的情况下,利用外部存取器的一部分空间模拟内存,使软件可以将其当成一般的内存使用,从使用角度来看,除了速度较慢外,其他方面与内存相比并无明显区别;虚拟存储器圆满解决了计算机存储系统对存储容量、单位成本和存取速度的苛刻要求,取得了三者之间的最佳平衡。 第7章微型计算机和外设间的数据传输习题7-1.什么是接口?什么是端口?什么情况下两个端口可以共用一个地址?在8086/8088微机系统中,CPU是如何实现端口寻址的?答:把外部设备与计算机连接起来,实现数据传送的控制电路称为I/O接口电路;为了存放接口的数据、状态和控制信息,I/O接口电路拥有几个不同地址的寄存器,每个寄存器称为一个端口;若状态与控制端口的位长和不超过8,则可以共用一个端口;808X系列CPU的端口是独立寻址的,使用IN和OUT指令实现对端口的操作。7-2.对于查询方式,中断方式有什么优点?和DMA方式相比,中断方式又有什么不足?答:与查询方式相比,中断方式不要求CPU等待或者查询,CPU与外设并行工作,可以大大提高系统的工作效率;但与DMA方式相比,每次外设与存储器进行数据传送时都要经过CPU中转,在传送数据块时,传送中地址指针的改变和传送计数器修改将使得传输速度较低,增加了系统开销。7-3.有一输入设备,其数据端口的地址为FEE0H;状态端口地址为FEE2H,当其D0位为1时表明输入数据准备好。试编写采用查询方式进行数据传送的程序段,要求从该设备读取64个字节并输入到从2000H:2000H开始的内存中。答:子程序如下:START:MOVAX,2000HMOVDS,AXMOVDI,AXMOVCX,64LOOP1:MOVDX,0FFE2HLOOP2:INAL,DXANDAL,01HJZLOOP2MOVDX,0FFE0HINAL,DXMOV[DI],ALINCDILOOPLOOP1RET 第8章中断系统习题8-1.8086系统中,用IRET指令结束中断服务程序后,标志IF的值是____A______。A.肯定等于1B.肯定等于0C.不确定D.按设置,可以是1或者08-2.执行8086的IRET中断返回指令后,将从堆栈中弹出_____C_____字节数据,存入相应的寄存器。A.2个B.4个C.6个D.8个8-3.8086的中断向量表中存放的是_____B______。A.中断类型号C.断点地址B.中断服务程序入口地址D.中断向量地址8-4.8086中断向量表的范围是RAM地址的______A_______。A.00000~003FFHB.00000~007FFHC.00000~00BFFHD.00000~00FFFH8-5采用中断方式为外部设备服务的优点包括_____C________。A.提供可靠的数据传输服务和简化硬件接口B.提高CPU的效率和提供可靠的数据传输服务C.提高CPU的效率和加强实时处理能力D.加强实时处理能力和简化硬件接口8-6.为了可以实现中断嵌套,在8086系统的中断服务程序中,需要写一条____D_______。A.CLC指令C.CLI指令B.STC指令D.STI指令8-7.在具有2片8259A级联的中断系统中,两片8259A都设置为非自动结束中断,以下说法中正确的是____C________。A.两片8259A的中断服务程序都要发送2条EOI命令B.两片8259A的中断服务程序都要发送一条EOI命令C.主8259A的服务程序发送一条EOI命令,从8259A的服务程序发送2条D.主8259A的服务程序发送2条EOI命令,从8259A的服务程序发送一条8-8.以下和中断有关的操作中,必须由CPU自动完成的是____A_______。A.保存断点地址B.恢复断点地址C.保存断点地址和恢复断点地址D.保存断点地址、恢复断点地址和保存标志寄存器8-9.中断系统可以实现中断嵌套,其最主要的原因是____C_______。A.通过堆栈保护断点B.可以通过指令来开中断C.具有中断优先级管理机制D.使用硬件中断控制器 8-10.在8086系统中,一个中断类型号为0DBH的中断服务子程序位于从8100H:1234H 开始的内存中,在中断向量表中相应的中断向量所在的起始物理地址为____A_______。A.0036CHB.000DBHC.82234HD.01234H8-11.在8086系统中,一个中断类型号为0DBH的中断服务子程序入口地址是8100H:1234H,这个地址在中断向量表中连续4个存储单元存放的内容依次为_____C_______。A.81H、00H、12H、34HC.34H、12H、00H、81HB.00H、81H、34H、12HD.12H、34H、81H、00H8-12.4片8259A构成的级联中断控制系统中,最多可以直接连接的外部中断源的数目是____D______。A.4个C.28个B.32个D.29个8-13.8086的以下各种中断中,需要硬件提供中断类型号的只有____D______。A.INTOB.INTnC.NMID.INTR8-14.对于8086的软件中断,以下说法中正确的是_____D__________。A.所有软件中断的优先级都是相同的B.所有软件中断的优先级都可以任意设置C.优先级有差别,可以调整D.优先级有差别,不可以调整8-15.什么是中断向量?什么是中断向量表?8086的中断向量表存放在存储器的哪个区域?为什么8086中断向量表的大小是1024个字节?答:中断向量就是中断服务程序的入口地址。中断向量表存放中断服务程序的入口地址,或者存放跳转到中断服务程序入口的转移指令。8086的中断向量表位于RAM区的00000H~003FFH。因为8086支持256个中断,每个中断服务程序的入口地址是4个字节,共需要1024字节。8-16.现在有10个外中断源要申请中断,都用软件查询来进行优先级排队,此时需要为这些中断源准备几个中断服务程序?为什么?答:只需要一个中断服务程序。10个中断源通过一个或门向CPU申请中断。当有几个中断源同时申请时,在中断服务程序中进行排队查询。再转移到各自的服务程序段。并不需要为每个中断源准备一个服务程序。8-17.如果8259A设置为非自动结束中断方式。但是,用户在编写中断服务程序时,没有向8259A发送中断结束命令EOI。这样的做法会产生什么不好的后果?答:其结果是8259内部的中断服务寄存器中的相应的登记不会撤销。也就不会允许后续的同级中断的申请。而实际上上CPU的服务已经结束,应该可以允许中断的申请。8-18.执行以下指令后的结果有什么不同:MOVAX,1234HMOVAX,1234HMOVBX,5678HMOVBX,5678H PUSHBXPUSHBX PUSHAXPUSHAXRETIRET再进一步叙述IRET指令和RET指令有什么不同。答:执行左边一组指令后,IP=1234H。执行右边一组指令后,CS=5678H,IP=1234H。RET指令一般是近调用返回,只将堆栈顶部内容弹出到IP。IRET指令一定是远调用的返回,要将栈顶4个字节弹出到CS和IP。还会将自动压入的标志寄存器的内容出栈到标志寄存器。8-19向8259A的A0=1的端口发送一个命令字,如何可以确定这个命令字是初始化命令字ICW2而不是操作命令字OCW1?答:要看前一个命令字是不是ICW1。如果是ICW1,则这个命令字是ICW2,否则就是OCW1。8-20.8259A的初始化有几种不同的情况,分别使用在什么条件下?答:1)只使用ICW1和ICW2:单片8259,而且不使用ICW4。2)使用ICW1、ICW2和ICW3:多片8259,但不使用ICW4。3)使用ICW1、ICW2和ICW4:单片8259,但使用ICW4。4)使用ICW1、ICW2、ICW3和ICW4:多片8259,也使用ICW4。8-21.8259A设置为非自动结束中断,级联使用8259A时,主8259A的服务程序和从8259A的服务程序,在发送中断结束命令方面有什么不同?答:主8259的服务程序要结束主8259A的ISR寄存器中的登记。从8259的服务程序要结束主8259A和从8259的ISR寄存器中的登记。8-22.分析以下中断向量表写入程序:MOVAX,0MOVES,AXMOVBX,01C8HLEAAX,INTSUBMOVES:[BX],AXMOVAX,SEGINTSUBMOVES:[BX+2],AX相应中断源的中断类型号是什么?请再用另外一种方式,完成这个中断向量表的写入程序。答:中断类型号是72H。用DOS功能调用25H来写入:PUSHDSMOVAX,SEGINTSUBMOVDS,AXMOVDX,OFFSETINTSUBMOVAL,72H MOVAH,25H INT21HPOPDS8-23.以下的子程序1是中断初始化程序,子程序2是响应中断的中断服务程序。0A0H和20H都是8259A的端口地址。分析这些程序段,并回答问题:子程序1:INT-P2PROCFARPUSHDSPUSHAXPUSHDXMOVDX,OFFSETINT-P1MOVAX,SEGINT-P1MOVDS,AXMOVAL,78HMOVAH,25HINT21HPOPDXPOPAXPOPDSRETINT-P2ENDP子程序2:INT-P1PROCFARPUSHAXINC[SI]MOVAL,20HOUT0A0H,ALOUT20H,ALPOPAXIRETINT-P1ENDP请问:(1)分配给这个中断的中断类型号是什么?(2)CPU到中断向量表的哪四个地址单元取得入口地址?(3)中断源连接到8259A的哪个中断输入,是主8259A还是从8259A?(4)在该中断处理时能否实现中断嵌套?为什么?答:(1)中断类型号是78H。(2)占用中断向量表的地址是:001E0H,001E1H,001E2H,001E3H。(3)连接到8259A的IR0输入,是从8259A。(4)不能中断嵌套。因为再服务程序中,没有STI指令。8-24.修改例8-6的中断服务子程序,使得它能够应用于16位除数的除法溢出中断。入口参数是BX作为除数,被除数是指令隐含的。出口参数应该包括32位的商和16位的余 数。请自己指定具体的出口参数,并完成中断服务程序的编程。 答:32位的商存放在CX:AX,余数在DXINT00PROCFARPOPCX;修改返回地址ADDCX,2PUSHCXCMPBX,0JNENEXTLEADX,MESSAGE;除数为0,显示错误信息MOVAH,09INT21HJMPFINISHNEXT:PUSHAX;作除法,AX暂存于堆栈MOVAX,DX;高16位改为低16位MOVDX,0;高16位为0DIVBXMOVCX,AX;保存商的高16位POPAX;恢复低16位被除数AXDIVBX;商是CX:AX,余数是DXFINISH:IRETINT00ENDP8-25.编写一个4号溢出中断的服务程序,取代原来系统中的相应程序。新程序的功能是显示有关溢出的错误信息,然后,中止程序的执行。编写一个测试程序,测试新程序的功能。测试程序要完成中断向量表4号中断入口地址的改写,并通过具有溢出结果的运算来进行测试。答:DATASEGMENTMESSAGEDB"ARITHMETICOVERFLOW.",0DH,0AH,"$"MESSAG1DB"AXISTHERESULT.",0DH,0AH,"$"DATAENDSSTACKSEGMENTSTACK"STACK"DB50DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXSTIMOVAL,4;保存原中断向量 MOVAH,35H ;;INTPUSHPUSHPUSHMOVMOVMOVMOVMOVINTPOP21HESBXDS;写中断向量表AX,SEGINT04DS,AXDX,OFFSETINT04AL,4AH,25H21HDS;MOVADDINTOLEAMOVINTAX,8080HAX,8080HDX,MESSAG1AH,0921H;做加法;正常结束;STARTPOPPOPPUSHMOVMOVMOVINTPOPRETENDPDXCXDSDS,CXAL,4AH,25H21HDS;恢复中断向量表INT04PROCFARFINISH:INT04CODELEAMOVINTMOVINTIRETENDPENDSENDDX,MESSAGEAH,0921HAH,4CH21HSTART;溢出,显示错误信息 第9章微型计算机常用接口技术习题9-1.试说明并行接口和串行接口在数据传输和内部结构上的主要区别答:并行接口使数据的各位同时在总线上传输,串行接口使数据一位一位地传输。因为I/O接口和微处理器之间的数据是并行的,所以两种接口的区别主要表现在I/O接口与外设之间的数据传送。两种接口在结构上的主要区别在于串行接口需要进行并行与串行之间的相互转换,而并行接口无需进行这种变换。9-2.8255A的方式0一般用在什么场合?在方式0时欲使用应答信号进行联络应该怎么办?答:8255A的方式0一般应用在无条件传送方式,即外设总是“准备好”的情况。也可以用在查询传送方式,这时可利用C口来配合A口和B口的输入/输出操作。在方式0时,如果要用应答信号可把C口的4个位(高4位或低4位均可)规定为输出口,用来输出一些控制信号,而把C口的另外4个位规定为输入口,用来输入外设的状态。9-3.8255A的工作方式控制字和置位/复位控制字都是写入控制端口的,那么它们是由什么来区分的?如果利用C口置位/复位功能是否一次可以使C口的若干位同时置1或置0?答:8255A控制字的最高位(D7)为特征位,用来区分方式控制字和C口置位/复位控制字。当控制字的D7=1时为工作方式控制字,当控制字的D7=0时为C口置位/复位控制字。使用C口置位/复位控制字,一次只能使C口的某一位置位或复位,不能够一次使C口的若干位同时置位或复位。9-4.从8255A的端口C读出数据,试述8255A的几个控制信号CS、A1、A0、RD、WR的状态。答:CS为低电平、A1位高电平、A0为低电平、RD应出现低电平、WR为高电平,处于无效状态9-5.试述当8255A工作于方式1时,CPU如何以中断方式将输入设备的数据读走答:外设送出数据并发出STB信号;STB有效使外设送到8255A端口数据线上的数据锁存,并使IBF有效,输出给外设,表明输入缓冲器已满,但CPU尚未取走。如果中断允许INTE=1,IBF变高也会使INTR有效,向CPU发出中断请求,请求CPU取走已输入的数据。CPU在 执行中断服务程序时用IN指令读取数据,产生RD信号,该信号使INTR无效,撤销本次 中断申请,并且使IBF变为低电平,告知外设输入缓冲器的数据被取走,可输入新的数据。9-6.当8255工作于方式2时,当CPU接收到8255产生的中断信号时如何区分执行输入操作还是输出操作?答:在输入、输出均允许中断的情况下,可在中断服务程序中,读入C口的状态字来查询,判断OBF和IBF位的状态,来区分是输入中断还是输出中断,并采取相应操作。9-7.设8255A的4个端口地址为60H~63H,试编写下列各种情况的初始化程序。(1)A、B组均设置成方式0,A口、B口为输入,C口为输出。(2)将A口、B口设置为方式1,均为输入;PC6、PC7为输出;允许A口中断,禁止B口中断。(3)将A口设置成方式2;B口为方式0,输出;PC0~PC2为输入;允许A口中断。答:(1)(2)(3)MOVAL,10010010BOUT63H,ALMOVAL,10110110BOUT63H,ALMOVAL,00001001BOUT63H,ALMOVAL,00000100BOUT63H,ALMOVAL,11000001BOUTAL,63HMOVAL,00001001BOUT63H,ALMOVAL,00001101BOUT63H,AL9-8.试说明异步通信和同步通信的特点各是什么?答:异步通信以字符为基本单位,传输时字符间异步,字符内部各位间同步;这种方式双方不需要严格同步,因而收/发双方不需要用同一时钟源,只需要用同频率的收/发时钟,就可保证可靠的通信。同步通信是以数据块为单位,传输时字符与字符之间的字符内部的各位之间都需要严格同步,所以收/发时钟需要用同一时钟源。无论哪种方式,为保证通信正确,收/发双方都必须遵守共同约定的数据传输协议。9-9.试说明异步通信中是如何解决同步问题和实现正确采样的?答:为确保同步,实现正确的采样,要采用以相反极性的起始位/停止位(空闲位)检测新字符的开始,还有接收器采用比传送波特率更高频率的时钟来控制采样时间,这样一方面可以提高采样的分辨率和抗干扰能力,而且还可使接收器在每位码元的中心采样,以获得最大的收/发时钟频率的偏差容限。9-10.一个异步串行发送器,发送具有8位数据位的字符,在系统中使用1个奇偶校验位、两位停止位。若每秒发送100个字符,则其波特率、位周期和传输效率各为多少?若传 送2KB的数据,需要多长时间? 答:1+8+1+2=12位波特率:12×100=1200b/s位周期:1/1200(s)传输效率:8/12=67%传送2KB所需时间:2×1024×12×(1/1200)=20.48(秒)9-11.说明MODEM的主要功能和应用场合。答:MODEM的主要功能是将数字信号转换为适合在传输线上进行传输的音频模拟信号;将传输线上的音频模拟信号还原为数字信号。MODEM主要用于借助普通电话线进行远距离数字通信的场合。因为远距离通信时,若让数据通过串行接口直接在传输线上传送,容易产生信号畸变、失真。9-12.RS-232C接口使用的也是数字逻辑信号,它是否可以与计算机的各种输入输出信号直接连接?为什么?答:不能。因为虽然RS-232C接口使用的也是数字逻辑信号,但RS-232C采用负逻辑,所要求的电平与TTL/COMS电平不兼容,所以两者连接时必须经过相应的电平转换转换电路,而不能直接相连。9-13.Intel8251A芯片是什么芯片?简述其一般功能。答:Intel8251A是通用可编程串行通信接口芯片,可用于异步通信,也可用于同步通信。数据格式可编程设定。在异步方式下,可编程选择三种波特率因子;能自动监测数据传输过程中发生的重叠错、奇偶错、帧格式错;具有使用MODEM通信的能力。可以进行全双工通信;具有中断和查询输入/输出的能力。9-14.若利用8251A进行异步通信,采用第10题的数据格式和波特率,波特率因子选择16,利用8253提供收、发时钟,其中系统提供的时钟信号为1MHz。8253的端口地址为300H~303H,8251的端口地址为3F8H~3F9H。(1)试编写8253及8251A的初始化程序段(2)若要求以查询方式将BUFFER开始的100个字符发送出去,试编写相应的程序段。答:(1)8253:使用计数器0CLK0=1MHz、OUT0=1200×16=19200HzN=1MHz/19200Hz=528253初始化程序:MOVAL,00010111B;计数器0工作在方式3,十进制计数MOVDX,303HOUTDX,ALMOVDX,300HMOVAL,52HOUTDX,AL8251:8位数据位、采用偶校验、2位停止位 8251初始化程序: MOVMOVOUTNOPMOVOUTMOVOUT(2)DX,3F9HAL,40HDX,AL;发内部复位命令AL,11111110B;方式控制字DX,ALAL,00110111B;命令控制字DX,ALMOVDI,OFFSETBUFFERMOVCX,100SEND:MOVDX,3F9HW1:INAL,DXTESTAL,01HJZW1MOVDX,3F8HMOVAL,[DI]OUTDX,ALINCDILOOPSEND9-15.试比较软件、硬件和可编程定时/计数器用于定时控制的特点。答:软件定时需要运行一段延时子程序,不需要增加硬件设备,但会占用CPU资源,降低CPU的工作效率;硬件定时采用专门的硬件电路实现定时,不占用CPU资源,定时精确,但不方便修改定时值,使用不够灵活;使用可编程定时/计数器芯片,通过编程可以方便地修改定时值,使用灵活,而且定时精确、不占用CPU的时间。9-16.试述8253定时/计数器中,时钟信号CLK和门控信号GATE分别起的作用。答:时钟信号CLK为定时器/计数器提供计数脉冲输入;门控信号GATE用于控制计数过程,在不同的工作方式,作用不一样,可能用于禁止/允许计数,也可能用于触发计数。9-17.已知提供给8253的时钟信号频率为1MHz,若在不增加硬件芯片的情况下,欲使8253产生周期为1s的对称方波,试说明如何去做。如果8253的三个计数器及控制口的地址分别为40H、42H、44H和46H,分别画出8253和PC系统总线的连接以及计数通道信号的连接,并按照硬件连接图编写8253的初始化程序。答:计数初值N=1×1×106=106因为计数初值超过了一个计数器的最大计数值,所以在不增加硬件的情况下,需要采用8253两个计数器串接的方式。106=1000×1000计数器0:工作在方式3,计数初值为1000,对1MHz的信号进行分频,产生周期为1ms的时钟信号;计数器1:工作在方式3,计数初值为1000,对周期为1KHz的时钟信号进行分频,产 生周期为1s的对称方波 硬件连接图:8253D0-D7IORIOWA2A1D0-D7RDWRA1A0CLK0GATE0OUT0CLK1GATE11MHz。+5V+5VA7A6A5A4A3A0或CSOUT1CLK2GATE21s对称方波输出OUT28253的初始化程序:MOVAL,00110110BOUT46H,ALMOVAX,1000OUT40H,ALMOVAL,AHOUT40H,ALMOVAL,01110110BOUT46H,ALMOVAX,1000OUT42H,ALMOVAL,AHOUT42H,AL9-18.利用一片8253做定时器,8255A的A口做为输出口控制8个指示灯。要求依次点亮每个指示灯,每个指示灯点亮的时间维持1s。设8253的端口地址为300H~303H,外部提供的时钟频率为10KHz;8255A的端口地址为310H~313H。试编写8253、8255A的初始化程序以及中断服务程序。答:8253使用计数器0:工作方式3、二进制计数;计数初值N:10×103×1=10000假设8255的A口输出高电平点亮指示灯8253的初始化程序:MOVAL,00110110BMOVDX,303HOUTDX,AL MOVAX,10000 MOVDX,300HOUTDX,ALMOVAL,AHOUTDX,AL8255的初始化程序MOVAL,10000000BMOVDX,313HOUTDX,ALMOVBL,01HMOVAL,BLMOVDX,310HOUTDX,AL;初始时点亮一盏指示灯中断服务程序:INTSUBPROCFARPUSHDXPUSHAXROLBL,1MOVAL,BLMOVDX,310HOUTDX,ALMOVAL,20HOUT20H,AL;发EOI命令,假设8259的端口地址为20H、21HPOPAXPOPDXIRETINTSUBENDP9-19.对一个DMA控制器的初始化工作包括哪些内容?答:对DMA控制器进行初始化的过程分为两个方面:①将数据传轮缓冲区的起始地址或者结束地址送到地址寄存器中。②将传输的字节数或字数送到计数器中。9-20.MA控制器8237A是怎样进行优先级管理的?答:8237A有两种优先级管理方式。固定优先级:通道0优先级最高、通道3最低;循环优先级方式:优先级依次循环,刚使用过总线的通道优先级最低,其下一通道优先级最高。9-21.8237A在进行单字节方式DMA传输和块方式DMA传输时,有什么区别?答:单字节DMA传输:每完成1个字节传输后,内部字节计数器便减1,地址寄存器的值加1或减1,接着,8237A释放系统总线,这样CPU至少可得到一个总线周期;块方式DMA传输:可以连续进行多个字节的传输,只有当字节计数器减少0,从而在EOP端输出一个终止计数信号或者外部I/O接口DMA控制器的EOP端送人一个低电平信号时, 8237A才释放总线而结束传输。 9-22.用DMA控制器进行内存到内存的传输时,有什么特点?答:(1)为了实现这种传输,就要把源区的数据先送到8237A的暂存器,然后再送到目的区,也就是说,每次内存到内存的传输要用到两个总线周期;(2)固定用通道0的地址寄存器存放源地址,而用通道1的地址寄存器和字节计数器存放目的地址和计数值,在传输时,目的地址寄存器的值像通常一样进行加1或减1操作,但是,源地址寄存器的值可以通过对控制寄存器的设置而保持恒定;(3)控制寄存器的D0位必须置1,此时,如果控制寄存器的D1位为1,则在传输时源地址保持不变。9-23.设计8237A的初始化程序。8237A的端口地址为0000H-000FH,设通道0工作在块传输模式,地址加1变化,自动预置功能;通道1工作于单字节读传输,地址减1变化,无自动预置功能;通道2、通道3和通道1工作于相同方式。然后对8237A设控制命令,使DACK为高电平有效,DREQ为低电平有效,用固定优先级方式,并启动8237A工作。答:MOVDX,0BH;模式寄存器端口地址MOVAL,90H;通道0OUTDX,ALMOVAL,69H;通道1OUTDX,ALMOVAL,6AH;通道2OUTDX,ALMOVAL,6BH;通道3OUTDX,ALMOVDX,8;控制寄存器端□地址MOVAL,COHOUTDX,AL9-24.模-数转换器ADC常用的有双积分式和逐次逼近式,请扼要比较它们的优缺点。在微机控制系统的模拟输入通道中常常应用采样-保持电路,其主要原因是什么?答:逐次逼近式ADC采用的是二分搜索、反馈比较、逐次逼近的转换原理。其优点是转换速度快,转换精度高;缺点是输入模拟信号变化速度较快时,会产生较大的非线性误差。双积分ADC的优点一是不需要DAC,能以低成本实现高分辨率;二是双积分ADC的实质是电压一时间变换,所以转换精度高,抗干扰能力强。缺点是需要二次积分,转换速度慢。当输入模拟信号变化率比较大时,逐次逼近式ADC会产生相当大的非线性误差,为改善这种情况,可在ADC前面增加一级采样-保持电路。9-25.什么是A/D,D/A转换器?答:A/D转换器是指将采样保持后得到的模拟电压V;转换为数字量的电路,转换过程包括量化和编码。D/A转换器是把二进制数字信号转换成模拟信号(电压或电流)的电路。 9-26.A/D和D/A转换器在微型计算机应用中起什么作用?答:微型计算机只能对二进制数字形式表示的信息进行运算和处理,其运算和处理的结果也是数字量,但用微机进行自动测量、监控等系统中遇到的变量大部分是模拟量,这些模拟量必须转变成计算机能够接收的数字量,这个过程为模/数转换,完成这个转换需要A/D转换器。反之计算机运算、处理的结果也不能直接去控制执行部件,因为各种执行部件要求的控制信号一般也是模拟量,因此需要将计算机输出的数字量控制信号转换成执行部件所需的模拟量,这个转换过程为数/模转换,完成这个任务的装置就是D/A转换器。9-27.A/D转换把模拟量信号转换为数字量信号,转换步骤是什么?转换过程用到什么电路?答:转换步骤分为四步:采样、保持、量化和编码。采样和保持在采样保持电路中进行;量化和编码在ADC中进行。9-28.如下图所示的是一个由8255A和ADC0809为主组成的PC总线8路数据采集卡原理图。8255A的A口和B口均工作于方式0。图数据采集卡原理图(1)写出8255A中各寄存器的端口地址。(2)确定8255A的方式控制字。(3)画出以查询方式巡回采集8路数据至内存BUFF开始的缓冲区的程序流程图,并写程序(含8255A初始化程序)。(4)若其中一路采集的是温度,测温范围为0℃-60℃(线性刻度),当某采样周期获的温度数据为OAAH时,则对应的温度为多少度?答:(l)A□:2COH;B□:2ClH;C□:2C2H;控制寄存器:2C3H。(2)方式控制宇为:91H。(3)8255:MOVDX,2C3HMOVAL,9lHOUTDX,AL XORAL,AL MOVDX,2C2HOUTDX,AL;PC4、PC5初值为0ADSTART:MOVCX,8;循环次数MOVBX,O;ADCO809通道号START:MOVDX,2ClHMOVAL,BL;取当前通道号OUTDX,ALMOVDX,2C3HMOVAL,09H;PC4=1,启动A/D转换OUTDX,ALMOVAL,O8HOUTDX,ALMOVDX,2C2HWAIT:INAL,DXTESTAL,O1H;转换结束?JZWAITMOVDX,2C3HMOVAL,0BH;PC5=1,输出A/D转换结果OUTDX,ALMOVAL,OAHOUTDX,ALMOVDX,2COHINAL,DXMOVbuf[BX],ALINCBXLOOPSTARTHLT(4)T=FFHAAHX600℃=170155X600=400℃ 第10章微型计算机的发展方向与新技术介绍(第十章习题答案略)。'