?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? :??期??日??核??审?? ?? ?? ?? ?? ?? ?? ?? ?? ?线 ?? :?:??名??签??人??核??审?? ? 订 ? ?? ?? ?? ?? ?? ?? :??期??日?装卷??制?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??:??名??签??人??卷??制?? ?? ?? ?? ? ? 说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。
湘潭大学2011年上 学期2009级《汇编语言程序设计》课程考试试卷 (A1卷) 适用年级专业 计算机科学技术、网络工程 考试方式: 闭卷 考试时间 120 分钟 学院 专业 班级 学号 姓名 题 号 一 二 三 四 五 六 七 八 总分 阅卷 教师 得 分 ?????????????????????????????????????????? 得 一、判断题(每小题1分,共10分) 分 以下每小题给出了一个关于X86汇编语言/汇编语言程序设计的说法/提法,请判定其正确性。正确的,记“√”;否则,记“×”。记于题后的括号中。 1. 在X86汇编语言中,ifb语句检测“形参”的内容是否为一个指定字符串。( F ) 2.在X86汇编语言中,ifdif 语句检测一个“形参”是否有对应的“实参”。( F ) 3. 在X86汇编语言中,条件伪指令语句可被用在一条宏指令的宏定义体中。( T ) 4. 在X86汇编语言中,“重复块”可以出现在一条宏指令的宏定义体中。( T ) 5. 在X86汇编语言中,宏指令的定义不能出现另一条宏指令的宏定义体中。( F ) 6. 在X86汇编语言中,“重复块”都是以伪指令语句ENDS结束的。( F )ENDM 7. 在汇编语言程序中使用结构数据,必须先用STRUC语句说明结构类型。( T ) 8. 在汇编语言程序中使用记录数据,必须先用RECORD语句说明记录类型。( T ) 9. 在定义一个过程时,若不指定过程类型,则过程为 FAR 类型的过程。( F ) 10. 要使一个汇编语言的过程能被高级语言程序调用,其过程类型必须为FAR。( T ) 得 二、选择题(每小题2 分,共 20 分) 分 以下各题中,每题含 4 个选项,其中仅有一个是正确答案,请将正确答案 对应选项的符号(A、B、C或D)记于题后的括号中。 1. 要通过指针访问一个结构数据的成员数据,正确的地址描述形式应当是:( A )。 A. [ BX ]. <成员数据名〉 B. [ BX ].<结构数据名〉. <成员数据名> C. <指向结构的指针变量>. <成员数据名〉 D. <结构数据名〉. <成员数据名〉 2. 要获得记录LOUR的字段ABC的屏蔽字,正确的汇编语言语句应当是:( A)。 A. MOV SI, MASK ABC B. MOV SI, MASK LOUR.ABC C. MOV SI, MASK LOUR D. MOV MASK ABC, SI[LOUR]
(第 1 页 共 8 页)
说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。
3. 要获得记录LOUR的字段ABC的“宽度”,正确的汇编语言语句应当是:( B )。 A. MOV AL, WIDTH LOUR.ABC B. MOV AL, WIDTH ABC C. MOV AL, WIDTH LOUR D. MOV WIDTH ABC, AL.LOUR 4. 求将记录LOUR的字段ABC移到数据字最右端的移位次数的语句应当是( B )。 A. MOV CL, LOUR.ABC B. MOV CL, ABC C. MOV CL, LOUR D. LOUR.ABC, CL 5. 定义汇编语言过程ASCTODT 为“远过程”的汇编语言语句应当是:( C )。 A. ASCTODT MACRO FAR B. ASCTODT MACRO NEAR C. ASCTODT PROC FAR D. ASCTODT PROC NEAR 6. 复制一个字符串MEAS 到字符串NEAS的汇编语言语句应当是:( C )。 A. REPT MOVS NEAS, MEAS B. REP COPY NEAS, MEAS C. REP MOVS NEAS, MEAS D. REP XCHG NEAS, MEAS 7. 比较两个字符串MEAS 和NEAS的汇编语言语句应当是:( D )。 A. SREP CMPS NEAS, MEAS B. LOOP CMPS NEAS, MEAS C. REPT CMPS NEAS, MEAS D. REPZ CMPS NEAS, MEAS 8. 在下列指令助记符中,正确的“十进制除法调整”指令的助记符是:( D )。 A. DAV B. AVD C. DAA D. AAD 9. 在下列汇编语言的指令语句中,正确的汇编语言指令语句应当是: ( A )。 A. ADD AX, WORD PTR [BX] B. ADD [AX], WORD PTR [BX] C. ADD AX, DW PTR [BX] D. ADD AX, BYTE PTR [BX] 10. 在下列汇编语言的指令语句中,正确的汇编语言指令语句应当是:( A )。 A. XCHG DS, AX B. XCHG WORD PTR [BX], AX C. XCHG WORD PTR [BX], [AX] D. XCHG DL, AX 三、填空题(每空1 分,共20分) 得 根据题意在下列各题的括号内填入正确的内容。要求:字迹清晰、工整;用分 语准确。 1. 在X86汇编语言中,3个串操作指令的重复前缀分别是( REP )、( RERZ )和( REPNE )。 2. X86微处理器中,属于“通用寄存器” 的4个16位“数据寄存器”的符号名分别是( AX )、( BX )、( CX )和( DX )。 3. X86微处理器中,存储器操作数的“寻址方式”可有( 直接 )、(寄存器相对 )、( 寄存器间接寻址 )、( 基址变址寻址 )和( 相对基址变址 )等5种。 4. 为了简化循环程序的实现,在x86系列机中,设置了4条“循环指令”,它们的助记符分别为( LOOP )、( LOOPZ )、( LOOPNZ )和( JCXZ )。 5. 在8086微处理器中,代码段寄存器、数据段寄存器、堆栈段寄存器和附加段寄存器的符号名分别对应的是( CS )、( DS )、( SS )和( ES )。
(第 2 页 共 8 页)
说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。
得 分 四、计算题(每小题4分,共20分) 以下各题的每题给出了一个程序片断,请按要求在相应的括号内填入计算机执行程序的相应结果。 1. 程序片断1: ?? MOV AX, 4567H ADD AL,AH ;(OF = 1 ,SF = 1 ) DAA ;(AL = 02H /12H ,CF = 0 /1 ) ?? 2. 程序片断2: ?? MOV AX, 3938H ADD AL, 38H ;(AF = 1 , PF = 0 ) AAA ;(AH = 3AH , AL = 06H ) ?? 3. 程序片断3: ?? MOV AX, 3034H STC SBB AL, 37 H ;(AL = 0FCH , AF = 1 ) AAS ;(AL = 06H , AH = 2FH ) ?? 4. 程序片断4: ?? MOV AX, 57A8H AND AL, AH ;(ZF = 1 , AL = 00H ) MOV CL, AL INC CL SAR AH, CL ;(CF = 1 , AH = 2BH ) ?? 5. 程序片断5: ?? MOV AX, 0A857H XOR AH, AL :(PF = 1 , AH = 0FFH ) MOV CL, AH INC CL INC CL RCL AL, CL ;(CF = 1 /0 , AL = 2CH /0AEH ) ??
(第 3 页 共 8 页)
说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。
五、程序填空题(共10分) 下面程序的功能是将数据缓冲区中的一组未组合格式(非压缩格式)BCD码十进制数进行累加,显示结果,并将结果保存在指定的结果单元中。 问题:程序中留有若干空缺,请将其填补上,实现程序功能。 ;数据段 LENDATA EQU 8 DSEG SEGEMENT operand DB 35H,38H,37H,32H,34H,39H,35H,36H result DW ? MESS DB “Result = ” MESA DB 2 DUP(0) ;(2分) MESB DB 0D, 0A, 24H DSEG ENDS ;代码段 CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG BEGIN:MOV AX, DSEG ;为进行累加作准备 MOV DS, AX MOV BX, OFFSET OPERAND ;( 3 分 ) XOR AX, AX MOV CX, LENDATA PRG1 ADD AL, [ BX ] ;产生累加结果 INC BX AAA XCHG AH, AL ADC AL, 0 ;(3 分) AAA XCHG AH, AL LOOP PRG1 MOV BYTE PTR result, AH ;保存结果 MOV BYTE PTR result +1, AL MOV DI, OFFSET MESA ;变换结果为ASCII码串 MOV DX, DI ADD AH, 30H MOV [ DI ], AH INC DI ;(2分) ADD AL, 30H MOV [ DI ], AL MOV AH, 9 ;显示结果 INT 21H MOV AX, 4C00H ;返回DOS INT 21H CSEG ENDS END BEGIN 得 分
(第 4 页 共 8 页)
说明: 本试卷将作为样卷直接制版胶印,请命题教师在试题之间留足答题空间。
六、程序改错题(10分) 以下程序中存在若干错误。请将错误所在划线指出,并将正确的结果写在相应代码行的后面(在本代码行中)。若误将正确代码行(或其成分)划线,则每错划一处扣1分,直至本题得分为0止(能正确标识错误则记1分/错)。 ;程序功能:将输入数字串转换为无符号的二进制字数据 PARM STRUC PBREG DW ? RETADR DW ? DD OFFIDS DW ? SEGIDS DW ? PARM ENDS ; VIDSTOUW PROC FAR PUSH SP BP MOV BP, SP PUSH DS PUSH SI PUSH BX PUSH DX PUSH CX MOV DS, [ BP ].SEGIDS MOV SI, [ BP ].OFFIDS MOV CL, [ SI + 1 ] ADD SI, 1 2 MOV BX, 10 MOV AL, [ SI ] XOR AH, AH AND AL, 0FFH 0F DEC CL PRG1:OR CL, CL JZ PRG2 INC SI MUL BX MOV DX, AX MOV AL, [ SI ] AND AL, 0FH ADD AL, DL ADD AH, DH ADC DH, 0 DEC CL JMP PRG1 PRG2:POP CX POP DX POP BX POP SI 得 分
(第 5 页 共 8 页)