汇编语言程序设计试题
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题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 gment
mov ax,2
add ax,ax
mov ax,4c00h
int21h
code
end
B.assume cs:code
code gment
mov ax,2
add ax,ax
code ends
end
C.aume cs:code
code gment
mov ax,2
add ax,ax
mov ax,4c00h
int21h
code ends
end
D.assume cs:code
code gment
mov ax,2
add ax,ax
mov ax,4c00h
int21h
code ends
21.对于如下程序
assume cs:code
code gment
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
int21h
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
C.0c4f
D.0
25.在Intel8086环境下,对指令mov ax,[bx]描述错误的是()。
A.指令中,源操作数的段地址默认为ds中的内容
B.指令中,源操作数的偏移地址为bx中的内容
C.指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)
D.指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)
二、填空题(每空2分,共30分)
1.通常所说的计算机系统包括___硬件_____和___软件_____两大部分。
2.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是__DS______、____SS____、_____CS___、__ES____。
3.若要源程序从标号START开始执行,源程序结束伪指令的格式为__END START______。
4.8086的地址总线有20根,寻址范围为____1M_______字节。
5.汇编语言源程序需经过___编译_________程序汇编,__连接_______程序连接才能生成可执行文件。
6.十进制数369转换成8位二进制数为01110001B________,转换成对应的十六进制数为__71H________。
7.存储器某单元的地址表示为2314H:4132H,则它的偏移地址=__4132H_______,物理地址=__27272H________。
s:mov ax,[bx]
add bx,2
loop s
上面指令序列,当指令第一次执行到add bx,2时cx的值__5___。
三、阅读程序题(每题5分,共10分)
1.已知21000h处字单元的内容为BE00H,对于如下程序:
(1)mov ax,2000h
(2)mov ds,ax
(3)mov bx,1000h
(4)mov ax,[bx]
(5)inc bx
(6)inc bx
(7)mov[bx],ax
(8)inc bx
(9)inc bx
(10)mov[bx],ax