您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理与接口技术完整版答案(第二版)
课后答案:2.1将下列十进制数分别转换为二进制数、八进制数、十六进制数。128D=10000000B=200O=80H1024D=10000000000B=2000O=400H0.47D=0.01111000B=0.36O=0.78H625D=1001110001B=1161O=271H67.544D=1000011.1000B=103.4264O=43.8BH2.2将下列二进制数转换成十进制数。10110.001B=22.125D11000.0101B=24.3125D2.3将下列二进制数分别转换为八进制数、十六进制数。1100010B=142O=62H101110.1001B=56.44O=2E.9H0.1011101B=0.564O=0.BAH2.4写出下列用补码表示的二进制数的真值。01110011—→01110011—→+11500011101—→00011101—→+2910010101—→11101011—→-10711111110—→10000010—→-210000001—→11111111—→-1272.6写出下列十进制数的BCD码表示形式。456=(010001010110)BCD789=(011110001001)BCD123=(000100100011)BCD3.18086CPU由几部分组成?它们的主要功能是什么?答:从功能上讲,8086分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。BIU是CPU与外部存储器及I/O的接口,负责与存储器和I/0系统进行数据交换。指令执行部件EU完成指令译码和执行指令的工作。3.28086有多少根地址线?可直接寻址多大容量的内存空间?答:8086CPU有16根数据线和20根地址线,直接寻址空间为220,即为1M字节。3.38086内部的寄存器由哪几种类型组成?各自的作用是什么?答:8086CPU内部有14个16位寄存器,可以分为以下三组:分别是通用寄存器组,段寄存器组,控制寄存器。通用寄存器组可以分为两组:数据寄存器和地址指针与变址寄存器。数据寄存器主要用来保存算术、逻辑运算的操作数、中间结果和地址。地址指针与变址寄存器主要用于存放或指示操作数的偏移地址。段寄存器组:8086/8088CPU内部设置了4个16位段寄存器,它们分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES,由它们给出相应逻辑段的首地址,称为“段基址”。控制寄存器:含指令指针IP及标志位寄存器FR。IP用来存放将要执行的下一条指令在现行代码段中的偏移地址。标志寄存器FR用来存放运算结果的特征3.58086的存储器采用什么结构?答:8086的存储器采用分体结构。1M的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512K字节。3.78086系统中的堆栈操作是按什么原则进行的?答:堆栈操作的原则是后进先出。4.3存储器的地址译码有几种方式?各自的特点是什么?答:常用的存储器地址译码有两种方式,即单译码和双译码方式。单译码方式是一个“N中取1”的译码器,译码器输出驱动N根字线中的一根,每根字线由M位组成。若某根字线被选中,则对应此线上的M位信号便同时被读出或写入,经输出缓冲放大器输出或输入一个M位的字。主要用于小容量的存储器。双译码方式采用的是两级译码电路。当字选择线的根数N很大时,N=2p中的p必然也大,这时可将p分成两部分,如:N=2p=2q+r=2q×2r=X×Y,这样便将对N的译码分别由X译码和Y译码两部分完成。从而大大减少了选择线的数目。4.4某RAM芯片的存储容量为1024×8位,该芯片的外部引脚应有几条地址线?几条数据线?若已知某RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是多少?答:该芯片的外部引脚应有10条地址线,8条数据线。RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是8K×8位。4.5用Intel21141K×4位的RAM芯片组成32K×8位的存储器,需要多少块这样的芯片?答:需要64块。注:扩展时需要的芯片数量可以这样计算:要构成一个容量为M×N位的存储器,若使用p×k位的芯片(pM,kN),则构成这个存储器需要(M/p)×(N/k)个这样的存储器芯片。4.6利用2764芯片(EPROM,8K×8位)并采用74LS138译码器进行全译码,在8086系统的最高地址区组成32KB的ROM,请画出这些芯片与系统总线连接的示意图。5.1试出指令MOVBX,3040H和MOVBX,[3040H]有什么不同?1、寻址方式不同:立即数寻址和直接寻址。2、运行结果不同:MOVBX,3040H;BX=3040HMOVBX,[3040H];将DS段3040H和3041H的内容送BX5.2指出下列指令是否有错,并说明理由。(1)MOV[DI],[SI];错,内存单元之间不能直接进行数据传送(2)MOVCS,AX;错,CS不能做目的操作数(3)MOV1200,AX;错,立即数不能做目的操作数(4)MOVDS,CS;错,段寄存器之间不能互相传送(5)PUSHFLAG;对(6)POPCS;错,CS不能做目的操作数(7)MOVCL,AX;错,源、目的操作数长度不一致(8)MOV[5000H],[1000H];错,内存单元之间不能直接进行数据传送5.3在8086中,堆栈操作是字操作还是字节操作?已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSHAX);试问AX的内容存放在何处?答:堆栈操作是字操作。入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。5.4假如要从200中减去AL中的内容,用SUB200,AL对吗?如果不对,应采用什么方法?答:不对,立即数不能作为目的操作数。先把立即数传送到一个存储器或寄存器当中。例如:MOVBL,200SUBBL,AL或:NEGALADDAL,20074LS138G1G2AG2B&OA19A18A17A16A15A14A13ABC2764(1)2764(2)2764(3)2764(4)A12~A0CECECECEY4Y5Y6Y7O5.5编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果放内存(2800H)单元中。解:CMPAX,BXCMPAX,BXCLCJAPT1JAPT1SUBAX,BXSUBBX,AXXCHGAX,BXJCPT1MOVDX,2800HPT1:SUBAX,BXMOVDI,2800HMOVDX,BXMOV[2800H],AXMOV[DI],AXHLTHLTHLTPT1:SUBAX,BXPT1:SUBBX,AXMOVDX,2800HMOVDI,2800HMOVDX,AXMOV[DI],BXHLTHLT5.6若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放在2000H开始的内存单元中,试编制程序。MOVDI,2000HLEASI,3000HMOVAX,[DI]MOVDX,[DI+2]ADDAX,[SI]ADCDX,[SI+2]MOV[DI],AXMOV[DI+2],DX5.7用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。方法一:INAL,88H方法二:MOVDX,0088HINAX,DXMOVAL,56HMOVAL,56HOUT44H,ALMOVDX,0044HOUTDX,AL6.12指出以下四条指令的作用(HEX为数据段的一个变量名)⑴MOVBX,HEX;将变量HEX的内容传送到BX寄存器⑵LEABX,HEX;取变量HEX的偏移地址送BX⑶MOVBX,OFFSEGHEX;BX指向变量HEX的偏移地址⑷MOVBX,SEGHEX;将变量HEX所在段的段地址传送到BX6.13下面是变量定义伪指令,DATASEGMENTBUFDW3DUP(5,2DUP(8))CEDDB‘Welcometoyou’,ODH,OAH,‘$’ADDRDWBUFCOUNTEQU$-CEDDATAENDS问:⑴按内存单元存放的先后次序,按字节写出数据段中的数据。05H,00H,08H,00H,08H,00H,05H,00H,08H,00H,08H,00H,05H,00H,08H,00H,08H,00H,57H,65H,6CH,63H,6FH,6DH,65H,20H,74H,6FH,20H,79H,6FH,75H,0DH,0AH,24H,00H,00H⑵说明对BUF,CED,ADDR等变量施行TYPE,LENGTHSIZE运算符后,其结果分别为多少?TYPEBUF=2LENGTHBUF=3SIZEBUF=6TYPECED=1LENGTHCED=1SIZECED=1TYPEADDR=2LENGTHADDR=1SIZEADDR=2⑶COUNT的值为多少?196.17编写一个将16位二进制数转化为四位十六进制数的程序,并将十六进制数的各位显示出来。注:答案中给了一个假定的16位二进制数。DATASEGMENTBINDW1001110101111011BHEXASCDB4DUP(20H)DB‘$’DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACKlENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKlBINHEX:MOVCH,4;十六进制数的位数MOVBX,BIN;取待转移数据MOVDI,OFFSETHEXASC;取存放ASCII码首地址CONV1:MOVCL,4ROLBX,CL;取4位二进制数MOVAL,BLANDAL,0FHCMPAL,09H;是0-9吗?JBEASCI;是,转移ADDAL,07H;是A-F,先加07HASCI:ADDAL,30H;加30HMOV[DI],AL;存结果INCDI;修改指针DECCHJNECONVI;计数未完,继续LEADX,HEXASCMOVAH,09HINT21HCODEENDSENDBINHEX很多同学的答案:DATASEGMENTADW4XDW(16位二进制数)YDB4DUP(?)DATAENDS……START:MOVCX,ALEADI,YAGAIN:MOVBX,XPUSHCXDECCXMOVING:SHRBX,4LOOPMOVINGPOPCXANDBL,0FHCMPBL,09HJGDAYUADDBL,30HJMPXIAOYUDAYU:ADDBL,37HXIAOYU:MOV[DI],BLINCDILOOPAGAINLEADX,YMOVAH,09HINT21HCODEENDSENDSTART7.1名词解释(1)时钟周期:一个时钟脉冲的时间长度,CPU的时钟频率的倒数,也称T状态。(2)总线周期:CPU中,BIU完成一次访问存储器或I/O端口操作所需要的时间,称作一个总线周期,也称机器周期(MachineCycle)。(3)指令周期:执行一条指令所需的时间称为指令周期。(4)等待周期:在T3和T4之间插入的周期。(4)(5)空闲状态:CPU不执行总线周期时的状态。(6)时序:计算机操作运行的时间顺序。8.5简述CPU与外设以查询方式传送数据的过程。现有一输入设备,其数据端口的地址为FEE0H,并从端口FEE2H提供状态,当其D0位为1时表明输入数据准备好。试编写采用查询方式进行数据传送的程序段,要求从该设备读取64个字节并输入到从2000H:2000H开始的内存中。(程序中需加注释)P144~145页。MOVAX,2000HMOVDS,AX;设定段基址MOVDI,2000H;目的地址送DIMOVCX,64;字节数READ:MOVDX,0FEE2H;指向状态口INAL,DX;读入状态位TESTAL,01H;数据准备好否?JZREAD;否,循环检测MOVDX,0FEE0H;指向数据口INAL,DX;已准备好,读入数据M
本文标题:微机原理与接口技术完整版答案(第二版)
链接地址:https://www.777doc.com/doc-4388907 .html