您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 《微机原理及应用》教材课后习题及答案
《微机原理及应用》习题答案第一章1.11请完成下列数制转换:(1)将174.66D转换为对应的二进制和十六进制形式。(2)将100011101011.01011B转换为对应的十进制和十六进制形式。(3)将F18A6.6H转换为对应的二进制和十进制形式。答:174.66D=10101110.1010B=AE.AH100011101011.01011B=2283.34375D=8EB.58HF18A6.6H=989350.375D1.12请写出与数据+37和-37对应的8位机器数原码、反码和补码,并分别用二进制和十六进制表示出来。答:-37D=(10100101B)原=(11011010B)反=(11011011B)补1.138位机器数46H,若作为无符号数和补码有符号数,其对应的真值各是什么?若作为BCD码和ASCII码,其对应的又是什么?答:无符号数46H=70,补码46H=+70BCD码46H=46,ASCII码46H=“F”第二章2.5什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达:(1)FFFFH:0H(2)40H:17H(3)2000H:4500H(4)B821H:4567H答:⑴FFFFH:0H=FFFF0H⑵40H:17H=00417H⑶2000H:4500H=24500H⑷B821H:4567H=BC777H2.8已知DS=2000H,BX=0100H,SI=0002,存储单元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,说明下列每条指令执行完后AX寄存器的内容以及源操作数的寻址方式?答:⑴AX=1200H,立即数寻址;⑵AX=0100H,寄存器寻址;⑶AX=4C2AH,直接寻址;⑷AX=3412H,寄存器间接寻址;⑸AX=4C2AH,寄存器相对寻址;⑹AX=7865H,基址变址寻址;⑺AX=65B7H,基址变址相对寻址。2.9说明下面各条指令的具体错误原因:(1)movcx,dl(2)movip,ax(3)moves,1234h(4)moves,ds(5)moval,300(6)mov[sp],ax(7)movax,bx+di(8)mov20h,ah答:⑴操作数类型不同;⑵不能手工修改IP;⑶不能将立即数直接MOV到段寄存器;⑷不能在段寄存器之间直接MOV数据;⑸300大于AL所能存放的数据的范围;⑹寄存器间接寻址只能用BX/BP/SI/DI之一;⑺MOVAX,[BX+DI];⑻目的操作数不能是立即数。2.10已知数字0~9对应的格雷码依次为:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。leabx,tablemoval,8xlat答:leabx,table;bx=0200hmoval,8;al=08hxlat;al=12h2.11给出下列各条指令执行后的AL值,以及CF,ZF,SF,OF和PF的状态:moval,89haddal,aladdal,9dhcmpal,0bchsubal,aldecalincal答:⑴al=89h⑵al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1⑶al=afh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0⑷al=afh,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0⑸al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0⑹al=ffh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1⑺al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=12.12请分别用一条汇编语言指令完成如下功能:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加并把结果送到AL中。用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。答:⑴adddx,bx;⑵addal,[bx+si];⑶add[bx+00b2h],cx⑷addwordptr[0520h],3412h⑸addal,0a0h2.13设X,Y,Z,V均为16位带符号数,分别装在X,Y,Z,V存储器单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。movax,ximulymovcx,axmoxbx,dxmovax,zcwdaddcx,axadcbx,dxsubcx,540abbbx,0movax,vcwdsubax,cxabbdx,bxidivx答:(V-(X*Y+Z-540))/X2.14给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。movax,1470handax,axorax,axxorax,axnotaxtestax,0f0f0h答:⑴ax=1470h⑵ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑶ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑷ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1⑸ax=0ffffh,CF=0,ZF=0,SF=0,OF=1,PF=1⑹ax=0ffffh,CF=0,ZF=0,SF=1,OF=0,PF=12.16假设DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?答:⑴1256h;⑵3280h2.17判断下列程序段跳转的条件(1)xorax,lelehjeequal(2)testal,10000001bjnzthere(3)cmpcx,64hjbthere答:⑴ax=1e1eh;⑵al=1******1b;⑶cx64h2.18如下是一段软件延时程序,请问NOP指令执行了多少次?xorcx,cxdelay:noploopdelay答:655362.19有一个首地址为array的20个字的数组,说明下列程序段的功能。movcx,20movax,0movsi,axsumlp:addax,array[si]addsi,2loopsumlpmovtotal,ax答:将array数组的20个字(无进位)累加,其和存入total单元。2.20按照下列要求,编写相应的程序段:(1)由string指示的起始地址的主存单元中存放一个字符串(长度大于6),把该字符串的第1个和第6个字符(字节量)传送给DX寄存器。(2)有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成DX.AX←buffer1-buffer2功能。(3)编写一个程序段,在DX高4位全为0时,使AX=0;否则,使AX=-1。(4)把DX.AX中的双字右移4位。(5)有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借位)存于原处。答:⑴movdl,stringmovdh,string+5⑵movax,wordptrbuffer1subax,wordptrbuffer2movdx,wordptrbuffer1+2sbbdx,buffer2+2⑶testdx,0f0hjet1movax,-1jmpdonet1:movax,0done:…..⑷movax,1234hmovdx,5678hmovcx,4lp1:shrdx,1rcrax,1looplp1⑸leabx,arraymovcx,100lp1:sub[bx],1incbxlooplp12.25编写一个程序段:先提示输入数字“InputNumber:0~9”,然后在下一行显示输入的数字,结束;如果不是键入了0~9数字,就提示错误“Error!”,继续等待输入数字。答:.modelsmall.stack100h.datamessagedb“InputNumber:0~9”,0dh,0ah,“$”errordb“Error!”,0dh,0ah,“$”.code.startupmovdx,offsetmessagemovah,09hint21hbegin1:movah,01hint21hcmpal,“0”jberr1cmpal,“9”jaerr1movdl,almovah,02hint21h.exiterr1:movoffseterrormovah,09hint21hjmpbegin1end第三章3.11请设置一个数据段,按照如下要求定义变量:(1)my1b为字符串变量,表示字符串“PersonalComputer”。(2)my2b为用十进制数表示的字节变量,这个数的大小为20。(3)my3b为用十六进制数表示的字节变量,这个数的大小为20。(4)my4b为用二进制数表示的字节变量,这个数的大小为20。(5)my5w为20个未赋值的字变量。(6)my6c为100的符号常量。(7)my7c为字符串常量,代替字符串“PersonalComputer”。答:my1bdb“PersonalComputer”my2bdb20my3bdb14hmy4bdb00010100bmy5wdw20dup(?)my6cequ100my7cequPersonalComputer3.14设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:;数据段org100hvarwdw1234h,5678hvarbdb3,4varddd12345678hbuffdb10dup(?)messdb‘hello’;代码段movax,offsetmessmovax,typebuff+typemess+typevardmovax,sizeofvarw+sizeofbuff+sizeofmessmovax,lengthofvarw+lengthofvard答:offsetvarb=0104hoffsetmess=0114htypebuff=1;typemess=1;typevard=4sizeofvarw=4;sizeofbuff=10;sizeofmess=5lengthofvarw=2;lengthofvard=13.15假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的具体错误原因。⑴movbyteptr[bx],1000(2)movbx,offsetmyword[si](3)cmpmybyte1,mybyte2(4)movmybyte1,al+1(5)subal,myword(6)jnzmyword答:⑴1000大于字节变量所能表示的范围movbyteptr[BX],5表示的意思是把5以字节的形式传送给DS:BX,1000超过了0ffh,也就是大于1个字节,所以无法传送会出现errorA2050:Valueoutofrange(值超出范围)数据类型不匹配,目的地址单元是字节单元,1000大于255。无法存放。⑵OFFSET只能用于简单变量OFFSET后只能跟标识符。⑶双操作数不能同时为存储器操作数CMP的两个操作数不能同时在存储器中。⑷数值表达式应为运算符加常量运算符只能对常数进行操作,不能对变量进行操作。⑸两操作数类型不一致数据类型不匹配,AL是8位的,MYWORD是16位变量。⑹条件跳转只能是短跳转MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。3.17已知用于LED数码管的显示代码表为:LEDtabledb0
本文标题:《微机原理及应用》教材课后习题及答案
链接地址:https://www.777doc.com/doc-2836927 .html