汇编语言试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2010-2011 汇编语言程序设计期末试卷A 卷
一、填空题(每空 1 分,共计10 分)
1.“MOV AX,0”可寄存器AX 清0。

另外再写出三条可使寄存器AX 清0 的指令。

(1)
(2)
(3)
2.标号可以有两种类型属性。

它们是___ 和。

3.程序设计的三种基本结构是:、、。

4.分别用一条语句实现下述指明的功能
(1)双字变量DWVAR 存放的地址指针送ES 和SI。


(2)地址表达式VAR[4]的偏移地址送字变量ADDR 。


二、判断下列指令的正确性。

如果错误,请指出错误的原因。

(每题1 分,共计10 分)
(1)MOV CX,DL
(2)XCHG [SI] ,3
(3)MOV AX, BX+3
(4)POP CS
(5)SHL AX, CX
(6)MUL 16
(7)AND 7FFFH,AX
(8)MOV CS,AX
(9)SUB [SI] ,[DI]
(10)MOV [SI], 20H
三、简答题(每题 5 分,共计20 分)
1.简述指令AND 和TEST 、NOT 和NEG 之间的区别?
2.简述段内转移和段间转移的区别?
3.存储器寻址方式可分为哪几种?存储单元的有效地址有什么意义?
4.REP 前缀的作用是什么?能否用指令REP LODSB 读取DS:SI 所指内存中的每个字符来进行处理?若不能,试说明原因。

四、指令分析题(每题10 分,共计20 分)
1.下列程序段中,各指令执行后AX 、CF、OF、ZF 和SF 的内容如何变化。

MOV AX, 0
DEC AX
NOT AX
AND AX, 0FFFFH
CMP AX, 0FFFFH
SUB AX, 1200H
MOV CL , 5
SAR AX, 1
SAR AX, CL
ADD AX, 0FFFFH
NEG AX
2.假设各寄存器及物理地址中的内容如下,(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,指出各条指令源操作数的寻址方式,以及完成后AX 寄存器中的内容
(1)MOV AX,1200H
(2)MOV AX,BX
(3) MOV AX,[1200H]
(4)MOV AX,[BX]
(5)MOV AX,1100H[BX]
(6)MOV AX,[BX][SI]
(7)MOV AX,1100H[BX][SI]
五、程序分析题(每题 5 分,共计20 分)
1.下列程序段运行后,Y 单元开始的存储区存放的数据是什么?
X DB 78H
Y DB 3 DUP(?)

LEA SI, Y
MOV CX, 3
MOV AL, X
LP: SAR AL, 1
MOV [SI], AL
INC SI
LOOP LP
2.分析下列程序段的功能
OR DX, DX
JNS L1
NOT DX
NOT AX
ADD AX, 1
ADC DX, 0
L1:
3.下列程序片段完成什么功能,试采用堆栈的操作实现同样的功能。

XCHG AX,[SI]
XCHG AX,[DI]
XCHG AX,[SI]
4.下列程序段执行后, DAT2 的前5 个单元的内容是什么?
DAT1 DB ‘123456789’
DAT2 DB 10 DUP(?)

LEA SI, DAT1
LEA DI, DAT2
MOV CX, DAT2-DAT1
ADD SI, CX
DEC SI
LP: MOV AL, [SI]
MOV [DI], AL
DEC SI
INC DI
LOOP LP
HLT
六、程序设计题(每题10 分,共计20 分)
1.把下列C 语言的语句改写成等价的汇编语言程序段(不考虑运算过程中的溢出)
If(a<1 || b/4>10 && c%8==5 )
{ a = 20 + b++;
c = c << 2;
}
else {
a = 21 – (++c);
b--;
}
其中:变量a、b 和c 都是有符号的16 位整形(int)变量
2.编写程序完成求1+2+3+ …+N的累加和,直到累加和超过1000 为止。

统计被累加的自然数个数从CN 字单元,累加和送SUM 字单元。

2010-2011 汇编语言程序设计期末试卷A 卷参考答案
一、填空题(每空 1 分,共计10 分)
1.(1)XOR AX,AX
(2)AND AX, 0
(3)SUB AX, AX
2.NEAR, FAR
3.顺序结构、分支(条件选择)结构、循环结构
4.(1)LES SI,DWVAR
(2)MOV ADDR, OFFSET VAR[4]
二、判断下列指令的正确性。

如果错误,请指出错误所在(每题 1 分,共计10 分)
(1)错误!寄存器大小不一致
(2)错误!不能与立即数进行交换
(3)错误!表达式错误
(4)错误!POP 指令的对象不能是CS,PUSH 可以
(5)错误!第二个操作数,表示移动次数。

可以使用CL,但不能是CX (6)错误!乘法指令操作数不可以使用立即数
(7)错误!立即数不能是目的操作数
(8)错误!代码段寄存器CS 不能为目的操作数
(9)错误!如果指令的操作数有两个,只能有一个是存储器操作数
(10)错误!必须说明目的操作数数据存储类型
三、简答题(每题 5 分,共计20 分)
1.简述指令AND 和TEST 、NOT 和NEG 之间的区别?
答:
TEST 检测位指令把两个操作数进行逻辑“与”(AND)运算,并根运算结果设置相应的标志位。

TEST 指令并不保存该运算结据果,不会改变指令中的操作数。

与AND 在运算结果的处理上有不同。

NEG 求补指令,功能相当于“操作数=0-操作数”,即改变操作数的正、负号。

NOT 是逻辑非运算,作用是将操作数按位求反。

2.简述段内转移和段间转移的区别?
答:
段间转移和段内转移的本质区别是有没有对CS 进行设置,如果设置了新的CS 代码寄存器,程序将转移到另一个段中,即实现了段间转移;
否则CS 和原来一致,则在同一代码段中。

3.存储器寻址方式可分为哪几种?存储单元的有效地址有什么意义?
答:
存储器寻址方式可分为7 种:
(1)立即寻址;
(2)直接寻址;
(3)寄存器寻址;
(4)寄存器间接寻址;
(5)寄存器相对寻址;
(6)基址加变址寻址;
(7)相对基址加变址寻址;
存储器的有效地址是一个16 位的无符号数;用来表示存储单元的地址与所在段的起始地址的差值,又称称偏移地址(Offset )。

4.REP 前缀的作用是什么?能否用指令REP LODSB 读取DS:SI 所指内存中的每个字符来进行处理?若不能,试说明原因。

答:
REP 是重复前缀指令,其作用是重复其后字符串操作指令,重复次数由CX 决定。

采用REP LODSB 虽然可以读取DS :SI 所指内存中的一连串字符,但是由于其他指令无法处理取出的所有数据。

指令结束后留在AL 中的仅为最后一个取出的字符的ASCII 码。

四、指令分析题(每题10 分,共计20 分)
1. 下列程序段中,各指令执行后AX、CF、ZF 和SF 的内容如何变化。

MOV AX, 0
DEC AX
NOT AX
AND AX, 0FFFFH CMP AX, 0FFFFH SUB AX, 1200H
MOV CL , 5
SAR AX, 1
SAR AX, CL ADD AX, 0FFFFH NEG AX (1)(AX) =0, CF 、ZF、SF 无影响
(2)(AX)=0FFFFH, CF 无影响, ZF=0, SF=1 (3)(AX)=0, CF 无影响, ZF=0, SF=1 (4)(AX)=0, CF=0, ZF=1 ,SF=0
(5)(AX)=0, CF=1, ZF=0, SF=0
(6)(AX)=0EE00H, CF=1, ZF=0, SF=1
(7)(AX)=0F700H, CF=0, ZF=0, SF=1
(8)(AX)=0FFB8H, CF=0, ZF=0, SF=1
(9)(AX)=0FFB7H, CF=1, ZF=0, SF=1 (10)(AX)=0049H, CF=1, ZF=0, SF=0
2. (1)立即寻址方式(AX)=1200H
(2)寄存器寻址,(AX )=0100H
(3)直接寻址,(AX)=4C2AH (4)
寄存器间接寻址,(AX)=3412H
(5)寄存器相对寻址,(AX)=4C2AH
(6)基址加变址寻址,(AX)=7856H
(7)相对基址加变址寻址,(AX)=65B7H
五、程序分析题(每题 5 分,共计20 分)
1.3CH ,1EH ,0FH
2.对 32 位数(高位在 DX,低位在AX)求补(绝对值)
3.程序实现 [SI]和[DI]中的内容交换; AX 中内容不变;
堆栈操作指令完成同样功能,如下所示:
PUSH [SI]
PUSH [DI]
POP [SI]
POP [DI]
4. 39H,38H,37H,36H,35H 。

(数字‘98765 ’对应的 ASCII 码)
六、程序设计题(每题10 分,共计20 分)
1.参考程序
A DW ?
B DW ?
C DW ?

MOV B X, B
MOV C L, 2
SAR BX, CL
MOV CX, C
AND CX, 0007H
CMP BX, 10
JBE NEXT1
CMP CX, 5
JNE NEXT1 NEXT2:
MOV BX, B
MOV AX, 20
ADD AX, BX
MOV A, AX
INC BX
MOV B, BX
MOV CX, C
SAL, CX, 1
SAL, CX, 1
MOV C, CX
JMP NEXT3 NEXT1:
MOV AX, A
CMP AX, 1
JB NEXT2 ; 计算B/4,结果存在BX 中
; 计算C%8,结果存在CX 中
; (A<1||B/4>10&&C%8==5 )计算为真
MOV C X, C ; (A<1||B/4>10&&C%8==5 )计算为假INC CX
MOV C, CX
MOV AX, 21
SUB AX, CX
MOV A, AX
MOV BX, B
DEC BX
MOV B, B X
NEXT3:

2.参考程序
DATA SEGMENT
SUM DW ?
N DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DA TA
START:
MOV AX, DATA
MOV DS, AX
MOV AX, 0
MOV BX, 0
LP: INC BX
ADD AX, BX
CMP AX, 1000
JBE LP
MOV SUM, AX
MOV N, BX
MOV AH, 4CH
INT 21H
CODE ENDS
END START。

相关文档
最新文档