1、一、单项选择题(本大题共20小题,每小题1分,共20分)*1设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是( )A. C+D=BB. A+D=BC. B=DD. ACD*2标志寄存器中属于控制标志位的是( )A.DF,OF,SFB.DF,IF,TFC.OF,CF,PFD.AF,OF,SF38088/8086存储器分段,每个段不超过( )A.64K个字B.32K个字节C.1兆个字节D.64K个字节4设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是( )A.DEC ALB.SBB AL,0 AAS DASC.SUB AL,1D.SUB AL,1 AA
2、S DAS*5要输入端口1234H中的8位数据,其指令应是( )A.MOV DX,1234HB.MOV DX,1234H OUT DX,AL 1N AL,DXC.1N AX,1234HD.OUT DX,1234H6若AX=-15要得到AX=15应执行的指令是( )A.NEG AXB.NOT AXC.INC AXD.DEC AX*78086/8088系统执行传送指令MOV时( )A.不影响标志位B.影响DF方向标志C.影响SF符号标志D.影响CF进位标志*8MOV AL,79ADD AL,0B1H上面指令执行后,设置的标志位CF和OF的值是( )A.CF=0,OF=1B.CF=1,OF=1C.C
3、F=0,OF=0D.CF=1,OF=09已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是( )A.DIV BXB.CWD IDIV BXC.XOR DX,DXD.CBWDIV BX IDIVBX*10下列指令中操作数在代码段中的是( )A.MOV AL,42HB.ADD AL,BLC.SUB BX,DID.1NC DI*11用REPE SCASB指令对字符串进行扫描,如CX0时,扫描结束,那么表示( )A.在字符串中遇上第一个AL中指定的字符B.在字符串中有一个AL中指定的字符C.在字符串中有一个不是AL中指定的字符D.在字符串中遇上第一个不是AL中指令的字符12下列指
4、令执行后对源和目的操作数均无影响的是( )A.MOV BX+2,AXB.SUB AX,2467HC.SBB SI,BXD.CMP AX,BX13表示过程定义结束的伪指令是( )A.ENDPB.ENDSC.ENDD.ENDM14下列有语法错误的语句是( )A.DB 12HB.DW 4567HC.DD BCDD.DB CD15DB1 DB 8 DUP(2 DUP(3),3 DUP(2) MOV AX,WORD PTR DB1 04H上面指令执行后,AX的内容是( )A.0302HB.0203HC.0202HD.0303H16BUF1 DB 3 DUP(0,2 DUP (1,2),3)COUNT E
5、QU $ -BUF1符号COUNT等价的值是( )A.6B.18C.16D.817DA1 DW 2A05HDA2 DB 0FAHMOV AL,BYTE PTR DA1SUB DA2,AL上述指令执行后,DA2中的内容是( )A.0DAHB.0FAHC.0F5HD.0D0H18设(SS)=338AH,(SP)=450H,执行PUSH BX,和PUSHF两条指令后,堆栈顶部的物理地址是( )A.33CECHB.33CF2HC.33CF4HD.33CE8H19设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是( )A.0036HB.0022HC.0030HD.0020H20条件转移指
6、令JNBE产生转移的条件是( )A. CF=0 AND ZF=0B. CF=0 AND ZF=1C. CF=1 AND ZF=0D. CF=1 AND ZF=121.与MOV BX,0FFSET VAR指令完全等效的指令是( )。 MOV BX,VAR LDS BX,VAR LES BX,VAR LEA BX,VAR22.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( ). WORD PAGE BYTE PARA23.在汇编语言程序的开发过程中使用宏功能的顺序是( )。 宏定义,宏调用 宏定义,宏展开 宏定义,宏调用,宏展开 宏定义,宏展开,宏调用24.汇编语言源程序中,
7、每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省 略的项是( )。 名字项 操作项 操作数项 注释项13. MOV SP,3210H PUSH AX 执行上述指令序列后,SP寄存器的值是( )。 3211H 320EH 320FH 3212H25.BUF DW 10H DUP(3 DUP(2,10H),3,5) 上述语句汇编后,为变量BUF分配的存储单元字节数是( )。 80H 100H 124 192二、简答题(本大题共3小题,每小题2分,共6分)1假设DS=2000H,COUNT=0100H,SI=0030H,指令MOV AX,COUNTST写出源操作数的物理地址?该指令可否写
8、成MOV AX,COUNT+SI?2下面指令有无错误?若有错,是什么错误?MOV AX,SIDICMP SI,BX3条件转移指令的判断条件除标志位PF外还有哪几个标志位?三、程序分析题(每小题6分,共36分)l.已知 AX=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX 执行上述指令序列后,AX= ,CF 2.设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH执行上述指令序列后,AL= BL= CL= 3.已知AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEC A
9、H NOT AL执行上述指令序列后,AH= ,AL= 4. DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS : LEA SI,S9 LEA, DI,S9+1 MOV CX,5LOP: MOV AL,SI XCHC AL,DI MOV SI,AL ADD SI,2 ADD DI,2 LOOP LOP上述程序段运行后,S9开始的10个字节存储单元内容是什么?5. MOV AL,38H MOV BL,49H CALL SUB0 INC AL DEC CL . SUB0 PROC ADD AL,BL MOV CL,AL DAA RETSUB0 ENDP
10、上述程序段运行后,AL= CL= 6ADR DW 1234H,5678HLEA SI,ADRLDS BX,ADR设变量ADR的偏移地址是100H,上述两条指令执行后:SI= ,BX= 。7已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01,02,03,0FF,00H。问下列程序段执行后,00000009H的内容是些什么值。MOV SI,0000HMOV DI,0001HMOV CX,0080HCLDREP MOVSW8STR1 DB COMPUTERNDPASCALSCA DB N LEA DI,STR1MOV AL,SCAMOV CX,10HCLDREPNE
11、SCASBNEXT:程序运行到NEXT时CX= ZF= 9已知AX=0FFFFH,DX=0001HMOV CX,2LOP:SHL AX,1RCL DX,1LOOP LOP上述程序段执行后,DX= AX= 10已知DX=0A476H,CX=0302H,CF=1OR DX,DXRCR DX,CLXCHG CH,CLRCL DX,CL上述程序段执行后,DX= CF= 11MOV AX,10SHL AX,1SHL AX,1MOV BX,AXMOV CL,2SHL AX,CLADD AX,BX上述程序段执行后,BX= AX= 12已知AX=78H,BX=0804HSHR BX,1AND BX,0F0FH
12、MOV CX,4LOP:XCHG BH,BLDIV BLSAL AX,1LOOP LOP上述程序段执行后,AX= BX= 四.改错. 阅读下列数据传送程序段,改正使用不当的语句 A DB 35,47,2AH,XYZ B DB N DUP(0) N EQU $-A MOV SI, A MOV DI, B MOV CX, LENGTH ALP: MOV AX, SI MOV DI, AX INC SI INC DI DEC CX LOOP LP五.程序填空题(每空3分,共18分)1.下面是程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1.试把空白处填上适当指令. AN
13、D AH , 08H MOV AH , 0FFH JMP NEXT ZERO: MOV AH, 0 NEXT : .2.有一个首址为A的字数组,完成从大到小的排序.DATAREA SEGMENT A DW N DUP(?)DATAREA ENDSPROGRAM SEGMENT MAIN PROC FAR START : PUSH DS SUB AX, AX PUSH AX MOV DS ,AX MOV CX , N LOOP1: MOV DI ,CX MOV BX ,0 LOOP2: MOV AX ,ABX CMP JGE CONTINE XCHG AX , MOV ABX , AXCONTI
14、NE: ADD BX LOOP LOOP2 LOOP LOOP1 RET MAIN ENDP END START3.该程序段的功能是求出存放在DX、AX中的双精度数的绝对值,并将结果保存在A和A2单元中,请在空白处填写指令。 1 JNS RESULTNOT AXNOT DXINC AX2 RESULT: MOV A , AX MOV A+2 , DX4 下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。ARRAY DB 3,5,-3,-2,4,5,-8,6MOV CX,7MOV DI,0MOV AL,ARRAYA1:INC DIJLE A2MOV AL,ARRAY
15、 DIA2 5下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。VAR1 DW VAR2 DW MOV AX,VAR1MOV BX,VAR2XOR AX,BX TEST BX,8000HMOV AX,0NEXT:6.以BUFF为首地址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中. BUF DB 5,6,7,58H,62,45H,127,. COUNT EQU $-BUF MAX DB ? . . MOV BX ,OFFSET BUF
16、MOV CX ,COUNT -1 MOV AL ,BX NXET: INC CX JAE NEXT MOV AL, BX NEXT: DEC CX MOV MAX , AL六、编制程序题(第1小题8分共16分)l.现有 data segmentarray dw 64 dup(?) dw 5 dup(?) data ends试编写一程序段,要求在array+8到array+10(两者都包括在内)单元中插入5个0.(提示:先把从array+8单元开始的数据后移5个单元,然后再在规定位置插入0)2.从键盘上输入来宾的姓名Mr.或Mrs.,当按动任意键时,屏幕上显示出:Welcome Mr.3.定义宏
17、指令并展开宏调用:宏指令JOE把一串信息“MESSAGE NO.K”存入数据区XK中.宏调用I=0 JOE TEXT , I JOE TEXT ,I JOE TEXT ,I4.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一个完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首的数据区中。DATA SECMENTBUF1 DW 56,24,54, 1,89, 8,BUF2 DW 45, 23,124, 345, 265,SUM DW 10 DUP(0)DATA ENDS5. 改错. 阅读下列数据传送程序段,改正使用不当的语句 A DB 35,47,2AH,XY
18、Z B DB N DUP(0) N EQU $-A MOV SI, A MOV DI, B MOV CX, LENGTH ALP: MOV AX, SI MOV DI, AX INC SI INC DI DEC CXLOOP LP6.内存中由SOURCE指示的个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数 组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数组元素,然后是负数个数及负数数组元素.7从键盘输入一系列字符,以字符$为结束符,然后对其中的非数字字符计数,并显示出计数结果 8.在STRING到STRING+99单元中存放着一个字符串,并编
19、写一个程序,测试该字符串中是否存在数字.如有数字则把DL的第5位置1,否则将该位置09.统计串中的空格个数和逗号的个数.11. . 用地址表转移表实现下列C语句,其中变量A和B是有符号的整型变量:switch(a%8) case 0 :b=32 ; break; case 1: case2: b=b+43; break; case3: b=b*a; break; case4: b- ; break; case5: case6: case7: printf(Function 5_6_7 ); break; 汇编语言考试复习答案一、单项选择题(本大题共20小题,每小题1分,共20分)1 C 2.
20、B 3 D 4D 5.B 6 A 7 A 8. D. 9 B 10.A 11 D 12 D 13A 14C 15.A 16 B 17. C 18 A 19C 20.A 21. D 22. D 23.C 24.B 25.B 26.B二、简答题1 物理地址:20130H(1分) 可以(1分) 2. 错,不能同时出现SI,DI(1分) 错,存储单元之间不能直接比较(1分) 3. OF、ZF、SF,和CF的标志位(2分)三、程序分析题1执行上述指令序列后,AX= 0 ,CF0 2执行上述指令序列后,AL= 79H BL= 06H CL= 7FH 3执行上述指令序列后,AH=60H ,AL= 35H 4
21、. S9 DB 1,0,3,2,5,4,7,6,9,85.上述程序段运行后,AL= 88H CL= 80H 6.上述程序段运行后, CX= 44AAH DX= 44D5H SI= 100H ,BX= 1234H 。7(从0单元开始的内容是01,01,02,02,04,04,06,06,08,08)8. 程序运行到NEXT时CX=7 ZF= 1 9. 上述程序段执行后,DX=0007H AX=0FFFCH10. 上述程序段执行后,DX=48ECH CF=1 11. 上述程序段执行后,(1)BX=40或28H (2)AX=200或00C8H()12. 上述程序段执行后,(1)BX=40或28H (
22、2)AX=200或00C8H()五.程序填空题(每空3分,共18分)1. XOR AH,AL JE ZERO2. DEC CX AX,ABX+2 ABX+2 MOV CX,DI3.4. CMPAL,ARRAYDI LOOP Al5. JS NEXT JNE NEXT6. CMP AL ,BX JNZ LOP1六、编制程序题(第1小题8分共16分)1. CODE SEGMENTASSUME ,DS:DATA ,ES:DATASTART: PUSH XOR AX,AX PUAH AX MV AX,DATA MOV DS ,AXMOV ES,AXMOV SI,OFFSET ARRAY+7EHMOV
23、DI,OFFSET ARRAY+88HSTDMOV CX,60REP MOVSWMOV BX,OFFSET ARRAY+8HMOV CX,5NEXT: MOV WORD PTRBX,0ADD BX.2LOOP NEXTRETCODE ENDSEND STARAT2. 2.DESG SEGMENT MAXLEN DB 16 ACTLEN DB ? NAMES DB 16 DUP( ) MESS1 DB WELCOME MESS2 DB 16 DUP( )CRLF DB 0DH,0AH,$DSEG ENDSCSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG,DS:DS
24、EG,ES:DSEGPUSH DSSUB AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES ,AXCLDBEGIN:MOV CX,16MOV AL,20HLEA DI,MESS2REP STOSBLEA DX,MAXLENMOV AH,0AHINT 21HMOV AH,7INT 21HCMP AL, 3JE EXITDISPLAY: MOV CH,0 MOV CL,ACTLEN LEA SI,NAMES LEA DI,MESS2 REP MOVSB MOV AH,09H LEA DX,MESS1 INT 21H EXIT:RETMAIN ENDPCSEG ENDS
25、END MAIN3.JOE MACRO A,JMARY A,%JJ=J+1ENDM MARY MACRO X,KX&K DB MESSAGE NO.&KENDM宏展开:I=0 JOE TEXT , I+ TEXT0 DB MESSAGE NO.0JOE TEXT , I+ TEXT1 DB MESSAGE NO.1JOE TEXT , I+ TEXT2 DB MESSAGE NO.2 4.STACK1 SEGMENT PATA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:
26、MOV AX,DATA MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM NXET: MOV AX,SI MOV DX,DI TEXT AX,8000H JE TDX NEG DX TDX:TEST DX,8000HNEG DX ADDS:ADD AX,DXMOV BX,AXADD SI,2ADD DI,2ADD BX,2LOOP NEXTMOV AH,4CHINT 21HCODE ENDS END START7. DSEG SEGMENT BUFF DB 50 DUP( )COUNT DW 0DSEG ENDS .BEGIN:LEA BX,BUFFMO
27、V COUNT , 0INPUT:MOV AH,01INT 21HMOV BX ,ALINC BXCMP AL ,$JNZ INPUTLEA BX ,BUFFNEXT: MOV CL ,$JZ DISPCMP CL,BXJZ DISP CMP CL,30HJB CONTCMP CL,39HJBE NXETCONT:INC COUNT JMP NEXTDISP: .8.DSEG SEGMENT STRING DB 100 DUP(?) DSEG ENDSCSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,ES:DSEG START: PUSH DS
28、SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AXMOV ES,AX BEGIN: MOV CX,100 MOV SI ,0 REPEAT: MOV AL,STRINGSI CMP AL,30H JB GOON CMP AL,39H JA GOON OR DL,20H JMP EXITGOON:INC SI LOOP REPEAT AND DL,0DFHEXIT: RETMAIN ENDPCSEG ENDS END START9.DATA SEGMENT STRN DB Aabcd BE,RES, .$ SPCLN DB ? DELILN DB ?DATA ENDS
29、CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DSAX MOV OFFSETG STRN MOV DX,0AGAIN:MOV AL,SI CMP AL,$ JE DONE CMP AL,20H JNE NEXT INC DH JMP CONTINXET:CMP AL,2CH JNE CONTI INC DL COUNTI: INC SI JMP AGAIN DONE: MOV SPCLN ,DHMOV DELILN,DLMOV AH,4CHINT 21HCODE ENDS END START 10编一程序段将BUF字节单元中的数
30、折成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上。 MOV ALBUF MOV BUF+2,AL AND BUF+2,0FH MOV CL,4 SHR AL,CL M0V BUF+1,AL11.DATA SEGMENT A DW ? B DW ? Table DW case0,case12,case12,case3 DW case4,case567,case567,case567,MSG DB Function 5_6_7$DATA ENDSCODE SEGMENT.MOV AX,AMOV BX,AXAND BX,7SHL BX,1JMP TableBXCase0: MOV B,32D JMP NEXTCASE12: ADD AX,43DMOV B,AXJMP NWXTCASE3: SHL AX,1 MOV B,AX JMP NEXTCASE4: DEC B JMP NEXTCASE567:LEA DX,MSG MOV AH,9 INT 21H JMP NEXTNEXT:.CODE ENDS