汇编语言程序设计试题
一. 单选题 (每小题 1 分,共10分)在四个备选的答案中,选出一个正确答案,请将其序号填在题中的括号内
1. 能被计算机直接识别的语言是()
A.C语言 B.汇编语言 C.机器语言 D.面向对象语言
2. 唯一代表存储空间中每个字节单元地址的是()
A.段地址 B.偏移地址 C.有效地址 D.物理地址
3.在8086中,存储器是分段组织,每段最大长度是()
A.16KB B.32KB C.64KB D.128KB
4.下列四组寄存器中,属于通用寄存器的是( )
A.AX,BX,CX,DX B.SP,BP,IP
C.SI,DI,FLAGS D.上属三者都是
5.VAR是数据段中定义的变量,指令 MOV AX,VAR 源操作数的寻址方式是( )
A.立即寻址 B.直接寻址 C.相对寻址 D.寄存器寻址
6.下列指令执行后,不影响标志位的指令是( )
A.PUSH AX B.ADD DX,CX C.XOR AX,AX D.CMP AX,5
7.下列指令执行后,一定能使 CF=0的指令是( )
A.NOT AX B.OR AX,AX C.SUB BX,SI D.ROL AX,1
8.设(DS)= 8260H (DI)= 3500H ,指令 DEC WORD PTR [DI] 操作数的物理地址是()
A.11760H B.85B00H C.86100H D.以上都不时
9.循环指令 LOOP AGAIN 终止循环的条件是( )
A.(AX)=0 B.(BX)=0 C.(CX)=0 D.(DX)=0
10.对寄存器AX 中的值除以 2 正确的指令序列是( )
A.MOV AX,-51 B.MOV AX,-51
SHR AX,1 ROR AX,1
C.MOV AX,-51 D.以上都不是
SAR AX,1
二.填空题(每空格 1 分,共 15 分)
1. 在 8086/8088 系统中,存储器是分段组织的,存储器物理地址计算公式是 ⑴ 。
2. 在程序执行过程中,指令的段地址存放在 ⑵ 寄存器中,偏移地址存放在 ⑶ 寄存器中。
3. 下列六条指令语句正确的是 ⑷ ⑸ 二句。
A. PUSH CS B. ADD CX,[SI+DI] C. AND AX,0FH
D. MOV CL,256 E. .MOV AX,[BL] F. ADD DS,AX
4. 已知 (DS)= 2F00H (ES)= 3F00H (SS)= 1A80H (BX)= 0800H
(SI)= 0010H (DI)= 0A00H (BP)=0040H 计算下列指令源操作数的物理地
址,指出寻址方式
(1) MOV AX,[BP+6] 物理地址 ⑹ 寻址方式 ⑺
(2) ADD AX,ES:[BX] 物理地址 ⑻ 寻址方式 ⑼
5.。加减运算中,一字节有符号数能表达的数值范围是 ⑽ , 运算结果超出
范围称为 ⑾ , 此时标志位 ⑿ 。
6.乘法指令 IMUL BX 一个乘数在 BX 中,另一个乘数一定在 ⒀ 中,乘积在 ⒁ 中。.
7. 与 LEA BX,VAR指令完全等效的指令是 ⒂ 。
三.简答题(每题 8 分,共 24 分)
1. 按题意写出合适的指令语句,每小题写一条指令
(1)把 DX 寄存器和CX 寄存器的内容相减,结果存入 DX 寄存器中。
(2)用 BX 和 SI的基址变址寻址,将存储器中的一个字传送到CX 寄存器中。
(3)取 数组 ARRAY的起始地址到BX 寄存器中。
(4)将 DX 寄存器的高四位置 1
2. 执行下列指令语句,把执行结果填在空格中
(1) 已知(AL)=0FFH, (BL)=10H
执行 MUL BL 则(AH)= ⑴ (AL)= ⑵
(2)已知(DS)=2500H (SI)=00A0H (250A0H)=01H (250A1H)=96H
执行 ROL WORD PTR[SI] , 1 则(250A0H)= ⑶ ,(250A1H)= ⑷ ,
CF= ⑸
(3)已知(SS)=3000H (SP)=200H (AX)=785AH (BX)=1234H,
先执行 PUSH AX ,再执行 PUSH BX, 此时(SS)= ⑹ (SP)= ⑺
数12H存放的物理地址是 ⑻ .
3. 已知数据段定义如下:
DATA SEGMENT
VA DB 10H
VB DW 3*20
MSG DB ‘HELLO!’
COUNT EQU 15
BUF DW COUNT DUP(5,3 DUP(1,2),0)
DATA ENDS
问题: (1)执行 MOV BX , 0FFSET VA后, (BX)=
(2)执行 MOV CX , TYPE BUF后, (CX)=
(3)用一条指令将字母 ’O’ 取到AL中.
(4)经汇编后, BUF占有的存储空间是 字节
四.程序分析题 (每题7分,共21分)
1. MOV AX , 0
MOV BX , 1
MOV CX , 5
LOP:ADD AX,BX
ADD BX , 2
LOOP LOP
HLT
问题: (1) 程序的功能是什么(可用算式表示)?
(2) 运行后, (AX)= .
2.已知 (AX)=3200H, (DX)=0A000H,执行下列程序段:
NOT AX
NOT DX
ADD AX , 1
ADC DX , 0
HLT
问题: (1) 程序执行后,(AX)= (DX)= .
(2) 程序功能是什么?
3.执行下列程序:
MOV AX,9B47H
MOV BX,0B568H
ADD AX,BX
JNO L1
JNC L2
SUB AX,BX
JNC L3
JNO L4
JMP SHORT L5
问:程序执行后,(AX)= ,程序转向
五.程序填空(每题5分,共10分)
1.下列程序段将AX中值乘以9,请将程序填写完整
⑴__________
MOV CL,3
⑵____________
POP BX
ADD AX,BX
2.设AX,BX。CX中的数是数带符号,下列程序求 AX、BX、CX中的最小值,
结果在AX中.请将程序填写完整。
CMP AX,BX
⑴_________________
XCHG AX,BX
NEXT: CMP CX,AX
⑵___________________
XCHG AX,CX
EXIT:
六.按要求编程(每题10分,共20分)
1. 测试AL寄存器的D5和D0位,若同时为0,程序转向ZERO,执行AX 减去 BX;否则将AL清0,同时清 CF和OF标志。写出程序段.
2. 设 X、Y、Z、W为十六位有符号数编程计算:
W ← ((X + Y * Z)/8)-Y 除法余数丢弃