计算机学院2011-2012学年第二学期《汇编语言程序设计》考试草稿纸
计算机学院2011-2012学年第二学期
《汇编语言程序设计》考试试卷(A卷)及参考答案
闭卷 考试时间: 2012年5月5日
专业 班级 学号 学生姓名 题号 一 二 三 四 五 六 七 八 总分 核对人 10 10 10 10 20 10 10 20 100 题分 得分 得 分 评卷人
一、改错。(每个小题中只能对一个操作数进行修改。共10分,每小题1分)
;XOR AX, [BX]
;CMP WORD PTR [EDX], 80H ;JMP WORD PTR [BX] ;SUB AX, BP ;MOV CX, 1234H ;PUSH AX
;MOV DX, 255H / IN AL, DX ;SUB BP, 125 ;ADD DI, [EAX] ;MOV AX, CS
1.XOR AX, [CX] 2. CMP [EDX], 80H
3. JMP WORD PTR [BL] 4.SUB EAX, BP 5.MOV CL, 1234H 6. PUSH AL
7. IN AL, 255H 8. SUB 125, BP
9. ADD [DI], DWORD PTR [EAX] 10. MOV CS, AX 得 分 评卷人
二、填空 (共10分,每空1分)
1. 设(CS)=1000H,(DS)=2000H,(SS)=3000H,(DI)=0300H, (IP)=0100H,(20300H)=50H,(20301H)=01H,(20302H)=00H,(20303H)=50H。 实方式下, 指令“ JMP WORD PTR [DI] ”转向
的物理地址是 10150H ,它是一条 段内 转移指令。
2. 依次执行
XOR EAX, EAX DEC AL DEC AL
MOVSX EAX, AL ; 将(AL)的最高位扩展并送入目的操作数地址中
计算机学院2011-2012学年第二学期《汇编语言程序设计》考试草稿纸
ADD EAX, 3
执行完后, (AX)= 0001H CF = 1 ZF = 0 SF = 0
3. 下列指令序列执行前, (EAX)=0FFFFA015H,(EBX)=1000H。执行下列指令序列
XOR EDX,EDX IDIV EBX IMUL BX
则执行后:
(EDX)= 0000FFFFH , (EAX)= 000FA000H , 对于上述最后一条乘指令,如果乘积的高位不是低位的符号扩展,则CF=1、OF= 1 ,而SF、ZF、AF和PF标志位 未定义 。
三、简答题(共10分)
1. 简述实方式下新增一个中断处理程序的主要步骤。(4分)
得 分 评卷人 (1) 编制新的中断处理程序。
(2) 获取中断号m。若是硬件中断则有相应的中断号,否则查找一个空闲的中断号。 (3) 将新的中断处理程序装入内存或驻留内存,将新的中断处理程序的偏移地址和段地址保存到物理地址4*m和4*m+2处。
2. 设有 (AX)=1000H,执行下列子程序:
TRY PROC NEAR PUSH AX RET TRY ENDP
请画出上述每条指令执行后堆栈示意图,并指出执行该子程序后 IP中的内容为多少?(3分)
00H 10H XXXX XXXX PUSH AX
(SP) (SP)+1
XXXX XXXX
(SP) (SP)+1
RET, 子程序返回后(IP)=1000H
计算机学院2011-2012学年第二学期《汇编语言程序设计》考试草稿纸
3. 基于窗口的应用程序中,窗口消息处理程序主要完成什么功能?(3分)
Windows系统中,每个基于窗口的应用程序都有消息处理程序。窗口主程序不断地从该应用程序的消息队列中检测消息,若检测到消息,则通知操作系统调用该窗口的消息处理程序去处理该消息。
得 分 评卷人
四、数据段定义如下,按要求回答问题。(共10分)
BUFA A BUFB
0DH 0AH 25 00 06H 00H ‘B’ ‘U’ ‘F’ ‘B’ ‘$’ ‘$’ 偏移地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH
DATA SEGMENT USE16 BUFA DB 0DH,0AH A DW 25, BUFB Alen EQU $ - A
BUFB DB ‘BUFB’,2 DUP (‘$’) DATA ENDS
1、 以字节为单位画出它们在存储单元中的存放形式, 在图中标明各变量的偏移地址值。(6分)
2、Alen的值是多少?(1分)
Alen = 6
3、执行下列语句后,屏幕上会显示什么?(3分)
MOV AX,DATA
MOV DS,AX MOV DX,[A+2] MOV AH, 9 INT 21H
显示:BUFB
得 分 评卷人
五、程序填空(共20分,每空2分)
1. 下列程序输入两个串, 比较两个串是否相同, 相同则显示”equal”, 否则显示”not equal”。 .386
计算机学院2011-2012学年第二学期《汇编语言程序设计》考试草稿纸
IO MACRO A, B LEA DX, B MOV AH, A INT 21H ENDM DATA SEGMENT USE16 STR3 DB 'EQUAL!', 0DH, 0AH,'$' STR4 DB 'NOT EQUAL!', 0DH, 0AH,'$' BUF1 DB 80,0,80 DUP(0) BUF2 DB 80,0,80 DUP(0) DATA ENDS CODE SEGMENT USE16 ASSUME CS: CODE, DS: DATA START: MOV AX, DATA
MOV DS, AX
IO 10,BUF1 IO 10,BUF2
MOV AL, BUF1+1 MOV AH, BUF2+1 CMP AL, AH JNE NOTEQUAL LEA SI, BUF1+2 LEA DI, BUF2+2 MOVZX CX, AL AGAIN: MOV AL,[SI] CMP AL,[DI] JNE NOTEQUAL INC SI INC DI LOOP AGAIN IO 9, STR3 QUIT: MOV AH, 4CH INT 21H NOTEQUAL:
IO 9, STR4
JMP QUIT CODE ENDS END START
计算机学院2011-2012学年第二学期《汇编语言程序设计》考试草稿纸
2. 下列子程序F2T10将EAX中的有符号数以十进制形式在显示器上输出。
;调用子程序名:RADIX .386
DATA SEGMENT USE16
BUF DB 12 DUP(?) DATA ENDS ... F2T10 PROC
PUSH EBX
PUSH SI LEA SI,BUF B: OR EAX, EAX JNS PLUS
NEG EAX
MOV BYTE PTR [SI],’-’ INC SI
PLUS: MOV EBX, 10 CALL RADIX
MOV BYTE PTR [SI],’$’ LEA DX, BUF MOV AH, 9 INT 21H POP SI
POP EBX RET F2T10 ENDP
RADIX PROC
; 入口参数:EAX——存放待转换的32位无符号二进制数 ; EBX——存放要转换数制的基数
; SI——存放转换后的指定进制数的ASCII码数字串的字节缓冲区首址 ;输出参数: SI——指向字节缓冲区中最后一个ASCII码的下一个字节处
... RADIX ENDP