汇编语言程序设计—模拟试题八

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

模拟试题八一.选择题。(单项选择,30分)1.下面说法正确的是()A.8086/8088为20位CPU。B.不同的逻辑段的段地址有可能相同。C.同一个逻辑段内所有单元的段地址相同,而偏移地址各不相同。D.SP寄存器指示下一条要执行的指令的偏移地址。2.下列寄存器是16位的是()。A.IFB.SPC.EIPD.BL3.已知(AL)=41H,(AH)=5AH,CPU执行SUBAL,AH指令后,标志寄存器各位的值正确的是()A.SF=1,ZF=0,CF=1,OF=0B.SF=0,ZF=0,CF=1,OF=0C.SF=1,ZF=0,CF=0,OF=1D.SF=0,ZF=1,CF=0,OF=14.完成将CX寄存器清零,并且使进位标志CF置零,错误的指令是()。A.SUBCX,CXC.XORCX,CXB.MOVCX,0000HD.ANDCX,0000H5.下面的数据传送指令中,错误的操作是()。A.MOVDS,AXC.XCHGBX,[BX]B.MOVDX,[1000H]D.MOV[AX],1000H6.已知(AL)=88H。如果该数是一个有符号数,它的十进制值为X;如果它是一个压缩的BCD码,它的十进制值为Y,则()A.X=120,Y=-120C.X=-120,Y=120B.X=120,Y=-88D.X=-120,Y=887.宏ADD3定义如下:ADD3MacroA,B,CADDA,BADDA,CENDM先要实现1+2+3,则下列代码正确的是:()A.ADD31,2,3B.MOVAL,1MOVBL,2CALLADD3AL,BL,3C.MOVAL,1ADD3AL,2,3D.MOVAL,2ADD31,AL,38.执行下列指令后,SP寄存器的值正确的是()。MOVSP,2000HPUSHBXA.1FFFHB.1FFEHC.2001HD.2002H9.下列指令的源操作数的段地址在DS中的是()。A.MOVAX,[BP][DI]C.MOVAX,4[BX][SI]B.MOVAX,SS:2[BX]D.MOVAX,ES:[8*4]10.有符号数比较大小所用的跳转指令是()A.JC和JEB.JS和JZC.JA和JBD.JL和JG11.定义如下地址表:ADDRTABLEDWL1,L2,L3,L4,L5,L6,则如需要转入L3,下列代码正确的是()A.JMPADDRTABLE[3]C.JMPADDRTABLE[5]B.JMPADDRTABLE[4]D.JMPADDRTABLE[6]12.下面指令不能够将AX和BX内容调换的是()A.XCHGAX,BXC.XCHGAL,BLXCHGAH,BHB.PUSHAXD.MOVCX,AXPUSHBXMOVBX,CXPOPAXMOVAX,BXPOPBX13.完成对寄存器DX的无符号数乘以4的正确操作是()A.SHLDX,1C.ROLDX,1SHLDX,1ROLDX,1B.MOVCL,4D.MOVCL,2SHLDX,CLRCLDX,CL14.若AL=96H,BL=01H,分别执行MULBL和IMULBL指令后,结果正确的是()。A.AX=0096HB.AX=0096HC.AX=0FF96HD.AX=150AX=0096HAX=0FF96HAX=0096HAX=-15015.DEBUG调试程序中内存数据显示命令是()A.U命令B.D命令C.A命令D.E命令二.填空题。(20分)1.8088/8086系统采用内存分段技术,逻辑段长度不得超过。2.十进制数3和–3的8位补码数分别为:、。3.在C语言中用“unsignedchara;signedshortb;”定义两个变量a,b,则a为无符号字节数,b为16位补码数。写出a,b两个变量表示的十进制数的范围。a:,b:。4.下面的伪指令定义后,ORG2000HBUF1DB10DUP(?)BUF2DW$,-1则LEAAX,BUF2执行后,AX的值为:,MOVAX,BUF2执行后,AX的值为:。5.两个模块中定义的PUBLIC段进行合并的条件是:相同且相同。6.模块1中定义了Far型的子程序GlobalFunc,在模块2中要调用GlobalFunc。为支持模块1和模块2通讯,模块1中使用的指令为:,模块2为:。7.编写程序实现:a.将AL与DX中的两个无符号数相加,结果放入DX中。b.将AL与DX中的两个有符号数相加,结果放入DX中。8.从200H号端口读入一个字节,并存放到DL寄存器的指令序列为:。9.8086系统中,将中断服务子程序MyTimer挂接到系统的1CH号中断上的程序代码为。10.指令序列:MOVEAX,00010002HPUSHEAXPOPAXPOPBX执行完后,AX和BX的分别值为:、。三.分析下面程序段,回答指定问题。(15分)1.MOVSI,0MOVDI,0CLDMOVSWLODSBSTOSB问:程序段执行后:SI=,DI=。2.MOVAX,0FFFHMOVBX,0FFF0HXORAX,BXXORBX,AXXORAX,BX问:程序段执行后:AX=,BX=。3.SUBAX,AXMOVBX,1MOVCX,8A:ADDAX,BXSHLBX,1LOOPA问:执行上段程序后,AX=,BX=,CX=。四.编写完成下述功能的程序片段。(15分)1.编写伪指令,定义一个数据段DATA,并在DATA中定义数据块BLOCK,要求数据依次为:一个字符串’Assembly’,30个BYTE型的1,50个WORD型的0,70个DWORD型的-1。2.编写一个宏Max,求3个无符号WORD型立即数的最大值,并存入AX。3.在C语言中定义了一个字节型数组DATA,要求用__asm嵌入汇编程序,将数组中的每一个数最高位清0,最低位置1,其他位保持不变。C程序给出如下,编写嵌入的汇编代码。intmain(){charDATA[100]={1,0,1,2,3,……};//定义字节型缓冲区__asm//嵌入汇编语言{//在此处编写嵌入的汇编代码}return0;}五.程序设计。(编写完整的程序,20分)1.以Block为首地址的内存中有100个有符号WORD数,编写一个程序统计这100个数中有多少个正数,并将结果送到Result字节单元中。2.C函数tolower完成的功能是将一个大写字母转换为小写字母,如果该字符是小写字母或者其他字符时不作转换;而函数toupper则将一个小写字母转换为大写字母,如果该字符是大写字母或者其他字符时不作转换。要求:i.用汇编语言编写两个子程序tolower和toupper来实现上述功能。要求:传入参数为原字符,传出参数为转换过的字符,所有参数都通过堆栈传递;ii.调用上述子程序将字符串“HELLOAssembly!”分别转化为全部大写字母和全部小写字母的字符串,并打印到屏幕。模拟试题八参考答案一.选择题(每题2’)CBABDDCBCDBDABB二.填空(每题2’)1.64K2.03H(0000,0011B)0FDH(1111,1101B)3.0~255(0~28-1)-32768~32767(-215~215-1)4.200AH200AH5.段名类别属性6.publicGlobalFuncextern/extrnGlobalFunc:far7.a)movah,0adddx,axb)cbwadddx,ax8.movdx,200hinal,dxmovdl,al9.MOVES,0MOVES:[1CH*4],offsetMyTimerMOVES:[1CH*4+2],SEGMyTimer或者(MOVAX,SEGMyTimerMOVDS,AXMOVDX,OFFSETMyTimerMOVAL,1CHMOVAH,25HINT21H)10.00020001三.分析下面程序段,回答指定问题(4,4,7)1.0003H,0003H2.0FFF0H0FFFH3.00FFH(255)0100H(256)0000H四.编写完成下述功能的程序片段1.(5’)DATASEGMENT(1’)BLOCKDB‘Assembly’(1’)DB30DUP(1)(1’)DW50DUP(0)(1’)DD70DUP(-1)(1’)DATAENDS2.(5’)MaxMACROX,Y,Z(1’)LOCALGOON,DONE(1’)MOVAX,X(1’)CMPAX,Y(1’)JAEGOONMOVAX,YGOON:CMPAX,Z(1’)JAEDONEMOVAX,ZDONE:ENDM3.(5’)MOVECX,100(1’)MOVEBX,0(1’)AGAIN:ANDDATA[EBX],7FH/0111,1111B(1’)ORDATA[EBX],1(1’)INCEBX(1’)LOOPAGAIN五.程序设计。1.(8’)DATASEGMENT(程序框架2’)BLOCKDW100DUP(?)(2’)RESULTDB0DATAENDSCODESEGMENTSTART:ASSUMEDS:DATA,CS:CODEMOVAX,DATAMOVDS,AXMOVCX,100MOVSI,0AGAIN:CMPBLOCK[SI],0JLEGOON(2’)INCRESULTGOON:ADDSI,2(2’)LOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART2.(12’)DATASEGSEGMENTSTRDB'HELLOAssembly!'STR1DB20DUP('$')STR2DB20DUP('$')DATASEGENDSCODESEGMENTASSUMEDS:DATASEG,CS:CODESTART:MOVAX,DATASEGMOVDS,AXMOVCX,15MOVSI,0AGAIN:MOVAL,STR[SI]MOVAH,0SUBSP,2(1’)PUSHAX(1’)CALLtolowerPOPAX(1’)MOVSTR1[SI],ALINCSILOOPAGAINMOVAH,9(1’)LEADX,STR1INT21HMOVCX,15MOVSI,0CONTINUE:MOVAL,STR[SI]MOVAH,0SUBSP,2PUSHAXCALLtoupperPOPAXMOVSTR2[SI],ALINCSILOOPCONTINUEMOVAH,9LEADX,STR2INT21HMOVAH,4CHINT21HtolowerPROCNEARPUSHBPMOVBP,SPPUSHAXMOVAX,4[BP](1’)CMPAL,'A'(1’)JBDONECMPAL,'Z'JADONEADDAL,20HDONE:MOV6[BP],AX(1’)POPAXPOPBPRET2(1’)tolowerENDPtoupperPROCNEARPUSHBPMOVBP,SPPUSHAXMOVAX,4[BP](1’)CMPAL,'a'(1’)JBDONE1CMPAL,'z'JADONE1SUBAL,20HDONE1:MOV6[BP],AX(1’)POPAXPOPBPRET2(1’)toupperENDPCODEENDSENDSTART

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功