乐山师范学院200 —200 学年度考题五
课程名称:《汇编语言程序设计》
一、单项选择题(每小题1分,共16分)
B1.用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS的值是()
A.F400H
B.2F80H
C.F4000H
D.2F800H
C2.设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOV AX,[1000H]则AX=()
A.8000H
B.0080H
C.2080H
D.8020H
D3.下列四条指令中错误的是()
A.MOV AX,[SI]
B.MOV AX,[DI]
C.MOV AX,[SI+DI]
D.MOV AX,[SI-DI]
A4.下列四条指令执行后不影响标志位的是()
A.JNC NEXT
B.CMP AX, BX
C.SHL AX, 1
D.OR AL, AL
D5.已知AX=0001H,下列四条指令执行后,不能使ZF=1的语句是
A.DEC AX
B.SUB AX, 1
C.AND AX , 1
D.CMP AX,1
A6.在8086/8088系统中,约定用于形成堆栈段数据物理地址的寄存器有()
A.SS, SP, BP
B.SS, SP, BX
C.DS, BX, BP
D.DS, SP, BP
B7.有指令MOV AX, 1234H,指令中的立即数1234H是存储在()
A.数据段
B.代码段
C.附加段
D.堆栈段
C8.要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是
A.BUF DW 9
B.BUF DB 9
C.BUF DB 9 DUP ( ? )
D.BUF DW 9 DUP ( ? )
A9.已知AL=56H,BL=34H,都是压缩BCD码,要执行二数相加,正确的指令是()
A.ADD AL,BL
B.ADC AL,BL
DAA DAA
C.ADD BL,AL
D.ADC BL,AL
DAA DAA
D10.在执行子程序段内调用CALL SUBR指令后,SP的值()
A.加1
B.减1
C.加2
D.减2
B,C11.完成将AX清零,并且使CF清零,下面错误的指令是()
A.SUB AX,AX
B.AND AX, 0
C.XOR AX,AX
D.MOV AX,0
D 12.定义宏指令的伪指令是()
A.PROC和ENDP
B.CODE和ENDS
C.EQU和END
D.MACRO和ENDM
B13.在汇编语言源程序中,表达式的计算是由()完成的。
A.编程者
B.汇编程序
C.程序执行时
D.连接程序
D14.为了使执行串操作指令时,地址按减量方式处理应使用指令
A.CLI
B.STI
C.CLD
D.STD
B15.有数据定义NUM DB ‘12345’,经汇编后,NUM占有()字节存储单元。
A.1
B.5
C.6
D.7
B16.汇编语言源程序每个语句可以由四项组成,如语句要完成一定功能,那么该语句中
不可省略的项是()
A.名字项
B.操作项
C.操作数项
D.注释项
二、填空题(每空1分,共16分)
1.在8086/8088系统中,存储器是分段的,每段最大长度是
__64k_____字节,段内偏移地址从__0_____到__0FFFFH___.
2.在程序调试时,显示某指令存放地址是2340:0056,则物理地址是__23456H_____.
3.汇编语言源程序中的语句有三种类型,它们是___顺序_语句,___分支____语句和__循环_____语句。
4.指令MOV AX,[BX+SI+10H]源操作数寻址方式是_相对相对基址变址寻址方式_.
5.执行段间返回指令RET时,将栈顶的一个字弹出到___IP____后,又弹出一个字到__CS_____寄存器中。
6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,执行NEG WORD PTR[DI]后,(31200H)=___9CH____,(31201H)=__6CH_____.
-9364h=6C9CH
7.执行下列指令序列
MOV AL,80H学院 (-128D)
MOV BL,08H
CBW
IDIV BL
则AH=_0__AL=_0F0H(-10H)______.(AH-余数,AL-商)
8.已知数据定义语句
ORG 120H
VECT1 DW 200H
VECT2 DW VECT1
执行 MOV AX,VECT1 AX=__200H_____
MOV BX,VECT2 BX=_1202H______
三、简答题(每小题4分,共12分)
1.在8086/8088系统中,存储器是分段组织的,按各段实际长度定位。
已知(DS)=2150H,(CS)=2640H,(SS)=2250H,SP=100H,问题:
(1)数据段起始地址是多少
21500H
(2)计算数据段中最多可以存放多少个字节数据(要有具体计算式)22500H-21500H=1000H个字节数据
(3)代码段最多可以存放多少个字节程序代码(说明理由。
)64KB=64*1024=65536D=10000H字节代码
2.已知数据段定义如下:
DATA SEGMENT
ORG 100H
BUF DW ‘CD’, 1, 3 DUP(4, 2 DUP(8, 6));17个字
VRA DB 4AH
DATA ENDS
单独执行下列语句
LEA BX, BUF BX=_100H______
MOV CX, VRA-BUF CX=__22H___(用十六进制数表示)。
3.分别说明下列两组指令中两条指令操作的相同点和不同点
(1)SUB AX, BX CMP AX, BX (略)
(2)AND CX, DX TEST CX, DX(略)
四、程序分析题(每小题6分,共24分)
1. MOV AX, 9090H
SUB AX, 4AE0H
JC L1
JO L2
JMP L3
上述程序执行后AX=__45B0H_____,程序转向__L3__
2.假设寄存器AX=1234H,DX=0A000H
MOV BX, 0
MOV CX, BX
SUB CX, AX CX=0-1234H=0EDCCH CF=1
SBB BX, DX BX=0-0A000H-1=5FFFH
MOV AX, CX
MOV DX, BX
上述程序段执行后AX=_0EDCCH_ ,DX=_5FFFH_
程序功能是 : _______求0A0001234H这个32位数的相反数.(即NEG指令的功能)
3. BUF DB 45H, 68H, 7AH, 35H, 39H
MOV DI, OFFSET BUF
MOV CX, 5
MOV AL,‘a’
CLD
REP STOSB
该程序段执行后,BUF中的内容是_’aaaaa’_ ,方向标志DF=_0__
4.假设寄存器AX=5AH,CX=23H
MOV DL, 0
LOP: SUB AX, CX ax=37H,14H,0FFF1H(-0FH) cx=23H
JC NEXT
INC DL DL=1,2
JMP SHORT LOP
NEXT: ADD AX, CX AX=0FFF1+23H=14H
HLT
上述程序段执行后,AX=__14H__,DL=_2______
用数学表达式指明程序功能:____ (AX)-2*(CX)结果放在AX中.
五、程序填空题(每小题6分,共12分,每空格只能填一条指令)
1.下列程序段求数组FLD的平均值,结果在AL中。
请将程序填写完整(不考虑溢出)
FLD DW 10, -20, 30, -60, -71, 80, 79, 56
_______LEA SI, FLD
MOV CX, 8
XOR AX, AX
R1:_______ADD AX,[SI]
ADD SI, 2
LOOP R1
MOV CL, 8
IDIV CL
HLT
2.已知数据段DAT单元存放某一正数N(0≦N<6)下面的程序段用查表法求数N的平方值,结果送SQR单元,请将程序填写完整。
(注:原题有问题,已改)
TABLE DB 0, 1, 4, 9, 16, 25
DAT DB N
SQR DB ?
LEA BX, TABLE
MOV AL, DAT
_______CMP AL,6
JGE NEXT
XLAT
_______ MOV SQR,AL
NEXT:HLT
六、程序设计题(第1小题6分,第2小题14分,共20分)
1.假设DATAX和DATAX+2单元存放双字P,DATAY和DATAY+2单元中存放双字Q,编程计算2P-Q,差在DX,AX中。
若OF=1,程序转OVERFLOW,否则转NOOVER.(只写与试题要求有关的指令语句)
2.已知在数据区BUF1和BUF2分别存放20个字节数据。
编程检查两数据区中的数据是否相同。
若完全一致,则将标志单元FLAG置FFH,否则置0,并将第一次出现的不同数据的地址分别存放在ADDR1和ADDR2单元中。
要求:源程序格式完整。