《汇编语言程序设计》2012 级复习试题及答案
一.单项选择题:
3.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B) A.名字的第一个字符可以是大写英文字母及小写英文字母; B.名字的第一个字符可以是字母、数字及、@、_ ; C.名字的有效长度≤31 个字符; D.在名字中不允许出现$。
5.当程序顺序执行时,每取一条指令语句,IP 指针增加的值是( D ) 。 A.1 B.2 C.3 D.由指令长度决定的 6.下列属于合法的指令是( D ) 。 A.MOV DS,ES B.MOV [SI],[DI] C.MOV AX,BL D.MOV [DI],BL 7.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B )。 A.AX,BX,CX,DX B.BX,BP,SI,DI C.SP,IP,BP,DX D.CS,DS,ES,SS 8.下列传送指令中有语法错误的是( A )。 A.MOV CS,AX B.MOV DS,AX C.MOV SS,AX D.MOV ES,AX 10.与 MOV BX,OFFSET VAR 指令完全等效的指令是( D )。 A.MOV BX,VAR B.LDS BX,VAR C.LES BX,VAR D.LEA BX,VAR 11.在汇编语言程序中,对 END 语句的叙述正确的是( C ) 。
B.END 语句表示程序执行到此结束 A.END 语句是一可执行语句
C.END 语句表示源程序到此结束 D.END 语句在汇编后要产生机器码 12.将 DX 的内容除以 2,正确的指令是(C)
A.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,1 14.下列数值表达式和地址表达式中,错误的是( D ) 。
B.MOV SI,OFFSET BUF+13 A.MOV AL,8*14+4
C.MOV CX,NUM2-NUM1 D.MOV CX,NUM2+NUM1
C 15.为使 CX=-1 时,转至 MINUS 而编制了一指令序列,其中错误的序列是( )。
A.INC CX JZ MINUS B.SUB CX,OFFFFH JZ MINUS
C.AND CX,OFFFFH JZ MINUS D.XOR CX,OFFFFH JZ MINUS
17.当执行指令 ADD AX,BX 后,若 AX 的内容为 2BA0H,设置的奇偶标志位 PF=1,下面的叙 述正确的是( D)
A.表示结果中含 1 的个数为偶数 B.表示结果中含 1 的个数为奇数 C.表示该数为偶数 D.表示结果中低八位含 1 的个数为偶数 18.完成对 CL 寄存器的内容乘以 4 的正确操作是( C ) 。
A.ROL CL,1 B.MUL 4 ROL CL,1
C.SHL CL,1 D.MOV CL,2 SHL CL,1 SHL CL,CL
19.下面各传送指令中,正确的是( C )
A.MOV [DI],[SI] B.MOV[DX+DI],AL C.MOV WORD PTR [BX],0100H D.MOV AL, BX
20.完成将累加器 AL 清零,并使进位标志 CF 清零,下面错误的指令是(A )
A.MOV AL,00H B.AND AL,00H C.XOR AL,AL D.SUB AL,AL
22.下面指令中,合理而有意义的指令是(D )
A.REP LODSB B.REP SCASB C.REP CMPSB D.REP MOVSB
) 。 23.在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D
A.STOSW B.LODSW C.SCASW D.CMPSW
24.AL=0AH,下列指令执行后能使 AL=05H 的是( C ) 。
A.NOT AL B.AND AL,0FH C.XOR AL,0FH D.OR AL,0FH 26.下面的数据传送指令中,错误的操作是(D ) 。 A.MOV SS:[BX+DI],1000H B.MOV DX,1000H C.MOV WORD PTR[BX],1000H D.MOV DS,2000H 27.执行下列指令后,正确的结果是(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
28.设数据段中已有:
DA1 DB 12H,34H DA2 DW 56H,78H
下面有语法错误的语句是(B ) 。 A.ADR1 DW DA1 B.MOV DA1+1,AX
C.MOV BYTE PTR DA2+1,AL D.MOV WORD PTR DA1+1,AX 30.某存储单元的物理地址是 12345H,可以作为它的段地址有( D )
A.2345H B.12345H C.12340H D.1234H
31.在执行下列指令时,需要使用段寄存器 DS 的指令是( D )
A.STOSW B.ADD AL,CL C.NEG BX D.INC DA[BX]
32.使用 DOS 系统功能调用时,使用的软中断指令是( B )
A.INT 21 B.INT 10H C.INT 16H D.INT 21H
33.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有
)。 ( D
B.SUB C.AND D.MOV A.C
MP
35.下列描述中,执行循环的次数最多的情况是( A ) 。
B.MOV CX,1 A.MOV CX,0
LOP:LOOP LOP LOP:LOOP LOP
D.MOV CX,256 C.MOV CX,0FFFFH
LOP:LOOP LOP LOP:LOOP LOP
36.实现将 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
D 指令的执行会影响条件码中的CF位。
A.JMP NEXT B.JC NEXT C.INC BX D.SHL AX,1 38.下列指令执行时出错的是(A) A.ADD BUF1,BUF2 B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H 39.在下列指令的表示中,不正确的是(C)
A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 41.主程序和所调用的子程序在同一代码段中,子程序的属性应定义为( C )。 A.TYPE B.WORD C.NEAR D.FAR 42.CPU 发出的访问存储器的地址是( B )
D.段地址 A.偏移地址 B.物理地址 C.逻辑地址
43.使计算机执行某种操作的命令是( C ) A.伪指令 B.标号 C.指令 D.助记符
45.计算机处理问题中会碰到大量的字符.符号,对此必须采用统一的二进制编码。目前,微 机中普遍采用的是( D )码。 A. BCD 码 B.二进制码 C.十六进制码 D.ASCII 码 46.下列关于 8086CPU 的工作原理的描述错误的是( C )。
A.汇编程序员可以通过对各种寄存器中内容的修改实现对 CPU 的控制。
B.CPU 在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理 地址。
C.任意时刻,CS:IP 指向的内容即是此刻 CPU 正在执行的指令。 D.传送指令能够更改所有通用寄存器的内容。 48. 16 位结构的 CPU 不一定具备的特性是( C )。 A. 运算器一次最多可以处理 16 位的数据 B. 寄存器的最大宽度为 16 位 C. 地址总线为 16 根
D. 寄存器和运算器之间的通路为 16 位 49.下列指令的书写正确的是( C ) 。 A. push al
B. mov cs:[0],ds:[10] C. pop si D. mov ds:[0],2
50.在 DEBUG 工具中,显示寄存器内容的命令是( D ) A. G B. D C. T D. R
52.若栈顶的物理地址为 20100H,当执行完指令 PUSH AX 后,栈顶的物理地址为 ( D ) A. 20098H B. 20102H C. 20100H D. 200FEH 53.执行下列指令后 AL 寄存器中的值是( B ) MOV AL, 0BFH OR AL, 0FCH A. 0ACH B.0FFH C. 0DCH D. 0BBH
54.已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令 JMP BX 后,IP 寄存器的内容 是( A ) 。
B. 2000H C. 3256H D. 528FH A. 1256H
55.在程序执行过程中,IP 寄存器中始终保存的是( B )
B.下一条指令的首地址 A.上一条指令的首地址
D.需计算有效地址后才能确定地址 C.正在执行指令的首地址
58.下列关于堆栈的说法,错误的是(D ) A.以“先入后出”为原则。
B.栈区最高地址单元的前一个单元为栈底。 C.运行中 SP 寄存器动态跟踪栈顶位置。 D.压栈和弹出都是以字节为单位。
59.关于 8086/8088 微机系列,下列说法哪个是正确的(D ) A.一个存储单元由 16 个二进制位组成,简称字。
B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C.在内存中,可以无限分配段,且段的大小不受限制。 D.段与段之间可以邻接,也可以重叠。 60.1KB 的存储器有( B )个存储单元? A.1000 B. 1024 C. 512 D. 256 61.下列程序中,出现逻辑错误的是( B )。 A. assume cs:code
code segment mov ax,2 add ax,ax mov ax,4c00h int 21h code end
B. assume cs:code
code segment mov ax,2 add ax,ax code ends end
C. aume cs:code
code segment mov ax,2
add ax,ax mov ax,4c00h int 21h code ends end
D. assume cs:code
code segment mov ax,2 add ax,ax mov ax,4c00h int 21h code ends 62. 对于如下程序
assume cs:code code segment start:mov ax,code mov ds,ax mov ax,0020h mov es,ax mov bx,0 s:mov al,[bx] mov es:[bx],al inc bx loop s
mov ax,4c00h int 21h code ends end
下列说法正确的是( C )。
A.指令 mov ax,code 改为 mov ax,start 对程序要实现的功能没有任何影响。 B.程序不能通过编译,因为在 loop 指令之前,没有对寄存器 cx 进行设定。 C. 中。 D.
指令覆盖。
64.若将以 2000H 为段地址的整个段空间当作栈使用, 是( B )。 A. 0001H B.0000H C.FFFFH D.FFFEH
65.生成 EXE 之后用 Debug 加载后,查看寄存器内容如下: ds=0c3e es=0c3e ss=0b4e cs=0b4f ip=0000 程序的起始地址的段地址是( A ) A.0c4e B.0c3e C.0c4f D.0
66.在 Intel8086 环境下,对指令 mov ax,[bx]描述错误的是( D )。 A.指令中,源操作数的段地址默认为 ds 中的内容