华东交通大学2013—2014学年第二学期考试卷
参考答案与评分标准(A)卷课程名称:汇编语言程序设计(A)课程类别:必、限、任
一、选择题(每题2分,共20分)
1.在计算机中,带符号数都是用( B )表示。
A)原码B)补码C)反码D)ASCII码
2.以下关于指令指针寄存器IP的说法不正确的是( C )
A)IP是16位寄存器B)IP的内容由微处理器自动设置
C)程序可以直接访问IP D)程序可以改变IP的内容
3.CPU发出的访问存储器的地址是( A )
A)物理地址B)偏移地址C)逻辑地址D)段地址
4.以下关于汇编语言伪指令的说法中,不正确的是( B )
A)当$在指令中表示本条指令的第一个字节地址
B)EQU与=的使用相同
C)指令中操作数类型不匹配时,可以使用PTR属性操作符
D)ASSUME只是通知汇编程序有关段寄存器与逻辑段的关系,并没有给段寄存器赋予实际的初值。5.在8086/8088中,一个最基本的总线周期由( D )个时钟周期组成。
A)1 B)2 C)6 D)4
6.已知data是数据段名,下列指令中语法错误的是( D )
A)MOV BX,seg data B)MOV AX,data C)MOV BX,data D)MOV ES,data
7.关于DEBUG调试命令的说法中,不正确的是( C )
A)-U是反汇编命令B)-R是显示当前寄存器内容的命令
C)-D是显示代码段内容的命令D)-T是单步执行命令
8.下列关于存储单元的描述正确的是( A )。
A)存储空间地址按字节组织B)存储空间地址按字组织
C)存储空间地址按双字组织D)存储空间地址按四字组织
9.下面指令执行后,改变AL寄存器内容的指令是( D )。
A)TEST AL,02H B)OR AL,AL C)CMP AL,BL D)AND AL,BL
10.中断向量是( A )。
A)中断服务程序的入口地址B)中断的返回地址
C)存放中断服务程序入口地址内存单元的地址D)保护断点的堆栈区堆栈区地址
二、简单填空题(每题2分,共20分)
1.8086微处理器由总线接口部件和执行部件组成,其内部寄存器均为16 位。
2.当用户需要访问某个从偶地址开始的字时只需一次访问存储器,而当用户需要访问某个从奇地址开始的字时则需要二次访问存储器,所以为加快运行速度,字的存放采用偶地址开始的形式。
3.汇编语言的操作数有三种类型分别是:立即数操作数,寄存器操作数和存储器操作数。
4.8086系统内存按字节划分存储单元,每个存储单元有个唯一的编号称为该单元的物理地址,当一个大于8位的数据要在内存存放时,数据的存放规则是:高字节放在高地址单元,低字节放在低地址单元。5.可屏蔽中断请求的中断响应时,CPU需发出 2 个中断应答信号INTA#用于获取中断类型号,找
到被响应中断源的中断服务程序的入口地址。
三、判断改错题(每小题1分,共10分)
1.判断下表中数据传送指令的正误。(T表示正确,F表示错误)
2
数据
段中已有定义如下:
DA1 DB 12H,34H
DA2 DW 56H,78H
判断右表中语句中操作数类型是否匹配。
(Y表示匹配,N表示不匹配)
四、写出完成下列操作的指令(每题2分,共10分)
1.用一条逻辑指令使AX寄存器清0。
AND AX,00H / XOR AX,AX
2.用一条逻辑指令使CX寄存器的低4位置1,其余位不变。
OR CX,0FH
3.用一条逻辑指令使BX寄存器的低4位求反,其余位不变。
XOR BX,0FH
4.用移位指令实现无符号数AX乘8。
MOV CL,3
SHL AX,CL
5.将AX寄存器中的有符号数,除以BX寄存器中的有符号数。
CWD
IDIV BX
五、程序填空题(每题2分,共20分)(思路正确酌情给分)
1.设数据段定义如下:(备注:大写字母‘A’的ASCII码值为41H)
DA TA SEGMENT
A DW 1,2,3
B DB ‘ABCDEF’
C DW ‘AB’
D DB 12H,34H,56H
E DW $+5
DA TA ENDS
请回答:(1)“MOV AX,C”执行后,AX= 4142 H。
(2)“MOV AX,E”执行后,AX= 0016 H。
(3)用一条指令将B字符串中的字母“E”送AL:MOV AL,B+4
(4)用一条指令将D变量中的第2、3个字节内容送AX:MOV AX,WORD PTR D+1
(5)用一条指令将A变量中的第3字节送AL:MOV AL, BYTE PTR A+2
2.某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).
试在空白处填上适当的一条指令。
STRING DB‘COMPUTER’,‘$’
┇
MOV BX,0FFSET STRING
LOP:MOV DL,[BX]
MOV AH,02H
INT 21H
INC BX
CMP BYTE PTR [BX],‘$’
JNE LOP
3.分析下列程序,回答问题。
DA TA SEGMENT
A D
B 36H
B DB 0DH,0AH,'NUM='
C DB 4 DUP(0)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DA TA
MOV DS,AX
MOV BL,A
LEA SI,C
MOV CH,2
MOV CL,4
NEXT: ROR BL,CL
MOV AL,BL
AND AL,0FH
CMP AL,9
JNA N
ADD AL,7
N: ADD AL,30H
MOV [SI],AL
INC SI
DEC CH
JNZ NEXT
MOV BYTE PTR[SI],'H'
INC SI
MOV BYTE PTR[SI],'$'
LEA DX,B
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
请回答:(1)该程序的功能是:将A字节变量的数转换成两位十六进制的ASCII码送C中保存,并在显示器上显示从B变量开始的字符串“NUM=36H”。
(2)该程序中指令“ROR B L,CL”的作用是:将BL寄存器中待转换的数的高4位移到低4位中,以便先转换高4位数。
六、程序设计题(共20分)(设计思路正确酌情给分)
编程实现:把数据段BUFF区中各字符的排列顺序颠倒后放回原BUFF区,已知数据段定义如下。
DA TA SEGMENT
BUFF DB 'COMPUTERHFJHSKFSJOVTJWORD'
COUNT EQU $-BUFF
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX, DA TA
MOV DS,AX
MOV SI, OFFSET BUFF
MOV CX,COUNT
MOV DI,SI
ADD DI,CX
SUB DI,1
MOV AX,CX
MOV DX,0
MOV BX,2
DIV BX
MOV CX,AX LAB: MOV AL,[SI]
MOV AH,[DI]
MOV [SI],AH
MOV [DI],AL
INC SI
DEC DI
LOOP LAB
MOV AH, 4CH
INT 21H CODE ENDS
END START