一、单项选择题(只有一个选项正确,共10道小题)1.若PORT_VAL5,则执行指令MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)后BX的内容是:()。(A)20(B)30(C)5(D)10你选择的答案:未选择[错误]正确答案:A解答参考:2.假设(AL)=10010010,MOVCL,4SHLAL,CL执行上述指令后CF和AL的内容是()。(A)AF=1,(AL)=00001001(B)AF=0,(AL)=00001001(C)AF=1,(AL)=00100000(D)AF=0,(AL)=00100000你选择的答案:未选择[错误]正确答案:C解答参考:3.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。TESTBH,01H_____K1(A)JNE(B)JZ(C)JS(D)JC你选择的答案:未选择[错误]正确答案:A解答参考:4.已知标号NEXT与指令MOVAX,TYPENEXT在同一个段内,则AX的值为()。(A)0(B)1(C)2(D)-1你选择的答案:未选择[错误]正确答案:B解答参考:5.DATASEGMENTBUFDB1,2,3,4,5COUNTEQU-BUFDATAENDS在以上数据段中COUNT的值为()(A)3(B)5(C)4(D)6你选择的答案:未选择[错误]正确答案:B解答参考:6.下列是8位二进制数的补码,其中真值最大的是()。(A)10001000(B)11111111(C)00000000(D)00000001你选择的答案:未选择[错误]正确答案:D解答参考:7.16位有符号数的补码所表示的十进制数的范围是()。(A)-32767~+32768(B)-32768~+32767(C)-65535~+65536(D)0~65535你选择的答案:未选择[错误]正确答案:B解答参考:8.下面的XCHG指令中,语法正确的是()。(A)XCHGAL,DS(B)XCHGBL,[BX](C)XCHGAL,0FH(D)XCHGBUF1,BUF2你选择的答案:未选择[错误]正确答案:B解答参考:9.LDSSI,ES:[2000H]指令的全部功能是()。(A)把地址2000H送SI(B)把地址2000H字单元的内容送SI(C)把地址2000H字单元内容送SI,把2002H字单元内容送DS(D)把地址2000H字单元内容送DS,把2002H字单元内容送SI你选择的答案:未选择[错误]正确答案:C解答参考:10.数据定义如下:BUF1DB10BUF2DW20DUP(?)实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是()。(A)CMPBUF1,BYTEPTRBUF2+3(B)MOVAL,BUF1CMPAL,BYTEPTRBUF2+2(C)MOVAL,BUF1CMPAL,BUF2+2(D)MOVAL,BUF1CMPALBUF2+3你选择的答案:未选择[错误]正确答案:B解答参考:(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。在线只需提交客观题答案。)二、主观题(共15道小题)11.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1)MOVBP,AL;(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OP1,WORD_OP2;(4)MOVAX,WORD_OP1[DX];(5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2;(8)MOVAX,WORD_OP1+WORD_OP2(9)MOVAX,WORD_OP1-WORD_OP2+100(10)MOVWORD_OP1,WORD_OP1-WORD_OP2参考答案:假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1)MOVBP,AL;错,寄存器类型不匹配(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OP1,WORD_OP2;错,不能都是存储器操作数(4)MOVAX,WORD_OP1[DX];错,DX不能用于存储器寻址(5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2;错,[BX][SI]未指出数据类型(8)MOVAX,WORD_OP1+WORD_OP2(9)MOVAX,WORD_OP1-WORD_OP2+100(10)MOVWORD_OP1,WORD_OP1-WORD_OP212.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1)ADDVAR1,VAR2;(2)SUBAL,VAR1;(3)JMPLAB[SI];(4)JNZVAR1;(5)JMPNEARLAB;参考答案:假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1)ADDVAR1,VAR2;不能都是存储器操作数(2)SUBAL,VAR1;数据类型不匹配(3)JMPLAB[SI];LAB是标号而不是变量名,后面不能加[SI](4)JNZVAR1;VAR1是变量而不是标号(5)JMPNEARLAB;应使用NEARPTR13.有符号定义语句如下:BUFFDB1,2,3,‘123’EBUFFDB0LEQUEBUFF-BUFF问L的值是多少?参考答案:L=6。14.假设程序中的数据定义如下:LNAMEDB30DUP(?)ADDRESSDB30DUP(?)CITYDB15DUP(?)CODE_LISTDB1,7,8,3,2(1)用一条MOV指令将LNAME的偏移地址放入AX。(2)用一条指令将CODE_LIST的头两个字节的内容放入SI。(3)用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。参考答案:(1)MOVAX,OFFSETLNAME(2)MOVSI,WORDPTRCODE_LIST(3)CODE_LENGTHEQU-CODELIST;此语句必须放在CODELIST语句之后15.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。参考答案:程序段如下:BEGIN:MOVAH,1;从键盘输入一个字符的DOS调用INT21HCMPAL,‘a’;输入字符‘a’吗?JBSTOPCMPAL,‘z’;输入字符‘z’吗?JASTOPSUBAL,20H;转换为大写字母,用ANDAL,11011111B也可MOVDL,AL;显示一个字符的DOS调用MOVAH,2INT21HJMPBEGINSTOP:RET16.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。参考答案:程序段如下:BEGIN:MOVAH,1;从键盘输入一个字符的DOS调用INT21HCMPAL,‘a’;输入字符‘a’吗?JBSTOPCMPAL,‘z’;输入字符‘z’吗?JASTOPDECAL;得到前导字符MOVDL,AL;准备显示三个字符MOVCX,3DISPLAY:MOVAH,2;显示一个字符的DOS调用INT21HINCDLLOOPDISPLAYSTOP:RET17.下面的程序段有错吗?若有,请指出错误。CRAYPROCPUSHAXADDAX,BXRETENDPCRAY参考答案:程序有错。改正如下:CRAYPROCADDAX,BXRETCRAYENDP;CRAY是过程名,应放在ENDP的前面18.写一段子程序SKIPLINES,完成输出空行的功能。空出的行数在AX寄存器中。参考答案:程序如下:CSEGSEGMENTSKIPLINESPROCFARASSUMECS:CSEGBEGIN:PUSHCXPUSHDXMOVCX,AXDISP:MOVDL,0DH;显示回车换行,即输出空行MOVAH,2;显示一个字符的DOS调用INT21HMOVDL,0AHMOVAH,2;显示一个字符的DOS调用INT21HLOOPDISPPOPDXPOPCXRETSKIPLINESENDPEND19.编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。参考答案:宏定义如下:CLRBMACRON,CFILMOVCX,NCLDMOVAL,‘’;;取空格符的ASCII码LEADI,CFILREPSTOSBENDM20.写出分配给下列中断类型号在中断向量表中的物理地址。(1)INT12H(2)INT8参考答案:(1)中断类型号12H在中断向量表中的物理地址为00048H、00049H、0004AH、0004BH;(2)中断类型号8在中断向量表中的物理地址为00020H、00021H、00022H、00023H。21.用CALL指令来模拟实现INT21H显示字符T的功能。参考答案:MOVAH,2MOVDL,‘T’PUSHDSPUSHF;因中断服务程序的返回指令是IRET,而不是RETMOVBX,0MOVDS,BXCALLDWORDPTR[21H*4];用CALL指令调用21H的中断服务程序POPDS22.写出指令将一个字数据从端口1000H输入。参考答案:指令为:MOVDX,1000HINAX,DX23.写出文件代号式磁盘存取操作的错误代码:(1)非法文件代号(2)路径未发现(3)写保护磁盘参考答案:错误代码为:(1)06(2)03(4)1924.8088/8086CPU的存储器采用分段方式管理,每个段最多可以有______字节,全部存储空间可以分成______个这样大小且互相不重叠的段。参考答案:64K1625.已知[X-Y]补=7001H,[X+Y]补=0001H,则[2X]补=H。参考答案:7002H