您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 【汇编语言程序设计】期末考试-试卷及参考答案
欢迎共阅【汇编语言程序设计】期末考试-试卷及参考答案课程编号:课程名称:汇编语言程序设计考试形式:闭卷学院:信息工程专业:计算机科学与技术考试日期:题号一二三四五六七八九十总分累分人签名题分2012182030100得分考生注意事项:1、本试卷共7页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、单项选择题(每小题2分,共20分)1.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区第一个字单元的物理地址是(A)。A.12B5BH;B.12B6BH;C.12C59H;D.12BFEH。2.在下列指令的中,不能实现把AX寄存器内容清零的指令是(C)。A.SUBAX,AX;B.XORAX,AX;C.ORAX,0000H;D.ANDAX,0000H。3.条件转移指令JNE的测试条件为(A)。A.ZF=0;B.CF=0;C.ZF=1;D.CF=1。4.8086CPU在基址加变址的寻址方式中,变址寄存器可以为(D)。A.BX或CX;B.CX或SI;C.DX或SI;D.SI或DI。5.设(AX)=1000H,NEGAXNOTAX欢迎共阅执行上述两条指令后,正确的结果是(B)。A.(AX)=1001H;B.(AX)=0FFFH;C.(AX)=1000H;D.(AX)=0111H。6.串指令中的目的操作数地址一定是由____A__提供。()A.ES:[DI];B.SS:[BP];C.DS:[SI];D.CS:[IP]。7.将DX的内容除以2,正确的指令是(C)。A.DIV?2;B.DIV?DX,2;C.SAR?DX,1;D.SHL?DX,1。8.用户为了解决自己的问题,用汇编语言所编写的程序,称为(B)。A.目标程序;B.汇编语言源程序;C.可执行程序;D.汇编程序。9.用一条指令仅实现将AX←BX+SI的方法是(D)。A.XCHGAX,[BX][SI];B.MOVAX,[BX+SI];C.LEAAX,BX[SI];D.LEAAX,[BX][SI]。10.设SP初值为2000H,执行指令“PUSHAX”后,SP的值是(C)。A.1FFFH;B.1998H;C.1FFEH;D.2002H。1.A2.C3.A4.D5.B6.A7.C8.B9.D10.C二、指出下列指令的出错原因,并改正。(每小题2分,共12分)1.MOVBX,DL;操作数类型不匹配,改正为:MOVBL,DL或MOVBX,DX2.MOVCS,AX;代码段寄存器CS不能作目的操作数,改正为MOVDS,AX3.ADDAX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为MOVBX,DSADDAX,BX4.TESTBX,[CX];不能使用CX实现寄存器间接寻址,改正为MOVSI,CXTESTBX,[SI]5.SUB[BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOVAX,[BX]SUBAX,[BP+SI]或:MOVAL,[BX]SUBAL,[BP+SI]6.SHLDX;没有给出移位次数,改正为SHLDX,1或SHLDX,CL三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分)1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。LEA?BX,TABLE?MOV?CX,10?欢迎共阅MOV?SUM,AX;将AX的原值保存在SUM单元中MOVAL,00HMEXT:(1)ADDAL,[BX];实现将表TABLE中的数据按字节累加到AL中ADC?AH,0?JNC?DONE(2)MOV?AX,SUM;总和值超过AX寄存器的容量,恢复AX的原值JC?EXITDONE:INC?BX(3)LOOPNEXT;将计数器CX减1,并判断是否继续下一次循环EXIT:HLT2.BUFFER为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。MOV?CX,32H;循环50次LEA?SI,BUFFERMOV?DI,SI(1)ADDDI,99;DI指向最后一个字节数据的存储单元的偏移地址NEXT:MOV?AL,[SI](2)XCHGAL,[DI];交换SI和DI所指向单元的内容MOV?[SI],AL(3)INCSI;使指针SI加1,指向下一个字节的数据DEC?DILOOP?NEXTHLT四、程序分析题(每小题4分,共20分)1.设(AX)=X,X是无符号数且0≤X6000,分析下面程序段,回答问题;SHLAX,1;实现X乘2MOVBX,AXSHLAX,1SHLAX,1ADDAX,BX(1)该程序段的功能是什么?实现无符号数X乘10,结果存放在AX寄存器中。——2分(2)该程序段执行完后,(AX)=10X,(BX)=2X。——2分2.现有一子程序段:SUB1?PROC欢迎共阅TEST?AL,80HJE?PLUSTEST?BL,80HJNE?EXITOJMP?XCHANGEPLUS:TEST?BL,80HJE?EXITOXCHANGE:XCHG?AL,BLEXITO:RETSUB1?ENDP试回答:(1)子程序的功能是什么?答:子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。(2)若调用子程序前(AL)=9AH,(BL)=77H,则返回主程序时,(AL)=__77H____,(BL)=_9AH__。3.现有如下程序段:DATA?SEGMENT?ORG?0020H?DA1?DW?12H,23H?DA2?DB?11H,21H?DA3?DB?31H,32HDA4?EQU?$-DA3DA5?EQU?1234HDATA?ENDS4.阅读如下程序:ADRR?DB?XXH,XXH,……,XXH;定义的字节数组元素NUM?EQU?$-ADRRRET_VLAUE?DW?…?MOV?CX,NUMMOV?BX,-1NEXT:INC?BXCMP?ADRR[BX],0LOOPNZ?NEXTJZ?DONEMOV?BX,OFFHDONE:MOV?RET_VLAUE,BXHLT请问:(1)该程序完成的功能是什么?功能:在以ADRR为起始地址的数组中,查找第一个是0的数据。(2)程序执行后指出RET_VLAUE单元中的内容是什么?若找到,则将第一个是0的数据在数组中的偏移量送入RET_VLAUE单元中;若无0数据,则将0FFH送入RET_VLAUE单元中。5.阅读如下程序段,回答所提出的问题,假定X1,X2,…,XN为无符号数。ORG?100HBLOCK?DW?X1,X2,…,XN请回答:(1)该程序段占有的存储单元字节数是多少?画出所分配的存储区的示意图.答:8个字节,0020H12HDA100H23H000024H11HDA221H0025H31HDA332H(2)符号名DA4的值是多少?符号名DA5的值是多少?答:DA4=2,DA5=1234H欢迎共阅COUNT?EQU($-BLOCK)/2RESULT?DW?COUNT,?LEA?BX,BLOCK-2MOV?CX,RESULTXOR?AX,AXGO_ON:ADD?BX,2CMP?AX,[BX]JAE?NEXTMOV?AX,[BX]NEXT:LOOP?GO_ONMOV?RESULT+2,AX程序段执行完,回答下述问题:RESULT+2字存储单元的内容=MAX(X1,X2,…,XN);BX=100H?+?2×(COUNT-1);程序循环次数=COUNT。五、编写程序(30分)1.编写一程序,在letter为首地址的26个单元中依此存放字母‘A’、‘B’、……‘Z’。(本小题8分)dataSEGMENTletterDB26DUP(?)countEQU$-letterdataENDScodeSEGMENTASSUMEcs:code,da:datastart:movax,datamovds,axmovcx,countleasi,lettermoval,‘A’next:mov[si],alincalincsiloopnextmovah,4chint21hcodeendsendstart2.以Buffer为首地址的存储区,存放有长度为N有符号字数组,编写一程序求出其中负数的平均值(所有负数的和-32768),并存放在M_average单元中。(本小题10分)dataSEGMENTBufferDWXXXX,XXXX,……,XXXX;N个字countEQU($-Buffer)/2M_averagedw?dataENDScodeSEGMENT得分评阅人欢迎共阅ASSUMEcs:code,da:datastart:movax,datamovds,axmovcx,countleasi,Bufferxorax,ax;存负数的和movbx,ax;存负数的个数next:testwordptr[si],8000Hjego_onaddax,[si]incbxgo_on:addsi,2loopnext3.从键盘接收一串不多于99个字符的字符串,对其进行分类统计,显示其中数字字符个数、大写英文字母个数、小写英文字母个数、以及其他字符的个数。要求使用子程序结构;数字字符的ASCII码为30H……39H、大写英文字母的ASCII码为41H……5AH、小写英文字母的ASCII码为61H……7AH。(本小题12分)dataSEGMENTMSGDB0DH,0AH,‘输入一串字符:$’MSG1DB0DH,0AH,‘大写字母个数:$’MSG2DB0DH,0AH,‘小写字母个数:$’MSG3DB0DH,0AH,‘数字符号个数:$’MSG4DB0DH,0AH,‘其它符号个数:$’BUFFERDB99DB0DB99DUP(?)BIGDB0;大写字母个数LITTLEDB0;小写字母个数DIGDB0;数字符号个数OTHERDB0;其它符号个数dataENDScodeSEGMENTASSUMEcs:code,da:datastart:movax,datamovds,axleadx,MSGmovah,9;9号功能调用显示提示信息int21hleadx,BUFFERmovah,10;10号功能调用从键盘接收一串字符int21hmovcl,BUFFER+1;实际从键盘接收字符个数movch,0leasi,BUFFER+2again:cmpbyteptr[si],30HcwdidivbxmovM_average,ax;存负数的平均值movah,4chint21hdataendsendstart欢迎共阅jbotherscmpbyteptr[si],39Hjbedigitalscmpbyteptr[si],41Hjbotherscmpbyteptr[si],5AHjbebigscmpbyteptr[si],61Hjbotherscmpbyteptr[si],7AHjbelittlesothers:incOTHERjmpokdigitals:incDIGjmpoklittles:incLITTLEjmpokbigs:incBIGok:incsiloopagainleadx,MSG1movbh,BIGcalldispdecleadx,MSG2movbh,LITTLEcalldispdecleadx,MSG3movbh,DIGcalldispdecleadx,MSG4movbh,OTHERcalldispdecmovah,4chint21h;DX待显示数据说明,BH待显示数据100dispdecPROCmovah,9int21hmoval,bhxorah,ahaammovdl,ahmovdh,aladddl,30Hmovah,2欢迎共阅int21Hmovdl,dhadddl,30Hmovah,2int21Hretdispde
本文标题:【汇编语言程序设计】期末考试-试卷及参考答案
链接地址:https://www.777doc.com/doc-1738219 .html