微机接口答案.docx
第三章1 ,分别说明下刖指令的源操作数和H的操作数各米纳什么寻及方式.< 1>MOVAX.2408H(2)MOVC1.OFFH(3)MOVBX.(SI)< 4>MOV5(BX.B1.MOVBP*1OOHbAX(6)M0V(BX*DI.'S'(7>MOVDX.ES:(BX-SI)(8>MOVVA1.(BP÷DI).DX(9>INA1.05H(1O>MOVDS.AXrti(V.htt.寄存器<2>J.ft3)寄存器间接,布在器(4>寄存器.寄存备相对5寄存器.符存湍相对(6>马上数基坟支址(7)丛址变址,寄存潺(8)将存潺,相对基址变址< 9>I瞰器口寻址,寄存器<10)寄存器.寄存器2 .己如,DS=100OH.BX=0200H.SI=02H内存10200H=10205H单兀的内容分别为10H.2AH.3CH.46H.59H.6BH下列每条指令执行先后AX寄存潺的内容各是什么?(1)MOVAX.020OH<2)MOVAX.(2H<3)MOVAX.BX(4)MOVAX,3BX(5)MOVAXBX*SI(6>MOVAX,2(BX+SI)答:(1>0200H<2>2A10H020OH<4>5946H(5)463CH<6>6B59H3 .设DS=1000H.ES=20H.SS=a5O0H.SI=OOAOH.DI=0024H.BX=O100H.BP=0200H.数据段中变后名为VA1.的帕移地址值为0030HM说明下列源绿作数字坦的才址方式是什么?物理地址值是多少?(1>MOVAX.(1H(2)MOVAX.VA1.(3)MOVAX.BX<4>MOVAX.ES:(BX)<5)MOVAX.(SI)(6)MOVAX,BX*10H(7>MOVAX,BPJ<8)MOVAX.VA1.(BP)SI<9>MOVAX.VA1.(BXD1.(10)MOVAX.(BP)DI帘(1)I½.101OOH<2)I½.10030H3)寄存器间接.101OoH<4>寻存器间接201H(5)得存对间接.100AOH(6)寄存器相对.10110H<7>寄存器间接.3520OH(8)相对基址变址.352D0H<9>相对塔址变址,10154H<10)船址变址.35224H4 .4出下列指令的机JS码<1>MOVA1.C1.(2jMOVDX.CX(3jMOVBX*100H.3150H答:(1)10001B<2>10001B<3>1100011110011100001010B5 .已知程序的数据段为:DATASEGMENTADBT,10HBDB,COMPUTER,CDW1234H,OFFHDDB5DP()EDD1200459AHDATAENDS求下列程序段执行后的结果是什么。MOVA1.,AMOVDX1CXCHGD1.,AMOVBX1OFFSETBMOVCX13BX1.EABX1D1.DSSI,E1.ESDI,E答:MOVA1.,AA1.=24HMOVDX1CDX=1234HXCHGD1.,AD1.=24H,A=34HMOVBX1OFFSETBBX=2MOVCX13BXCX=5550H1.EABX1DBX=OOOEH1.DSSI,EDS=1200H,SI=459AH1.ESDI,EES=1200H,DI=459AH6 .指出下列指令中哪些是错误的,错在什么地方。(1) MOVD1.,AX(2)MOV8650H,AX(3)MOVDS,0200H(4)MOVBX,1200H(5)MOVIP,OFFH(6)M0VBX+SI+3,IP(7)MOVAX,BXBP(8)MOVA1.,ES:BP(9)MOVD1.,SIDI(10)MOVAX,OFFSET0A20H(11)MOVA1.OFFSETTAB1.E(12)XCHGA1.,50H(13)INB1.,05H(14)OUTA1.,OFFEH答:(1)长度不匹配(2)马上数不能做目的操作数(3)段寄存器不能用马上数赋值(4)两个内存单元不能干脆传送数据(5)IP不能用指令干脆修改(6)指令中不能出现IP(7)BX/BP应与SI/DI搭配(8)正确(9)SI/DI应与BX/BP搭H(10)OFFSET后应跟内存单元(11)偏移地址为16位,A1.长度不够(12)马上数不能用于XCHG(13) IN必需用A1./AX(14)操作数依次反向;地址应为8位7 .已知当前数据段中有一个十进制数字09的7段代码表,其数值依次为40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。要求用X1.AT指令将十进制数57转换成相应的7段代码值,存到BX寄存器中,试写出相应的程序段。答:DATASEGMENTTAB1.EDB40H,79H,24H,30H,19H,12H,02H,78H,00H,18HDATAENDSMOVA1.5MOVBX,OFFSETTAB1.EX1.ATTAB1.EMOVC1.,A1.MOVA1.,7X1.ATTAB1.EMOVB1.,A1.MOVBH,C1.8 .已知当前SS=1050H,SP=0100H,AX=4860H,BX=1287H,试用示意图表示执行下列指令过程中,堆栈中的内容和堆栈指针SP是怎样变更的。PUSHAXPUSHBXPOPBXPOPAX(1)指9 .下列指令完成什么功能?(1) ADDA1.,DH(2)ADCBX,CX(3)SUBAX,2710H(4) DECBX(5)NEGCX(6)INCB1.(7) MU1.BX(8)DIVC1.答:(I)A1.+DH-A1.(2)BX+CX+CF-BX(3)AX-2710H-AX(4)BX-1-*BX(5)0-CXCX(6)B1.+1-*B1.(8) AX*BX-DX,AX(8)AX/C1.商一A1.,余数一AH10 .已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果是什么?标记位CF等于什么?(1)ANDAH,C1.(2)ORB1.,30H(3)NOTAX(4) XORCX,OFFFOH(5)TESTDH,OFH(6)CMPCX,OOH(7) SHRDX,C1.(8)SARA1.,1(9)SH1.BH,C1.(10) SA1.AX,1(11)RC1.BX,1(12)RORDX,C1.答:(1)AX=0408H,CF=O(2)BX=0F36H,CF=O(3)AX=0DAF7H,CF不变(4)CX=0FFF4H,CF=O(5)DX=01864H,CF=O(6)CX=0004H,CF=O(7)DX=0186H,CF=O(8)AX=2504H,CF=O(9)BX=0F036H,CF=O(10)AX=4A10H,CF=O(11)BX=1E6C1E6DH,CF=O(12)DX=4186H,CF=O(11) 设数据段定义如下:DATASEGMENTSTRINGDB'ThePersona1.Computer&TV,DATAENDS试用字符串操作等指令编程完成以下功能:(1)把该字符串传送到附加段中偏移量为GET.CHAR起先的内存单元中。(2)比较该字符串是否与TheCOmPUter'相同,若相同则将A1.寄存器的内容置1,否则置O.,并要求将比较次数送到B1.寄存器中。(3)检杳该字符串是否有若有则用空格字符将其替换。(4)把字符串大写字母传送到附加段中以CAPS起先的单元中,其余字符传到以CHART起先的单元中。然后将数据段中存储上述字符串的单元清0。答:(1)C1.D1.EASI,STRING1.EADI,GET.CHARMOVCX,26REPMOVSB(2)补充在附加段定义STRING1DBThecomputer'MOVA1.,1C1.D1.EASIjSTRING1.EADItSTRINGIMOVCX112REPZCMPSBJZSKIPMOVA1.,0SKIP:MOVBX,12SUBBX,CX(3) MOVAX1DATAMOVES,AXC1.DMOVA1.,&1.EADIiSTRINGMOVCX,26NEXT:REPNESCASBJZFINDJMPEXITFIND:MOVBYTEPTRD1.-1,"JCXZEXITJMPNEXTEXIT:(4) 1.EASI,STRING1.EADI,CAPS1.EABX1CHARTMOVCX,26NEXT:MOVA1.,SICMPA1.,A,JBOTHERCMPA1.,Z,JAOTHERMOVES:DI,A1.INCD1.JMPSKIPOTHERMOVES:|BX.A1.INCBXSKIP:MOVBYTEPTR(SI)1OINCSI1.OOPNEXT12 .据程将AX符"JS中的内容以相反的依次传送到DX符存;S中.井要求AX中的内容不被破坏.然后统计DX寄存器中'1'的个数是多少.n:MOVB1.tOPUSHAXMOVDX,0MOVCX.16NEXT:SH1.AX.1JNCSKIPINCB1.SKIPRCRDX.11.OOPNEXTSTOP:POPAX13 ttCS=1200H.IP=O100H.SS=50(X>H.SP=04H.DS=20H.SI=3000H.BX=0300H.(20300H=4800H.(20302H)=OOFFH.TAB1.E=05H.PROGN标多的地址为1200:0278H.PROG-F怀号的地址为3400H:OABCK说明下列每条指令执行先后,程序格分别转移到何处执行?<1>JMPPROG_N(2>JMPBX(3)JMPBXJ(4>JMPFARPROGF(5)JMPDWORDPTR(BX)如格上述相令中的僚作码JMP改成CA1.1.则号条指令执行完后«!序情向何处执行?ft请两图说明城栈中的内容和堆栈指针加何变更.帘(1)12O0Hj0278H(2)1200H:0300H(3>1200H:4800H(4>3400H;OABCH(5)OOFFH:4800H将操作码JMPAtiiCA1.1.后:(1) 1200H:0278H指令长度为3.H1IP=0100H+a=0103H.入栈<1.>1XX><.37«H<5>OOFFH:4800H指令长度为2,则IPO1OOH/2O1O2H,入枝SOOOH.OOOOHSOOQH,OJFCH«302H'OOOHt03rTHOIHOOM50<×J!<1.CMOoH12K14H卜列程诙殁括号中分别功入以卜指令<1>1.oopnext<2)1.oopenext(3)1.oopnenext试说明在这种状况下,程序段执行完后,AX.BX,CX,DX的内容分别是什么,STARTMOVAXiOIHMOVBX,02HMOVDX1.03HMOVCX.04HNEXT:INCAXADDBX,AXSHRDX.1O答:(1)AX三05HBX=10HCX三ODX