汇编语言程序设计试题
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共50分)
1.CPU发出的访问存储器的地址是( )
A.偏移地址 B.物理地址 C.逻辑地址 D.段地址
2.使计算机执行某种操作的命令是( )
A.伪指令 B.标号 C.指令 D.助记符
3.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( )
A. 1400H B. 77F8H C. 0000H D. 0FFFFH
4.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是( )码。
A. BCD码 B.二进制码 C.十六进制码 D.ASCII码
5.下列关于8086CPU的工作原理的描述错误的是( )。
A.汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。
B.CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。
C.任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。
D.传送指令能够更改所有通用寄存器的内容。
6.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( )
A.12C5BH B.12C59H C.12B6BH D.12BFEH
7. 16位结构的CPU 不一定具备的特性是( )。
A. 运算器一次最多可以处理16位的数据
B. 寄存器的最大宽度为16位
C. 地址总线为16根
D. 寄存器和运算器之间的通路为16位
8. 下列指令的书写正确的是( ) 。
A. push al
B. mov cs:[0],ds:[10]
C. pop si
D. mov ds:[0],2
9.在DEBUG工具中,显示寄存器内容的命令是( )。
A. G B. D C. T D. R
10. 能够将ax中的内容送到内存0000:0200H处的指令序列是( )。
A.
mov ds,0
mov bx,200h
mov [bx],ax
B.
mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
C.
mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
D.
mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
11.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为 ( )。
A. 20098H B. 20102H C. 20100H D. 200FEH
12.执行下列指令后AL寄存器中的值是( )
MOV AL, 0BFH
OR AL, 0FCH
A. 0ACH B.0FFH C. 0DCH D. 0BBH
13. 已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令JMP BX后,IP寄存器的内容是( )。
A. 1256H B. 2000H C. 3256H D. 528FH
14.在程序执行过程中,IP寄存器中始终保存的是( )A.上一条指令的首地址 B.下一条指令的首地址 C.正在执行指令的首地址 D.需计算有效地址后才能确定地址
15.8088/8086存储器分段,每个段不超过( )
A.64K个字 B.32k个字节
C.64k个字节 D.1兆个字节
16.关于伪指令相关描述错误的是( )。
A.伪指令没有对应的机器码,只用来指导汇编过程的。
B.伪指令由编译器处理,在程序中可有可无。
C.编译器要通过执行伪指令才能对源程序进行相应的处理操作,完成编译工作。
D.伪指令是汇编语言源程序不可缺少的组成部分。
17.下列关于堆栈的说法,错误的是( )
A.以“先入后出”为原则。
B.栈区最高地址单元的前一个单元为栈底。 C.运行中SP寄存器动态跟踪栈顶位置。
D.压栈和弹出都是以字节为单位。
18.关于8086/8088微机系列,下列说法哪个是正确的( )
A.一个存储单元由16个二进制位组成,简称字。
B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C.在内存中,可以无限分配段,且段的大小不受限制。
D.段与段之间可以邻接,也可以重叠。
19.1KB的存储器有( )个存储单元?
A.1000 B. 1024 C. 512 D. 256
20. 下列程序中,出现逻辑错误的是( )。
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
21. 对于如下程序
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
下列说法正确的是( )。
A.指令mov ax,code改为mov ax,start对程序要实现的功能没有任何影响。
B.程序不能通过编译,因为在loop指令之前,没有对寄存器cx进行设定。
C.程序实现的功能是将程序的所有指令复制到内存中以0:200h为起始地址的一段内存空间中。
D.程序实现的功能是用内存中以0:200h为起始地址的一段内存空间中的数据将程序的所有指令覆盖。
22.在Intel8086环境下,下列说法合理的是( )。
A. 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
B. 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
C. 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
D. 用DW定义进行的数据,只能够以字为单位访问。
23.若将以2000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是( )。
A. 0001H
B. 0000H
C. FFFFH
D. FFFEH
24.生成EXE之后用Debug加载后,查看寄存器内容如下:
ds=0c3e es=0c3e ss=0b4e cs=0b4f ip=0000
程序的起始地址的段地址是( )。
A. 0c4e
B. 0c3e