• 663.92 KB
  • 2022-04-22 11:46:12 发布

微型计算机原理及应用课后习题答案.pdf

  • 29页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'李伯成《微机原理》习题第一章本章作业参考书目:①薛钧义主编《微型计算机原理与应用——Intel80X86系列》机械工业出版社2002年2月第一版②陆一倩编《微型计算机原理及其应用(十六位微型机)》哈尔滨工业大学出版社1994年8月第四版③王永山等编《微型计算机原理与应用》西安电子科技大学出版社2000年9月1.1将下列二进制数转换成十进制数:X=10010110B=765432111*2+0*2+0*2+1*2+0*2+1*2+1*2+0*2=128D+0D+0D+16D+0D+0D+4D+2D=150DX=101101100B876543210=1*2+0*2+1*2+1*2+0*2+1*2+1*2+0*2+0*2=256D+0D+64D+32D+0D+16D+4D+0D=364DX=1101101B=65432101*2+1*2+0*2+1*2+1*2+0*2+1*2=64D+32D+0D+8D+4D+0D+1D=109D1.2将下列二进制小数转换成十进制数:(1)X=0.00111B=-1-2-3-4-50*2+0*2+1*2+1*2+1*2=0D+0D+0.125D+0.0625D+0.03125D=0.21875D(2)X=0.11011B=-1-2-3-4-51*2+1*2+0*2+1*2+1*2=0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D(3)X=0.101101B=-1-2-3-4-5-61*2+0*2+1*2+1*2+0*2+1*2=0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D1.3将下列十进制整数转换成二进制数:(1)X=254D=11111110B(2)X=1039D=10000001111B(3)X=141D=10001101B1.4将下列十进制小数转换成二进制数:(1)X=0.75D=0.11B(2)X=0.102D=0.0001101B(3)X=0.6667D=0.101010101B1.5将下列十进制数转换成二进制数(1)100.25D=01100100.01H(2)680.75D=001010101000.11B1.6将下列二进制数转换成十进制数(1)X=1001101.1011B=77.6875D (2)X=111010.00101B=58.15625D1.7将下列二进制数转换成八进制数(1)X=101011101B=101‘011‘101B=535Q(2)X=1101111010010B=1‘101‘111‘010‘010B=15722Q(3)X=110B=6Q1.8将下列八进制数转换成二进制数:(1)X=760Q=111"110"000B(2)X=32415Q=11"010"100"001"101B1.9将下列二进制数转换成十六进制数:X=101010111101101B=55EDHX=1100110101"1001B=11001101011001B=3359HX=1000110001B=1000110001B=231H1.10将下列十六进制数转换成二进制数:X=ABCH=101010111100BX=3A6F.FFH=0011101001101111.11111111BX=F1C3.4B=1111000111000011.01001011B1.11将下列二进制数转换成BCD码:(1)X=1011011.101B=1"011"011.101B=91.625d=10010001.0110BCD(2)X=1010110.001B=1‘010‘110.001=126.1BCD1.12将下列十进制数转换成BCD码:(1)X=1024D=0001000000100100BCD(2)X=632=011000110010BCD(3)X=103=000100000011BCD1.13写出下列字符的ASCII码:A41H65D01000001B939H47D*2AH42D=3DH45D!21H33D1.14若加上偶校验码,下列字符的ASCII码是什么?字符原码加上偶校验码之后B42H,01000010B42H,01000010B434H,00110100BB4H,10110100B737H,00110111BB7H,10110111B=3DH,00111101BBDH,10111101B!21H,00100001B21H,00100001B?3FH00111111B3FH,00111111B1.15加上奇校验,上面的结果如何?字符原码加上奇校验码之后B42H,01000010BC2H,11000010B434H,00110100B34H,00110100B737H,00110111B37H,00110111B=3DH,00111101B3DH,00111101B!21H,00100001BA1H,10100001B ?3FH00111111BBFH,10111111B1.16计算下式:(1)[‗B‘/2+ABH-11011001B]*0.0101BCD=(42H/2+ABH-D9H)*0.21BCD==F3H*0.21BCD=(-DH)*0.21BCD=-2.73D(2)3CH–[(84D)/(16Q)+‘8‘/8D]=60D-[84D/14D+(56/8)]=60D-[13]D==47D1.17对下列十进制数,用八位二进制数写出其原码、反码和补码:(正数的反码与原码相同,负数的反码除符号位之外其余各位按位取反。正数的补码与原码相同;负数的补码除符号位以外,其余各位按位取反之后再加一。)数据原码反码补码+99011000110110001101100011-99111000111001110010011101+127011111110111111101111111-127111111111000000010000001+0000000000000000000000000-01000000011111111000000001.188位二进制数原码可表示数的范围是+127~-128;8位二进制数补码可表示的数的范围是+127~-127;8位二进制数反码可表示的数的范围是:+127~-128;1.1916位二进制数的原码、补码、反码可表示的数的范围是多少?+32767~-32768、+32767~-32768、+32767~-32768;1.20至少写出3种用二进制编码状态表示十进制数字的编码方式。8421码、5421码2421码余3码十进制数00000000000000110000100010001010010010001010000101200110011100101103010001001010011140101100010111000501101001110010016011110101101101071000101111101011810011100111111009 李伯成《微机原理》习题第二章①薛钧义主编《微型计算机原理与应用——Intel80X86系列》机械工业出版社2002年2月第一版②陆一倩编《微型计算机原理及其应用(十六位微型机)》哈尔滨工业大学出版社1994年8月第四版③王永山等编《微型计算机原理与应用》西安电子科技大学出版社2000年9月④洪志全等编《现代计算机接口技术》电子工业出版社2002年4月⑤仇玉章主编《32位微型计算机原理与接口技术》清华大学出版社2000年9月2.18086CPU的RESET引脚的功能是什么?答:RESET引脚称为复位引脚,输入、三态、高电平有效;RESET引脚将使CPU立即结束当前操作,处理器要求RESET信号至少要保持4个时钟周期的高电平,才能结束它正在进行的操作。CPU复位以后,除了代码段寄存器CS的值为FFFFH外,其余所有寄存器的值均为零,指令队列为空。当RESET回到低电平时,CPU开始执行―热启动‖程序,由于此时CS的值为FFFFH,IP的值为0000H,所以CPU复位以后执行的第一条指令的物理地址为 FFFF0H,该单元通常放置一条段间直接转移指令JMPSS:OO,SS:OO即为系统程序的实际起始地址。2.2在8086CPU工作在最小模式时,(1)当CPU访问存储器时,要利用哪些信号?当CPU访问存储器时,要利用AD0~AD15、WR*、RD*、IO/M*以及A16~A19;(2)当CPU访问外设接口时,要利用哪些信号?当CPU访问外设接口时,同样要利用AD0---AD15、WR*、RD*以及IO/M*,但不使用高端地址线A16---A19;(3)当HOLD有效并得到响应时,CPU哪些引脚置高阻?当HOLD有效并得到响应时,CPU除HOLD、HOLDA引脚外其余所有的信号引脚均为高阻态。2.3略2.4说明8086CPUREADY信号的功能。见P232.58086CPU的NMI和INTR引脚的不同有几点?两点:(1)INTR是可以由用户用指令禁止的,(通过中断允许标志IF的开---STI和关CLI进行);而NMI不能由用户禁止;(2)INTR是可以区分优先级别的,NMI是最高级的,没有中断优先级的排队。2.6说明8086CPU内部标志寄存器各位的含义。8086CPU的标志寄存器(PSW或FLAG)共有9个 标志位,分别是:CF(CarryFlag)---进位或借位标志;PF(ParityFlag)---奇偶标志;AF(auxiliaryFlag)----半进位标志;ZF(ZeroFlag)-----结果为零标志;SF(SignFlag)-----符号标志;OF(OverflowFlag)-----溢出标志;IF(InterruptEnableFlag)-----中断允许标志;DF(DirectionFlag)----方向标志;TF(TrapFlag)-----陷阱标志。2.7说明8086CPU内部14个寄存器的作用。8086内部的寄存器可以分为3类:第一类:通用寄存器:AX、BX、CX、DX、SI、DI、SP、BP,共8个可以存储数据或者地址的低16位;AX、BX、CX和DX可以分成8个8位的寄存器使用;SI、DI又称变址寄存器,用于存储变址地址;SP和BP存放指针变量值。第二类:段寄存器:CS、DS、SS、ES,共4个寄存器,只能存放对应段的段地址;第三类为IP和FLAG,IP在通常情况下不允许用户访问,而FLAG是用以向用户提供了解ALU工作状态或者控制CPU工作方式的标志寄存器。2.8试画出8086CPU工作在最小模式时的总线形成示意图。(注:BHE*引脚为34脚---即SS0,参见P25状态编码表) 四点说明:A、MN/MX端接+5V,决定了8086工作在最小模式。 B、有一片8234A,作为时钟发生器。C、有三片8282或74LS373,用来作为地址锁存器。D、当系统中所连接的存储器和外设比较多时,需要增加系统数据总线的驱动能力,这时,要用两片8286/8287(74LS244或74LS245)作为总线收发器。2.98086/8088为什么采用地址/数据引线复用技术?答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从时序逻辑的角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。2.10怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何不同?答:引线MN/MX*的逻辑状态决定8086的工作模式,MN/MX*引线接高电平,8086被设定为最小模式;MN/MX*引线接低电平,8086被设定为最大模式。最小模式下所有的控制信号由CPU相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入由8086的S2─S0三条状态信号引线提供。李伯成《微机原理》习题第三章 本章作业参考书目:1.周明德:微型计算机IBM-PC系统原理与应用清华大学出版社19912.王永山等:微型计算机原理与应用西安电子科大出版社19983.张怀莲:IBMPC汇编语言程序设计电子工业出版社1990注:本习题解中的程序仅为代码片段,可在Emu8086version2.57环境下仿真运行,如果在MASM下进行汇编,需添加段设置以及相应的伪指令。3.1MOVAX,00H;立即寻址SUBAX,AX;寄存器寻址MOVAX,[BX];寄存器间接寻址MOVAX,TABLE;直接寻址MOVAL,ARAY1[SI];寄存器相对寻址MOVAX,[BX+6];寄存器相对寻址3.2若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。程序片段如下:ORG100hMOVCX,03FFH;数据个数LEASI,TABLE;源区首地址LEADI,NEXT;目的区首地址AGAIN:MOVAL,[SI];MOV[DI],AL;搬移INCSIINCDI;移动地址指针DECCX;循环计数器递减JNZAGAIN;循环未结束转HLT;暂停TABLEDB1024dup("A");源数据区NEXTDB1024dup(0);目的数据区3.3编写10个字(16位二进制数)之和的程序ORG100hLEASI,ADD1; LEADI,ADD2;LEABX,SUM;MOVCL,CONT;MOVCH,0;循环初始化CLC;进位清零MADD1:MOVAX,[SI];读加数1ADCAX,[DI]ADDSI,2;移动源区地址指针ADDDI,2;移动目的区地址指针MOV[BX],AX;回存计算结果ADDBX,2;移动―和‖存储区地址指针LOOPMADD1;循环控制HLT;暂停ADD1DB0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1ADD2DB56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H;加数2SUMDB10DUP(0);和存储单元CONTDB5;循环次数3.4某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS和REMAIN中。ORG100hMOVBL,2;除数初值AGAIN:MOVCX,NUM;预计最大循环次数MOVAL,BL;0、1的平方根除外MULBL;得到2的平方CMPAX,CX;大于原始数据么?JGEXIT;若原始数据小于4转EXITMOVAX,CX;读数DIVBL;试除INCBL;除数递增JMPAGAIN;继续除EXIT:DECBL;去除除数自加MOVANS,BL;存商MOVAL,BL;恢复余数MULBL;SUBCX,AX;MOVREMAIN,CL;HLTNUMDW7;ANSDB?; REMAINDB?;3.5在DATA1之下顺序存放着以ASCII码表示的千位数,将其转换成二进制数。MOVCL,4;移位次数MOVCH,CL;循环次数MOVSI,OFFSETASCBINCLDXORAX,AXXORDX,DXASCB1:LODSBANDAL,7FHCMPAL,"0";不大于‗0‘结束转换JLERRCMPAL,"9"JGASCB2;大于‗9‘转ASCB2SUBAL,30H;数字形式二进制数减30HJMPASCB3ASCB2:CMPAL,"A";大于‗9‘又小于‗A‘结束转换JLERRCMPAL,"F"JGERR;大于‗F‘为不合理数,结束转换SUBAL,37H;字符形式ASCII数减37HASCB3:ORDL,ALROLDX,CLDECCHJNZASCB1ROLDX,CLMOVBIN,DX;存储转换结果ERR:NOPHLTASCBINDB"1","B,"4","3"BINDW?3.7编写程序将MOLT中的一个8位数乘以20,乘积放在ANS中(用3种方式)。解:第一种方法:常规乘法运算ORG100hMOVAL,MOLTMOVBL,20MULBLMOVANS,AX HLTMOLTDB2ANSDW?第二种方法,将MOLT连加20次ORG100hMOVCX,20MOVBX,MOLTXORAX,AXCLCADD1:ADCAX,BXLOOPADD1MOVANS,AXHLTMOLTDW5ANSDW?第三种方法,将―20‖连加MOLT次ORG100hMOVCX,MOLTMOVBX,20XORAX,AXCLCADD1:ADCAX,BXLOOPADD1MOVANS,AXHLTMOLTDW5ANSDW?3.8在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。ORG100hXORDL,DLLEADI,KVFF;NEXT0:LEASI,BUFFER;MOVCL,99;比较次数为N-1次 NEXT1:MOVAL,[SI];INCSI;CMPDL,AL;JNCNEXT2;MOVDL,AL;DL中始终存目前最大值NEXT2:DECCL;JNZNEXT1;MOV[DI],DL;最大值存储HLTBUFFERDB;自行定义100个数据KVFFDB?3.9若将数据按大小顺序排序,试编写程序..解:此处采用―冒泡法‖予以处理:ORG100hLEADI,BUFFER;数据区MOVBL,99;外循环次数NEXT0:MOVSI,DI;MOVCL,BL;内循环次数NEXT3:MOVAL,[SI];读数INCSI;移动指针CMPAL,[SI];比较JNCNEXT5;大于转NEXT5MOVDL,[SI];MOV[SI-1],DL;MOV[SI],AL;不大于互换NEXT5:DECCL;内循环次数减一JNZNEXT3;DECBL;外循环次数减一JNZNEXT0HLTBUFFERDB自行定义100个字节型数据3.10在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中.A<20,Y=3*A;A<60,Y=A-20;A>=60,Y=80. ORG100hMOVAL,BVFFCMPAL,20JLEX1CMPAL,60JLEX2MOVAL,80JMPSTOPEX1:MOVBL,3MULBLJMPSTOPEX2:SUBAL,20STOP:MOVDES,ALHLTBVFFDB8DESDB?3.11址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中求平均成绩,结果存放在LEVEL中。解:寄存器使用分配:90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。ORG100hXORAH,AHXORDX,DX;统计结果清零XORBX,BX;统计结果清零LEASI,DATALEADI,LEVELMOVCL,CONT;总人数送循环计数器CXgoon:MOVAL,[SI];读原始数据ADC[DI],AL;累加总分ADC[DI+1],0;计算进位CMPAL,90JLPP8;不高于90分者转PP8INCDH;90--100分的人数加一JMPSTOR PP8:CMPAL,80JLPP7;不高于80分转PP7INCDL;80----89分的人数加一JMPSTORPP7:CMPAL,70JLPP6;不高于70分者转PP6INCBH;70---79分的人数加一JMPSTORPP6:CMPAL,60JLPP5;不高于60分者转PP5INCBL;60---69分的人数加一JMPSTORPP5:INCAH;低于60分的人数加一STOR:INCSI;读下一个分数LOOPGOON;CX=CX-1,CX不为零转GOON,继续统计LEASI,BUFFER;回存统计结果MOV[SI],DHINCSIMOV[SI],DLINCSIMOV[SI],BHINCSIMOV[SI],BLINCSIMOV[SI],AHMOVAX,WORDPTR[DI];计算平均成绩MOVCL,CONTDIVCLMOVLEVEL,AL;回存平均成绩HLTCONTDB10DATADB30,65,99,80,75,89,100,45,60,70BUFFERDB?,?,?,?,?LEVELDB?,?3.12求两个有符号数(DATA1,DATA2)差的绝对值,结果存入DATA3.ORG100hMOVAL,DATA1;读入被减数SUBAL,DATA2;减去减数JCCHANGE; JMPSTORCHANGE:NEGALSTOR:MOVDATA3,ALHLTDATA1DB3DATA2DB5DATA3DB?3.13存从40000H到4BFFH的个单元均写入55H,并再逐个读出,验证是否一致,若一致,置AL为7EH,否则置AL为81H.ORG100hMOVAX,4000H;MOVDS,AX;MOVSI,0START:MOVCX,0BFFFHBEGIN:MOV[SI],55HMOVAL,[SI]INCSICMPAL,55HJNZERRLOOPBEGINMOVAL,7EHJMPSTOPERR:MOVAL,81HSTOP:HLT3.14~3.15端口03FBH的BIT5为状态标志,当该位为1时,表示外设忙,不能接收数据;当为0时,表示外设闲,可以接收数据;当CPU向端口03F8H写入一个字节的数据时,03FBH的BIT5置1,当它变为0状态时,又可以写入下一个数据。据此编写将起始地址为SEDAT的50个数据输出到03F8H端口的程序。WAIT:MOVDX,03FBHINAL,DXTESTAL,00100000B;(20H)JZSENDJMPWAITSEND:MOVDX,3F8HMOVAL,[SI];CMPAL,0AH;输出字串结束标志符JZSTOPOUTDX,ALJMPWAITSTOP:HLT 3.16口02E0H的BIT2和BIT5同时为1,表示端口02E7H有一个字节型数据准备好可以用以输入,当CPU从该端口读入数据后,02E0端口的BIT2和BIT5就不再同时为1;只有当02E7H端口的数据再次准备好时,它们才会再次同时为1,据此编写从02E7H端口输入32个数据然后存入A1000H单元开始的区域。MOVAX,0A000HMOVDS,AXMOVSI,1000H;设置存储区地址MOVCL,20H;输入数据个数BEGIN:MOVDX,0E20HINAL,DXTESTAL,00100100B;测试状态位BIT5、BIT2JZBEGIN;不同时为1继续测试MOVDX,02E7HINAL,DX;输入数据MOV[SI],AL;存到指定区域INCSI;移动地址指针LOOPBEGIN;循环HLT3.17在内存40000H开始的16K的单元中存放着一组数据,将其顺序搬移到起始地址为A0000H的区域。解:利用字符串操作指令MOVSB,16K即16*1024=3FFFH。MOVAX,4000HMOVDS,AXMOVAX,A000HMOVES,AXMOVSI,0MOVDI,0MOVCX,3FFFHCLDREPMOVSBHLT3.18上题的基础上,将两个区域的数据逐个进行比较,若有错将BL置0,全对将BL置FFH。MOVAX,4000HMOVDS,AX MOVAX,A000HMOVES,AXMOVSI,0MOVDI,0MOVCX,03FFHCLDAAB:CMPSBJNZSTOPLOOPAABMOVBL,0FFHJMPEX1STOP:MOVBL,0;EX1:NOPHLT3.19统计由40000H单元开始的16K个单元中所存字符‗A‘的个数,统计结果存放在DX寄存器中。MOVAX,4000HMOVDS,AXMOVSI,0;MOVCX,3FFFH;数据个数MOVDX,0;统计结果寄存器清零XORDX,DXCLDAAB:LODSBCMPAL,‗A‘;比较JZAAC;字符为‗A‘转计数LOOPAAB;循环JMPSTOP;处理完毕转结束AAC:INCDX;统计结果加1DECCX;循环次数减1JCXNZAAB;CX<>0继续STOP:HLT3.20编写对AL中的数据进行―偶校验‖的一个过程,并将校验结果放入AL寄存器。PJYPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXMOVAL,DATANDAL,ALJNPPJY1 MOVAL,00H;表示为偶JMPEXITPJY1:MOVAL,FFH;表示为奇EXIT:POPDXPOPCXPOPBXPOPAXRETPJYENDPDATDB?3.21对80000H开始的256个单元的数据加上偶校验。ORG100hMOVAX,8000HMOVDS,AXMOVSI,0MOVCX,100HCLDPAR0:LODSB;(MOVAL,[SI];INCSI)TESTAL,ALJNPPAR1LOOPPAR0JMPSTOPPAR1:ORAL,80H;MOV[SI-1],ALDECCXJNZPAR0STOP:HLT 4-1某以8088为CPU的微型计算机内存RAM区为00000H~3FFFFH,若采用6264、62256、2164或21256各需要多片芯片?14解答:8088内存单元为8bit,所以,从00000H到3FFFFH,共需要2个byte,共142*8bit,也就是共占用16Kbyte空间。由于各种芯片的数据总线根数不同,所以在连接时要特别注意芯片的位数;对于如下芯片:136264有8根数据线,13根地址线,故其容量为2*8bit,即8Kbyte,所以需要2片;1562256有8根数据线,15根地址线,故其容量为2*8bit,即32Kbyte,所以仅需要1片;尽管题目要求只需要16K的空间,但在使用62256时不得不使用1片。122164有8根数据线,12根地址线,故其容量为2*8bit,即4Kbyte,所以需要4片;21256有1根数据线,10根地址线(实际为20根,分两组),但由于仅有一根数据线,要构成八位的存储器至少需要8片,但总容量为8*256Bit,远远超过题目的要求。4.2利用全地址译码将6264接在8088的系统总线上,其所占的地址范围为BE000H~BFFFFH,试画出连接图。解答:6264有13根地址线,连接时接到系统总线的低13位,即A0~A12,其他7根地址线A19~A13的地址译码输入应该为:1011111B,故而有如下的连接:4.3试利用6264芯片,在8088系统总线上实现0000H~03FFFH的内存区域,试画出电路连接图。 14解答:0000H~03FFFH的地址范围为2=16K,,而6264芯片的容量为8*8K,所以需要连接2片,其中,第一片的地址为00000H~01FFFH,第二片的地址为02000H~03FFFH,这里用74LS138的Y0、Y1作为两个芯片的片选。4.4叙述EPROM的编程过程,说明EEPROM的编程过程。EPROM编程通常采用两种模式:标准编程和快速编程:标准编程是在VCC、VPP、CE、OE、地址信号、数据信号有效并稳定后加入50毫秒的PGM编程负脉冲,可以在写入一个数据后使OE变高而立即校验,也可以在所有数据写入后逐一校验。标准编程有两大缺陷:一是时间过长,比如2764全片编程约需7分钟,时间过长;再是编程脉冲宽度稍大容易造成芯片因功耗过大而烧毁。快速编程将PGM的宽度减小到100微妙左右,显然速度加快了500倍左右。能否使用快速编程取决于芯片的型号。EEPROM由于可以在线擦除信息,所以可以单字节编程或自动按页编程。在单字节写入时,CE为低,OE为高,在WE加入100纳秒的负脉冲,写入时间包括擦除原有内容和写入新内容的时间,一般为10毫秒以内,可以通过查询READY/BUSY的状态判定。 自动按页编程用高位线决定页地址,低位线决定页容量,然后一次写入一页内容,写完后查询READY/BUSY状态,此一过程耗时在300微秒左右,所以速度较快。4.5已有两片6116,现欲将其接到8088系统中去,其地址范围为40000H~40FFFH,试画出电路连接图;写入某数据并读出与之比较,若有错,则在DL中写入01H,若全对,在DL中写入EEH,试编写此检测程序。解答:电路连接如图示:检测程序定义为一个过程,编程如下:CHKRAMPROCFARPUSHSI;PUSHDL;PUSHCX;PUSHAX;MOVCX,10000H;待检验的单元个数MOVSI,4000H;存储体段地址MOVDS,SI;MOVSI,0000H;存储体首地址CHK:MOVAL,0FFH;MOV[SI],AL;写入检验数据FFHMOVAL,[SI];读出 ADDAL,01HJNZRAMERRMOVAL,0;MOV[SI],AL;写入另一格检验数据MOVAL,[SI];读出ANDAL,ALJNZRAMERRMOVDL,0EEH;所有单元全对JMPRAMCHKOUTRAMERR:MOVDL,01H;发现错误单元RAMCHKOUT:POPAX;POPCX;POPDL;POPSI;RETENDPCHKRAM4.6利用全地址译码将EPROM27128接到首地址为A0000H的内存区,试画出电路图。解答:EPROM27128的容量为8*16K,所以有14根地址线,那么如果将其接到首地址为A0000H内存区,高6位地址线的排列应该为:101000B,所以有如下的连接:4.7内存地址从40000H到BBFFFH共有多少K?解答:从40000H到BBFFFH的地址空间应该为BBFFFH-40000H=7BFFFH10每K为2,即3FFH,7BFFFH/3FFH=1F0H=496D 所以,该地址空间的范围应该为496KByte。4.8试判断8088系统中存储器译码器74LS138的输出Y0、Y4、Y6和Y7所决定的内存地址范围,电路连接见附图。解答:根据示意图,A19、A18、A17、A16的电平值为1X00B,由于采用的是部分译码(A18未使用),所以每个地址译码输出对应的两个地址范围。Y0对应A15、A14、A13均为0,所以其地址范围应该为:当A18=0时,地址范围为:1000000000000000~10000001111111111111B即80000H~81FFFH当A18=1时,地址范围为:1100000000000000~11000001111111111111B即C0000H~C1FFFFHY4对应的A15、A14、A13为100,所以其地址范围应该为:当A18=0时,地址范围为:10001000000000000000B~10001001111111111111B即88000H~89FFFH当A18=1时,地址范围为:11001000000000000000~11001001111111111111B即C8000H~C9FFFH Y6对应的A15、A14、A13为110,所以其地址范围为:当A18=0时,地址范围为:10001100000000000000B~10001101111111111111B即8C000H~8DFFFH当A18=1时,地址范围为:11001100000000000000B~11001101111111111111B即CC000H~CDFFFHY7对应的A15、A14、A14为111,所以其地址范围为:当A18=0时,地址范围为:10001110000000000000B~10001111111111111111B即8E000H~8FFFFH当A18=1时,地址范围为:11001110000000000000B~11001111111111111111B即CE000H~CFFFFH。李伯成《微机原理》习题第五章 本章作业参考书目:1.王永山等:微型计算机原理与应用西安电子科大出版社19983.洪志全等编《现代计算机接口技术》电子工业出版社2002年4月5-1满足那些条件8086CPU才能响应中断源的中断请求?参考答案:8088/8086的中断承认需要满足4个条件:(1)一条指令执行之后---因为8088/8086CPU只在指令周期的最后一个时钟周期检测INTR信号;(2)中断允许标志IF=1;(3)没有发生NMI、HOLD和RESET;(4)指令STI、IREI指令执行之后须再执行一条其他指令,但一些指令组合(如REP)要视为一个指令总体。5-2说明8088/8086软件中断指令INTn的执行过程。由指令INTn引起的中断也称为“异常”,即软件中断或内部中断。这里,INT为指令操作码,n是中断类型号(中断向量码);当该指令执行时,CPU根据中断向量码的数值在中断向量表(IDT---InterruptDirectionTable)找到相应的中断服务程序入口地址,在对CS、IP和FLAG进行入栈保护之后,进而转向指定程序的运行。5-3用三态门74LS244作为输入接口,接口地址规定为04E5H,试画出其与8088的总线连接图。解:根据题意,当地址线上的电平为0000010011100101且IOR信号为低(IOR低电平有效)时,74LS244的门控信号E1、E2应该为低,据此画出下列电路:5-4利用具有三态输出的锁存器74LS374作为输出接口,就接口地址为0E504H,试画出连接图。若5-3题中的输入接口的BIT3、BIT4、BIT7同时为1时,将DATA为首地址的10个内存数据连续由输出接口输出。若不满足则等待,试编写程序。 解:根据题意,当地址线上的电平为1110010100000100且IOW信号为低(IOW低电平有效)时,74LS374的时钟端CP应该为低,而74LS374的OE始终为低,据此画出下列电路:根据题5-3和题5-4电路,如果题5-3电路中的BIT3、BIT4和BIT7同时为1,则将以DATA为首地址的10个数据连续由0E504H输出口输出,不满足条件等待,对应的程序段如下:OUTWAIT:MOVDX,04E5HINAL,DXTESTAL,98H;10011000BJZOUTWAIT;MOVSI,OFFSETDATAMOVCL,0AH;数据个数MOVDX,0E504HOUTPUT:MOVAL,SIINCSIOUTDX,ALLOOPOUTPUT5-5若要求8259的地址为E010H和E011H,试画出与8080总线的连接图。若系统中只有一片8259,允许8个中断源边沿触发,不要缓冲,一般全嵌套方式,中断向量定为40H,试编写初始化程序。解:电路连接见图示,根据8259的ICW格式,有如下数据:ICW100010011=13H特征位无意义特征位边沿触发无意义单片有ICW4ICW20100000=40H无ICW3(单片,无级连控制) ICW400000011=03H无意义一般嵌套非缓冲模式自动EOI8086模式据上述有下列初始化语句:MOVDX,0E010H;方式控制寄存器端口1地址MOVAL,13HOUTDX,ALMOVDX,0E011H;方式控制寄存器端口2地址MOVAL,40HOUTDX,ALMOVAL,03HOUTDX,AL;5-5DMAC(8237)占几个接口地址?这些地址在读写时的作用是什么?叙述DMAC由内存向接口传送一个数据块的过程。若希望利用8237把内存中的一个数据块传送到内存的另一个区域,应当如何处理?当考虑到8237工作在8088系统,数据是由内存的某一段向另外的一段传送且数据块的长度大于64KB,应当如何考虑?答:8237的A0~A3在其空闲周期作为内部寄存器的选址线,故而8237共占用16个端口地址;当利用8237由内存向接口传送一个数据块时,8237送出内存地址及MEMR控制信号,将选中的存储单元的内容读出并放置到数据总线,同时,DMAC送出IOW控制信号,将数据写到预选的规定接口中,此后,DMAC自动修改内部寄存器得值,以适应下一个数据的传送;当利用8237把内存中的一个数据块传送到内存的另一个区域时,选择通道0和通道1实现传送。这时由通道0送出源区地址和MEMR控制信号,将选中的数据送入8237内部暂存器,同时修改源区地址指针;此后,由通道1送出目的区地址和MEMW信号,将内部暂存器的数据写到目的区,同时通道1修改地址和字节计数,当通道1的字节计数器为零时或者外部输入了EOP信号,传送结束。 数据是由内存的某一段向另外的一段传送且数据块的长度大于64KB时,可以利用页面寄存器技术来完成,即改变写入页面寄存器74LS670的内容,以达到传送64KB以上的内容。5-7说明微机中常用的外设编址方式及其优缺点。答:在微机系统中主要采用两种外设的编址,即外设与内存统一编址和外设和内存独立编址;统一编址又称存储器映射编址,即把内存的部分地址分配给外设,这样,外设就占用了部分内存地址,这样做的好处是不需要I/O指令,但也就不易分辨存储器操作指令还是I/O指令,同时,内存范围相应的减小了。独立编址时,内存空间和外设地址空间是相对独立的。这样,地址范围相应扩大,但需要IO/M信号和对应的输入、输出指令。5-8说明8088中采用中断方式工作时必须由设计人员完成的3项工作。答:在采用中断方式工作时,程序设计人员通常要做的3项工作如下:(1)、编写中断服务程序,即ISP;在编写ISP时,要注意现场保护、中断嵌套以及中断标志的处理;(2)、确定中断向量,此时要注意,如果系统采用了8259,那么在中断向量表内至少要有32个连续的字节;(3)、填写中断向量表,即把ISP的段地址和偏移地址填入向量表中相应的字节,这是,可以用机器指令方式,也可以统过DOS调用来完成,具体方法如下:机器指令方式:MOVAX,0MOVDS,AX;中断向量表段地址设置MOVSI,(向量码*4);向量表中的地址MOVDX,OFFSETISP;中断服务程序偏移地址MOV[SI],DXMOVDX,SEGISP;中断服务程序的段地址MOV[SI+2],DXDOS调用方式:MOVAH,25H;DOS调用功能号MOVAL,向量码;MOVDX,SEGISPMOVDS,DXMOVDX,OFFSETISPINT21H'