汇编语言试卷
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码
填在题干后的括号内,每小题1分,共20分)
1.十六进制数88H,可表示成下面几种形式,请找出错误的表示( D)。 A) 无符号十进制数136 B) 带符号十进制数-120
C) 压缩型BCD码十进制数88 D) 8位二进制数-8的补码表示 2.指令指针寄存器是( A)。
A)IP B) SP C) BP D) PSW
3.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是( D)。
A)表示结果中含1的个数为偶数 B)表示结果中含1的个数为奇数 C)表示该数为偶数 D)表示结果中低八位含1的个数为偶数
4.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是( D)。 A) MOV AL,00H B) AND AL,00H C) XOR AL,AL D) SUB AL,AL 5.下列指令执行后总是使CF=0,OF=0的是( A)。 A) AND B) NEG C) NOT D) INC
6.完成同指令XCHG AX,BX相同功能的指令或指令序列是(C )。 A) MOV BX,AX B) PUSH AX POP BX
C) MOV CX,AX MOV AX,BX MOV BX,CX
7.设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA
之后,其结果应是(A )。
A) AH=01,AL=05 B) AH=1 AL=15 C) AH=0 AL=0FH D) AH=0 AL=05 8.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为(C )。 A) OF=1,CF=0 B) OF=1,CF=1 C) OF=0,CF=0 D) OF=0,CF=1 9.在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是( C)。
A) CX=0且ZF=0 B) CX=0且ZF=1 C) CX=0或ZF=0 D) CX=0或ZF=1 10.下面指令中,合理而有意义的指令是( D)。
A) REP LODSB B) REP SCASB C) REP CMPSB D) REP MOVSB 11.在汇编语言程序中,对END语句的叙述正确的是(C )。
A) END语句是一可执行语句 B) END语句表示程序执行到此结束
C) END语句表示源程序到此结束 D) END语句在汇编后要产生机器码 12.下面的数据传送指令中,错误的操作是( D)。 A) MOV SS:[BX+DI],1000H B) MOV DX,1000H C) MOV WORD PTR[BX],1000H D) MOV DS,2000H 13.下面指令执行后,变量DAB中的内容是( C)。 DAW DW2A05H DAB DB 0FAH
:
MOV AL,BYTE PRT DAW SUB DAB,AL A) 0DAH B) 0FAH C) 0F5H D) 0D0H
14.执行下列指令后,正确的结果是(B )。 MOV AL,100 MOV BL,-2
A) AL=100H BL=02H B) AL=64H BL=0FEH C) AL=64H BL=82H D) AL=100H BL=0FEH
15.设数据段中已有: DA1 DB 12H,34H DA2 DW 56H,78H
下面有语法错误的语句是(D )。
A) ADR1 DW DA1 B) MOV DA1+1,AX
C) MOV BYTE PTR DA2+1,AL D) MOV WORD PTR DA1+1,AX 16.实现将DX:AX中存放的32位数扩大四倍,正确的程序段是(C )。 A) SHL AX,2 ROL DX,2 B) RCL AX,2 SHL DX,2 C) MOV CX,2 LOP:SHL AX,1 RCL DX,1 LOOP LOP D) SHL AX,1 SHL AX,1 RCL DX,1 RCL DX,1
17. DATA SEGMENT
TA1 DW 0102H,0304H,0506H TA2 DB 02H,03H,04H :
MOV BX,DS:[0006H] AND BX,0FFH AND BH,[BX]
上述指令序列运行后,BX的内容是( B)。 A) 0605H B) 0402H C) 0606H D) 0204H
18.当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是( C)。 A) JLE B) JNL C) JNLE D) JL
19.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。 TEST BH,01H
______A___K1
A) JNE B) JZ C) JS D) JC
20.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( B)。 A) TEST BL,4FH JZ NEXT
B) XOR BL,4FH JZ NEXT
C) AND BL,4FH JZ NEXT
D) OR BL,4FH JZ NEXT
二、 简答题(每小题4分,共12分)
1.在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四
个寄存器信息。例如: PUSH AX
PUSH BX 保护现场 PUSH CX PUSH DX :
}恢复现场
试写出恢复现场时的指令序列。 POP DX POP CX POP BX POP AX (1)
2.完成下列操作,选用什么指令:
(1)将AX的内容,减去0520H,和上次运算的借位; SBB AX,0520H (2)将变量名TABL的段地址送AX;MOV AX SEG TABL 3.D1 DB 20H DUP(?) D2 DW D1
请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。
三、程序分析题(每小题6分,共36分)
1. A DW 1234H B DW 5678H :
PUSH A PUSH B POP A POP B
试回答:①上述程序段执行后(A)=___5678H________,(B)=___1234H ________
②设执行前SP=200H,执行后SP=____2000H________ 2.现有下列程序段: MOV AX,6540H
MOV DX,3210H MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
试问上述程序段运行后,
(AX)=___5400H__________ (BL)=___06H__________ (DX)= ___2106H__________ 3.分析下面程序段, MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD AL,BL
试问程序段执行后(BL)=___0E4H _________(AL)=___ 0DDH________ 4.程序段如下:
BLK1 DB 46,84,34,-5,20,122,73 :
MOV CX,7 LEA S1,BLK1
NEXT: MOV AL,[SI] INC SI
TEST AL,81H LOOPZ NEXT MOV BL,[SI] :
请回答程序段运行后:(AL)=__0FBH__________ (BL)=___14H或20_________ 5.STRING DB ‘ABCDEFGHIJ' :
MOV AH,01 ;从键盘输入字符1~9 INT 21H
AND AL,0FH DEC AL
XOR AH,AH
MOV BX,OFFSET STRING ADD BX,AX MOV BL,[BX]
MOV AH,02H ;显示输出 INT 21H :
试回答:(1)上述程序段的功能是什么?根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示
STRING中第几个字符。
(2)如从键盘输入字符‘4',程序段有什么结果? 输入4则输出D 6. AND AL,AL JZ BRCH1 RCR AL,1 JZ BRCH2 RCL AL,1 INC AL JZ BRCH3 :
上述程序运行后,试回答:
(1)当(AL)=___0_______时,程序转向BRCH1 (2)当(AL)=___1_______时,程序转向BRCH2 (3)当(AL)=___-1_______时,程序转向BRCH3
四、程序填空题(下列各小题中,一个空只能填一条指令。每小题6分,共12分)
1.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。 TEST AX,8000H
__JE K1或JZ K1 _________ MOV PLW,BX JMP DONE
K1:__ MOV PLW,AX___________ DONE:
2.现有下列数据段: DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL' COUNT EQU -STR1
BUF DB COUNT DUP(0) DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。 MOV SI,OFFSET BUF-1 MOV DI,OFFSET BUF MOV CX,COUNT
___ CLD____ ______________ LOOP:MOVSB
______SUB SI,2_________________________ LOOP LOP
五、编制程序(段)题(第1小题6分,第2小题14分,共20分)
1.编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题考生勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。) 程序段:MOV AX,0
MOV BX,OFFSET BUF