20042005学年(下)学期《汇编语言程序设计》试卷(A卷)和答案

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

华南师范大学
计算机学院2004/2005学年(下)学期期末试卷
《汇编语言程序设计》试卷(A卷)
专业____________年级 04级本班级_______姓名________学号_______
(要求:前四题直接写在试卷上)
一、填空题:(每小题2分,共10分)
1.数-27的补码表示是__11100101____(8位),扩展到16位为
__1111111111100101_。

2.一个字5678H存到地址[1234H]单元中,则56H存放在 1235H 单元,78H存放在 1234H 单元。

3.堆栈的栈顶由堆栈指针寄存器指出,非栈顶字由基址指针寄存器指出。

4.编程用的操作数有立即数、寄存器操作数、内存操作数。

5.中断向量是中断子程序的入口,中断向量表是计算机中断服务程序中的一个向量表,它纪录着全部的中断向量
二、改错题(每小题2分,共20分)
(在不改变原题意的前提下,在试卷上画出每小题的错误之处,并在右边予以改正。


1.MOV CX,SEG DATA
MOV ES,CX
MOV DS,ES MOV DS,CX
2.B DW 100
MOV AL,B MOV AX,B
3.MOV DI,30H
MOV [DI],16H MOV WORD PTR [DI],16H
4.MOV AX,BX,
IN AX,BX IN AX,DX
5.ADD SI,BX ADD AL,BL
DAA
6.MOV DX,30
SUB [DX],CX SUB WORD PTR [DX],CX
7.PUSH AL PUSH AX
8.MOV BX,16
MOV AL,256 MOV AX,256
9.INC AX,1 INC AX
10.ADD 80H,AL ADD AL,80H
IN 80H,AL IN AL,80H
三、阅读程序(根据题目要求写出结果每小题6分,共30分)(可以给指令另加注释,也可以不加。

)
1.下面程序的功能是什么?
MOV AX,X
CMP AX,Y
JGE LAB
XCHG AX,Y
LAB:MOV X,AX
选择X,Y中的较大值存入X中
2. 执行下列指令后AX、BX寄存器的内容?
MOV SI,10H
MOV AX,1234H
MOV [SI+12H],AX
LEA BX,[SI]
MOV [SI+14H],BX
LES BX,DWORD PTR [SI+12H] AX为1234H,BX为22H
3. 下面程序的功能是什么?MOV CH,4
LAB:MOV CL,4
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JL PRINT
ADD DL,7
PRINT:MOV AH,02
INT 21H
DEC CH
JNZ LAB
显示输出BX寄存器里的内容4. 下面程序的功能是什么?STRING DB 100 DUP(?) MOV AX,SEG STRING
MOV DS,AX
LEA SI,STRING
MOV CX,100
LAB: MOV AL,[SI]
CMP AL,’a’
JB LAB1
CMP AL,’z’
JA LAB1
SUB AL,32
MOV [SI],A
LAB1: INC SI
LOOP LAB
将STRING里的小写字母’a’-‘z’转成相应的大写字母’A’-‘Z’5. 下面程序的功能是什么?
MOV AX,SEG STRING
MOV DS,AX
LEA DX,STRING
MOV AH,0AH
INT 21H
XOR BX,BX
MOV CX,BX
MOV CL,STRING[1]
LEA SI,STRING[2]
MOV AL,’A’
LAB:CMP AL,[SI]
JNZ LAB1
INC BX
LAB1:INC SI
LOOP LAB
用BX记录输入缓冲区中有多少个字符‘A’
四、问答题(共10分)
1.简述上机运行汇编语言程序的过程。

(6分)
答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。

2.简述程序中指令和伪指令的区别。

(4分)
能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。

伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。

五、程序设计题(每小题15分,共30分)
1.编制完整程序实现下列算式:W=X+Y+36-Z。

设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。

DATA SEGMENT
X DD …
Y DD …
Z DD …
W DD…
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
ADD AX,Y
MOV BX,X+2
ADC BX,Y+2
ADD AX,36
ADC BX,0
SUB AX,Z
SBB BX,Z+2
MOV W,AX
MOV W+2,BX
CODE ENDS
END START
2.编制程序段实现:将AX寄存器中的16位二进制数分成四组,每组4位,然后把这4组数分别放在AL、BL、CL、和DL中。

MOV BH,AL
MOV CH,AH
MOV AL,AH
AND AL,0F0H
MOV BL,AH
AND BL,0FH
MOV CL,BH
AND CL,0F0H
MOV DL,BH
AND DL,0FH
六、附加题(10分,不计入总分,仅作参考)
在附加数据段中有一首址为ADDR的没有排序的字数组,数据的第一个字为数组长度,第二个字开始存放数组各元素,在KEY单元存放一个要删除的字数据。

要求编写一完整程序,在数组中查找该数,如果找到该数(可能有多个),将其从数组中删除,并修改数组的长度。

相关文档
最新文档