您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 汇编语言程序设计—模拟试题六
模拟试题六一.选择题。(单项选择,30分)1.下面说法正确的是()A.8086/8088为20位CPU。B.不同的逻辑段的段地址有可能相同。C.同一个逻辑段内所有单元的段地址相同,而偏移地址各不相同。D.SP寄存器指示下一条要执行的指令的偏移地址。2.PentiumCPU有32根地址总线,内存的物理地址也为32位,则该CPU的寻址空间大小为(1G=1024M)()A.256MB.16MC.1GD.4G3.当SS=9876H,SP=4328H,执行POPF指令后,堆栈顶部的物理地址是()A.9CA8AHB.9CA90HC.9CA86HD.0DB00H4.SAR(算术移位指令)可作一定程度上的除2运算,若AL中的内容为93H,则指令SARAL,1执行后,AL中的内容为()A.49HB.C9HC.89HD.92H5.已知(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=16.已知(AL)=88H。如果该数是一个有符号数,它的十进制值为X;如果它是一个压缩的BCD码,它的十进制值为Y;执行ADDAL,03HDAA指令序列后,AL的十六进制值为Z。则()A.X=120,Y=-120,Z=91HC.X=-120,Y=120,Z=8BHB.X=120,Y=-88,Z=8BHD.X=-120,Y=88,Z=91H7.下列指令使用不正确的是()A.SAL[100H],1C.MULBYTEPTR10H[BX+SI]B.ANDBL,[BP+SI]D.MOVAL,-1008.下列指令使用正确的是()A.MOVDS,IBABHC.MOVBYTEPTR[BX],BYTEPTR[SI]B.POPDLD.ADDBYTEPTR[100H],-19.有符号数比较大小所用的跳转指令是()A.JC和JEB.JS和JZC.JA和JBD.JL和JG10.用一条指令实现将寄存器BX和SI的内容相加,结果并送入AX中,这条指令是()A.ADDAX,[BX][SI]C.MOVAX,[BX][SI]B.ANDAX,[BX][SI]D.LEAAX,[BX][SI]11.下面指令可能不能够将AX清零的是()A.MOVAX,0C.ANDAX,0B.XORAX,AXD.SBBAX,AX12.下面指令不能够将AX和BX内容调换的是()A.XCHGAX,BXC.XCHGAL,BLXCHGAH,BHB.PUSHAXD.MOVCX,AXPUSHBXMOVBX,CXPOPAXMOVAX,BXPOPBX13.定义宏Max,求两个数的最大数。定义如下:MaxMacroA,B,CCMPA,BJLLESSMOVC,AJMPDONELESS:MOVC,BDONE:ENDM则下列调用方式正确的是:()A.Maxax,bx,cxB.CALLMaxax,2,cxC.Max1,2,cxD.Maxax,bl,cx14.8086CPU的工作模式为M1,PentiumCPU复位后到引导OS之间工作模式为M2,引导OS后正常工作模式为M3,在Window98下运行一个DOS程序此时工作模式为M4。则M1,M2,M3,M4为()A.实模式,实模式,保护模式,保护模式B.实模式,保护模式,保护模式,虚拟8086模式C.虚拟8086模式,实模式,保护模式,保护模式D.实模式,实模式,保护模式,虚拟8086模式15.DEBUG调试程序中内存数据显示命令是()A.U命令B.D命令C.A命令D.E命令二.填空题。(20分)1.在C语言中用“unsignedchara;signedshortb;”定义两个变量a,b,则a为无符号字节数,b为16位补码数。写出a,b两个变量表示的十进制数的范围。a:,b:。2.已知AX寄存器的内容为000FH,执行DIVAL后,AL的值为。3.已知AX寄存器的内容为FFFFH,执行ANDAH,81H后,AH的值为;执行TESTAL,81H后,AL的值为。4.已知(BX)=0005H,变量Buffer的偏移地址为1000H,当前(DS)=1000H。CPU在执行MOVAX,Buffer[BX]时,寻址的物理地址为。5.从1234号端口读入一个字节,并存放到DL寄存器的指令序列为:。6.Li(i=1,2,…,7)为已定义的标号。现定义地址表AddrTable:AddrTableDWL1,L2,L3,L4,L5,L6,L7。那么指令JMPAddrTable[6]转移到的标号为:。7.两个模块中定义的PUBLIC段进行合并的条件是:相同且相同。8.模块1中定义了Far型的子程序GlobalFunc,在模块2中要调用GlobalFunc。为支持模块1和模块2通讯,模块1中使用的伪指令为:,模块2为:。9.指令序列:MOVAX,0001HMOVBX,0002HPUSHAXPUSHBXPOPECX执行完后,32位寄存器ECX的值为:。10.根据下列数据定义伪指令,填写定义的数据在内存单元中的存放形式。1.STRINGDB‘A’,’B’,’C’,’DEF’DW‘GH’2.BUFFERDW1,-1DD1234H,2000H3.DATADB2DUP(-1,2DUP(1,2))三.分析下面程序段,回答指定问题。(11分)1.MOVBL,3EHANDBL,9AHORBL,78HXORBL,56HMOVCL,4RORBL,CL问:执行上段程序后,BL=。2.ORG1001HDATA1EQUTHISBYTEDATA2DW$,$+1,$+2,$+3DATA3DWDATA1STRINGBUFFERDATAMOVAL,DATA1MOVBX,DATA2+3MOVCX,DATA3问:执行上段程序后,AL=,BX=,CX=。3.SUBAX,AXMOVBX,1MOVCX,10A:ADDAX,BXADDBX,3LOOPA问:执行上段程序后,AX=,BX=,CX=。四.编写完成下述功能的程序片段。(15分)1.在附加段中定义了一个字节缓冲区Buffer,长度为100。用串操作指令将这个缓冲区每个字节都置为0FFH。2.编写程序完成下列框图功能的程序片段。3.在C语言中定义了一个字节型无符号数组BUFFER,要求用__asm嵌入汇编程序,来找出其中的最大值,送入变量MAX中。C程序给出如下,编写嵌入的汇编代码。intmain(){unsignedcharBUFFER[100];//定义字节型缓冲区unsignedcharMAX;//保存结果__asm{//嵌入汇编语言//在此处编写嵌入的汇编代码}return0;}五.程序设计。(编写完整的程序,24分)1.Buffer缓冲区中有100个有符号Word数,查找中间是否存在数“-1”,如果存在,显示“Y”;否则,显示“N”。AL=?AH=-1AH=1MOVDL,AH=00AH=0NAL8YES_LEFTEQU0001H;左对齐ES_CENTEREQU0002H;居中对齐ES_RIGHTEQU0004H;右对齐ES_MULTILINEEQU0008H;多行显示ES_UPPERCASEEQU0010H;显示大写字母ES_LOWERCASEEQU0020H;显示小写字母ES_PASSWORDEQU0040H;密码框方式ES_AUTOVSCROLLEQU0080H;自动加垂直滚动条ES_AUTOHSCROLLEQU0100H;自动加水平滚动条ES_READONLYEQU0200H;输入框只读2.数据区中定义了4个Word变量X,Y,Z和Result,编写一个程序求X、Y、Z三数的平均值(不考虑余数),结果送入Result中。要求:求平均值部分写一个子程序Average3;主程序和子程序之间所有参数都采用堆栈进行传递。3.输入框(Edit)控件是Windows窗口程序常用的一种控件,它负责接受从键盘输入的字符。为控制Edit控件的外观特点,显示和对齐方式等,我们为它定义一些属性,每一个属性用一个Word的常数来表示,该数只有某一位(bit)为1,其它位为0。Edit控件的所有属性用一个Word型的字来表示,该字的每一位(bit)表示一种相应属性,称该字为属性字。Edit控件的属性定义如下:例如属性字0009H表示Edit控件属性为左对齐且多行显示;属性字0202H表示Edit控件属性为居中对齐且只读。现假设AX寄存器里面存放要建立的Edit控件的属性字,该属性字包含一些初始属性。编写一个完整的程序,对该属性字进行处理,来按顺序完成下列功能:1.为Edit控件添加两个属性ES_LEFT和ES_MULTILINE;2.测试Edit控件是否有属性ES_RIGHT,如果有,删除该属性;3.测试Edit控件是否有属性ES_AUTOVSCROLL,如果有,删除该属性;如果没有,添加该属性;4.测试Edit控件是否同时具有ES_UPPERCASE和ES_LOWERCASE两个属性。如果是,显示一个字符串“EditBoxStyleError!”;否则,显示一个字符串“EditBoxStyleRight!”;5.程序结束。程序如下:;;;;;;;;;;;;;;;;定义符号常数;;;;;;;;;;;;;;;;;;;;ES_LEFTEQU0001H;左对齐ES_CENTEREQU0002H;居中对齐ES_RIGHTEQU0004H;右对齐ES_MULTILINEEQU0008H;多行显示ES_UPPERCASEEQU0010H;显示大写字母ES_LOWERCASEEQU0020H;显示小写字母ES_PASSWORDEQU0040H;密码框方式ES_AUTOVSCROLLEQU0080H;自动加垂直滚动条ES_AUTOHSCROLLEQU0100H;自动加水平滚动条ES_READONLYEQU0200H;输入框只读;;;;;;;;;;;;;;;;你的代码如下;;;;;;;;;;;;;;;;;;;模拟试题六参考答案一.选择题(15*2=30)CDABADADDDDDADB二.填空(1-9,每题1’;10题7’,2+3+2)1.0-255,-32768-327672.13.81H,0FFH4.11005H5.movdx,1234inal,dxmovdl,al6.L47.段名类型属性8.publicglobalfuncexternglobalfunc:FAR9.00010002H10.三.分析下面程序段,回答指定问题(11’)1.0C2H(2’)2.01H,0710H,1001H(3’)3.145,31,0(6’)四.编写完成下述功能的程序片段1.(5’)CLD(1’)MOVCX,100(1’)MOVAL,0FFH(1’)LEADI,BUFFER(1’)‘A’‘B’‘C’‘D’‘E’‘F’‘H’‘G’01H00HFFHFFH34H12H00H00H00H20H00H00HFFH01H02H01H02HFFH01H02H01H02HSTRINGBUFFERDATAREPSTOSB(1’)2.(5’)CMPAL,0JGNEXT(1’)MOVAH,-1JMPDONE(1’)NEXT:CMPAL,8JGNEXT2(1’)MOVAH,0JMPDONE(1’)NEXT2:MOVAH,1(1’)DONE:MOVDL,AH3.(5’)MOVAL,BUFFERMOVECX,100(1’)MOVESI,0(1’)AGAIN:CMPAL,BUFFER[ESI]JAENEXT(1’)MOVAL,BUFFER[ESI]NEXT:INCESI(1’)LOOPAGAINMOVMAX,AL(1’)五.程序设计。1.(6’)DATASEGMENT(1’)BUFFERDW100DUP(?)(1’)DATAENDSCODESEGMENTSTART:ASSUMEDS:DATA,CS:CODEMOVAX,DATAMOVDS,AXMOVCX,100M
本文标题:汇编语言程序设计—模拟试题六
链接地址:https://www.777doc.com/doc-2368357 .html