您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 清华大学自动化系罗予频计原作业答案三
57.现有两片4110RAM组成存储器系统如下图所示。每片4110的存储容量为1K×8bit,地址译码器用74LS138。试回答:(1)第一片和和第二片4110的地址范围各是什么?(2)若要扩展1KB存储容量,4110须要几片?请将新增加的4110芯片画在图上并连接相应的信号线。新增RAM的地址范围是什么?(3)说明上述电路中(包括新增部分)存储器有无地址重迭现象?若有请指出重迭的范围并提出消除地址重迭的措施。1G2GA2GBCBA19A18A17A16A15A13A12A11A74LS1387D0D....9A0A....(1)DBAB2Y4Y0D0D7D7D........9A9A0A0A........(2)4110CECECERDWRRDWRWRRDMEMRMEMW....解:G1=1==A19=0G2A=1==A18=0G2B=1==A17=A16=A15=0A14和A10没有用到,可均设为0(1)第一片A13A12A11=010地址范围(Y2):1000H---13FFH第二片A13A12A11=100地址范围(Y4):2000H----23FFH(2)新一片4110的片选若接Y3,A13A12A11=011地址范围是:1800H---1BFFH片选若接Y6,A13A12A11=110地址范围是:3000H---33FFH片选若接Y0,A13A12A11=000地址范围是:0000H---03FFH片选若接Y1,A13A12A11=001地址范围是:0800H---0BFFH片选若接Y5,A13A12A11=101地址范围是:2800H---2BFFH片选若接Y7,A13A12A11=111地址范围是:3800H---3BFFH(3)由于地址信号A14和A10未参加地址译码,故每个译码输出端重叠4个地址范围。除(1)列出的基本地址(A14A10=00)外,还各有三个地址范围如下:A14A10=01A14A10=10A14A10=11Y21400H--17FFH5000H—53FFH5400H—57FFHY31C00H—1FFFH5800H—5BFFH5C00H—5FFFHY42400H—27FFH6000H—63FFH6400H—67FFHY63400H—37FFH7000H—73FFH7400H—77FFH消除地址重叠的方法是让地址信号A14和A10也参加地址译码,例如:A14、A10和A17、A16、A15一起纳入负与门(5输入端)译码;或A14、A10和A18一起纳入负与门(3输入端)译码。58.试分析下图中存储器芯片6116的存储容量及在系统中的地址范围。70~DD100~AA6116CSWERDMEMWMEMR17A13A12A19A18A16A14A15ADBAB解:6116的地址容量是2K(11根地址线)B。其地址范围有相互重叠的两个区域:A0000H—A07FFH或A0800H—A0FFFH。63.PC/XT中接口地址译码电路如图所示:(1)列表说明各译码输出端有效时对应地址信号A9~A0的取值,并用十六进制写出地址范围。(2)说明译码器输入信号AEN的名称及在此处的作用。(3)说明信号IOR和IOW在此处的作用。1G2GA2GBCBA74LS1387Y0Y8A7A6A5A4A3A9A2A1A0AAENIORIOW解:1)译码电路中,A9A8A7A6A5A4A3A2A1A0=10,1111,0XXXB。因此Y0—Y7对应的地址范围分别是:2F0H2F1H..2F7H2)AEN信号在此使译码电路在DMA时不工作,仅在CPU执行指令时工作。3)IOR、IOW在此使译码电路在执行存储器读写时不工作,仅在执行I/O指令时工作。64.8086/8088响应中断后要获得中断类型号。举例说明不同的中断类型产生中断类型号的方法有哪几种?解:不同的中断类型产生中断类型号的方法有三种:1)CPU在执行指令过程中自动产生中断类型号,例如执行除法指令过程中,若发生除以零中断,则自动产生类型号为0的中断,即INT0。又如发生NMI时,自动产生类型号为2的中断,即INT2。2)CPU在执行指令过程中从指令机器码中获得中断类型号。写在源程序中的所有INTn指令都属于这种情况。3)由外部可屏蔽中断源引发的硬中断由中断管理电路8259A在中断响应时提供中断类型号,如系统时钟中断、键盘中断、硬软磁盘中断等。36.两个4位压缩的BCD数,存放在存储器中的地址为ALPHA和BETA,编写程序求两个数的和,结果存入ALPHA单元。解:DATASEGMENTALPHADB34H,12H;压缩的BCD数1字节表示2位,4位应占1个字。用DW的可读性更好,但后面只能用字节加。BETADB52H,46HDATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVSI,0MOVCX,2CLCLOOPER:MOVAL,ALPHA[SI]ADCAL,BETA[SI]DAAMOVALPHA[SI],ALINCSIDECCX;也可以和下面可以合起来改成LOOPLOOPERJNZLOOPERCODEENDSENDSTART39.比较AX,BX,CX中带符号补码数的大小,将其最大者放在AX中,试编写此程序。解:DATASEGMENTDATA1DW4142HDATA2DW8107HDATA3DW0A123HMAXDW?DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,DATA1MOVBX,DATA2MOVCX,DATA3法一:MOVMAX,AXCMPBX,MAXJGGREAT1NEXT:CMPCX,MAXJGGREAT2JLEGOONGREAT1:MOVMAX,BXJMPNEXTGREAT2:MOVMAX,CXGOON:MOVAX,MAX法二:更好,不仅少占用资源,而且快CMPAX,BXJGENEXT1XCHGAX,BXNEXT1:CMPAX,CXJGENEXT2XCHGAX,CXNEXT2:MOVMAX,AXCODEENDSENDSTART40.编写程序,将BLOCK中的100个字节数据的位置颠倒过来(即第1个字节和第100个字节的内容互换,第2个字节和第99个字节的内容互换,…)。解:MOVCX,50;循环次数LEASI,BLOCKMOVAX,SIADDAX,99MOVDI,AXTOP:MOVAL,[SI];也可以取一个到AL后和内存XCHGMOVBL,[DI]MOV[DI],ALMOV[SI],BLINCSIDECDILOOPTOP41.编写程序,求AX寄存器中有多少个“1”,并将其个数存入CL寄存器中。解:XORBL,BLMOVCX,16COUNT:SHLAX,1JNCGOONNEXT:INCBLGOON:LOOPCOUNT;事实上,某次移位后AX=0就可以退出了MOVCL,BL48.编写程序,把三个连续存放的单字节带符号整数,按递增次序重新存放在原来的三个存储单元中。解:最直接的做法:DATASEGMENTDATA1DB12HDATA2DB56HDATA3DB?DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAL,DATA1MOVBL,DATA2MOVCL,DATA3CMPAL,BLJGENEXT1;带符号数用JG,若用JA就错了XCHGAL,BLNEXT1:CMPAL,CLJGENEXT2XCHGAL,CLNEXT2:CMPBL,CLJGENEXT3XCHGBL,CL;至此ALBLCLNEXT3:MOVDATA1,CL;按递增顺序存储MOVDATA2,BLMOVDATA3,ALCODEENDSENDSTART附其他解法如下:DATASEGMENTDATDB5,-7,100DATAENDSSTACK1SEGMENTSTACKDB100HDUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXLEASI,DATMOVCX,2L1:MOVAL,[SI]CMPAL,[SI+1]JNGL2XCHGAL,[SI+1]MOV[SI],ALL2:INCSILOOPL1MOVAH,4CHINT21HCODEENDSENDSTART;此程序做完,只能保证最大的一个排在最后面,但若原来的第二、第三个发生过交换,则第一个和第三个还没比较过。所以应该再作一次新的第一、第二个之间的比较。程序修改如下。START:MOVAX,DATAMOVDS,AXLEASI,DATMOVCX,2L1:MOVAL,[SI]CMPAL,[SI+1]JNGL2XCHGAL,[SI+1]MOV[SI],ALL2:INCSILOOPL1MOVAL,DTA:比较新的一、二元素CMPAL,DTA+1JNGDONEXCHGAL,DTA+1MOVDTA,ALDONE:MOVAH,4CHINT21H;此程序可以改成一个二重循环如下。这样还可以适应更多个数的排序:DATASEGMENTDT1DB07FH,56H,80HDATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVCH,2LP1:MOVCL,CHLEASI,DT1LP2:MOVAL,[SI]INCSICMPAL,[SI]JNGNEXT1XCHGAL,[SI]MOV[SI-1],ALNEXT1:DECCL;内循环控制JNZLP2DECCH;外循环控制JNZLP1DONE:MOVAH,4CHINT21HCODEENDSENDSTART67.设PC/XT存储器低地址区一段内容如下:地址(H):0:20,21,22,23,24,25,26,27,28,29,2A,2B内容(H):3C,00,86,0E,45,00,86,0E,57,00,86,0E(1)在CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H时,执行INT8H指令后:①程序转向何处执行?(用物理地址回答)_________________②SP=_______;栈顶六单元的内容分别是:(:)=_________;(:)=_________;(:)=_________;(:)=_________;(:)=_________;(:)=_________;(2)若用户要使用系统的IRQ2,其中断服务程序入口地址为2000:0100H,如何安装中断矢量(包括保护原矢量)。解:(1)①因为执行指令INT8,中断矢量的地址为4X8=32D=20H,中断矢量的内容(即中断服务程序入口地址)为0E86H:003CH=E89CH。②SP=100H–6=0FAH;栈顶六单元的内容分别是:(1000H:FAH)=12H;(1000H:FBH)=00H;(1000H:FCH)=00H;(1000H:FDH)=20H;(1000H:FEH)=40H;(1000H:FFH)=02H;因为执行INT8指令(2字节),IP+2=0012H.(2)PROIPDW?PROCSDW?;保护原矢量PUSHAXPUSHBXPUSHDXPUSHDSPUSHESMOVAH,35H;MOVAL,0AH;中断类型码,IRQ2对应的INT21HMOVPROIP,BXMOVPROCS,ES;装入现
本文标题:清华大学自动化系罗予频计原作业答案三
链接地址:https://www.777doc.com/doc-2286703 .html