汇编语言程序设计模拟试卷B一、单项选择题(将各小题4个选项中正确者写在横线上。)1.INTEL8086CPU中,带符号的数是用来表示的。A..原码B.反码C.补码D.移码2.下面名称中代表堆栈段寄存器。A..DSB.ESC.SSD.CS3.指令MOVAX,[BP][DI]中,源操作数的寻址方式为寻址方式。A.寄存器B.基址变址C.寄存器变址D.相对基址变址4.下列是溢出标志位。A.CFB.AFC.SFD.OF5.标志位SF=1时,表示运算结果。A.=0B.0C.0D.=16.指令INCCX是一条指令。A.交换B.减1C.加1D.带借位的减法7.除法指令“DIVCX”的商,位于寄存器中。A.AHB.DXC.ALD.AX8.定义汇编程序一个段结束的伪操作是。A.ENDSB.ENDMC.ENDPD.END9.CMP指令与下面指令执行相同的运算。A.SUBB.ANDC.TESTD.OR10.下面指令不会改变指令指针寄存器IP的内容。A.JMPB.CALLC.INTD.PUSH二、判断题(下列各题若语句正确则在括号中打√,否则打×。)1.组成汇编语言的指令,可以分为机器指令和汇编伪指令两种类型。()2.汇编语言中的某些伪指令,经MASM汇编后,会产生一些机器指令。()3.在INTEL8086中,数据段的最大长度是16KB,代码段的最大长度是1MB。()4.当寄存器CL改变时,寄存器CX也会改变。()5.乘法指令“MULBL”的结果存放在AL寄存器中。()6.INTEL8086物理地址长度为24位,它由8位段地址和16位偏移地址形成。()7.伪指令“XDW10D”在内存中定义了一个双字类型的变量X。()(判断下列INTEL8086CPU指令是否正确,其中BUF为字变量)8.ADDBX,CL()9.SUBBUF,10H;(BUF为字变量)()10.MOVDS,200H()11.INAX,10H()12.CMP[BP],[SI]()13.MOVAX,[BP+BUF+100];(BUF为字变量)()14.POPDI()15.ROLBX,5()三、填空题(写出各程序段执行后,有关寄存器的内容)1.MOVAX,5566HADDAX,100H;(AX)=.2.MOVSP,1000HPUSHBX;(SP)=.3.MOVAL,66HMOVBL,02HIMULBL;(AL)=.4.MOVBX,3456HMOVCL,4ROLBX,CL;(BX)=.5.MOVBX,1000HMOVSI,300HLEADI,500H[BX][SI];(DI)=.6.MOVCX,1234HCMPCX,0FFH;(CX)=.7.MOVCL,00110010BANDCL,0FHXORCL,F0H;(CL)=.8.XDW11AAH,22BBH,33CCH,44DDH,55EEH…………MOVAX,X+4;(AX)=.MOVBX,X+5;(BX)=.9.DATDB3DUP(6,7,8,9)…………MOVAX,WORDPTRDAT+6;(AX)=.四、简答题1、在INTEL8086CPU中,无条件转移指令“JMP”可以指定哪几种不同类型的转移范围?2、在代码段1000H:0028H处有一条INT10H指令。假定该中断向量的入口地址为3000H:0200H,且执行前(flags)=0240H,(SS)=4000H,(SP)=50H。那么执行INT10H后,画出栈顶三个字的内容。3、根据如下定义,画出存储空间分配,数据用十六进制数表示,字符用ASCII码表示。HEADDB‘NAME’,LENBODYDD100HDW2DUP(-1,2)LENEQU$-BODY(1)上述程序段完成的功能是什么?(2)(Z)、(Z+2)、(CX)的内容是什么?4.下面子程序binihex的功能,是将寄存器BX中的一个16位的二进制数,转换成4位十六进制数并输出到屏幕上。请在每个横线处填一条指令,将程序补充完整。binihexprocnearmovch,4rotate:movcl,4moval,blandal,0fhaddal,30hcmpal,3ah五、分析题1、阅读如下程序段,回答所提出的问题。(X,Y,Z为字变量)MOVAX,X;CMPAX,0JGENEXT(1)指出程序段完成的功能?(2)若(X)=-5,(Y)=10,程序段执行完后,Z的值是多少?2、阅读如下程序段,回答所提出的问题。MOVAL,11011000BXORCX,CXNEXT:TESTAL,01HJNZEXIT(1)指出程序段完成的功能?(2)程序段执行完后,寄存器AL和CX的值是多少?3、阅读如下程序段,回答所提出的问题。XDW3,9,8,5,2,6YDW7,8,8,4,3,8ZDW6DUP(0)......SUBSI,SIMOVCX,6AGAIN:MOVAX,X[SI]CMPAX,Y[SI]JZNEXT2JANEXT1MOVZ[SI],-1JMPNEXT2NEXT1:MOVZ[SI],1NEXT2:ADDSI,2LOOPAGAINEXIT:RORAL,1INCCXJMPNEXTEXIT:NEGAXNEXT:ADDAX,YMOVZ,AXaddal,7hprintit:movdl,alint21hdecchretbinihexendp六、综合编程题编写一个完整的识别十六进制数字的汇编程序,功能包括:字符串输入、十六进制数字识别、结果输出。具体要求如下,其中3、4、5要求各采用一个子程序实现。1.编写数据段dataseg,定义80个字节的字符串存储区buffer1和buffer2,并定义其它所需的变量和数据。2.编写完整的代码段code和主程序main,调用如下子程序,实现字符串的输入、十六进制数字的识别,以及识别结果的输出。3.编写输入子程序input,从键盘输入最多80字符的字符串,并存放到buffer1中。4.编写子程序hexnum,依次判断buffer1中的每个字符,并做如下识别和处理:1)若字符是十六进制数字0-9和A-F,则保持不变;2)若字符是小写的a-f,则将其转换成对应的大写字符A-F;3)其它字符用‘*’代替;4)将识别或转换后的字符,按同样顺序依次存放在buffer2中。本子程序的参数定义要求如下:si----buffer1的首地址;di----buffer2的首地址;cx---字符串的长度。5.编写输出子程序output,输出buffer2中的内容。