【汇编语言程序设计】期末考试-试卷及参考答案课程编号:课程名称:汇编语言程序设计考试形式:闭卷学院:信息工程专业:计算机科学与技术考试日期:题号一二三四五六七八九十总分累分人签名题分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.DIV2;B.DIVDX,2;C.SARDX,1;D.SHLDX,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。2.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寄存器内容不变。请在程序中的空格处填入适当指令使其完整。LEABX,TABLEMOVCX,10MOVSUM,AX;将AX的原值保存在SUM单元中MOVAL,00HMEXT:(1)ADDAL,[BX];实现将表TABLE中的数据按字节累加到AL中ADCAH,0JNCDONE(2)MOVAX,SUM;总和值超过AX寄存器的容量,恢复AX的原值JCEXITDONE:INCBX(3)LOOPNEXT;将计数器CX减1,并判断是否继续下一次循环EXIT:HLT2.BUFFER为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。MOVCX,32H;循环50次LEASI,BUFFERMOVDI,SI(1)ADDDI,99;DI指向最后一个字节数据的存储单元的偏移地址NEXT:MOVAL,[SI](2)XCHGAL,[DI];交换SI和DI所指向单元的内容MOV[SI],AL(3)INCSI;使指针SI加1,指向下一个字节的数据DECDILOOPNEXTHLT四、程序分析题(每小题4分,共20分)1.设(AX)=X,X是无符号数且0≤X<6000,分析下面程序段,回答问题;SHLAX,1;实现X乘2MOVBX,AXSHLAX,1SHLAX,1ADDAX,BX(1)该程序段的功能是什么实现无符号数X乘10,结果存放在AX寄存器中。——2分(2)该程序段执行完后,(AX)=10X,(BX)=2X。——2分2.现有一子程序段:SUB1PROCTESTAL,80HJEPLUSTESTBL,80HJNEEXITOJMPXCHANGEPLUS:TESTBL,80HJEEXITOXCHANGE:XCHGAL,BLEXITO:RETSUB1E...