四川大学期末考试试题(闭卷)
(2013~2014学年第1学期)
课程号:304026020 课程名称: 汇编语言程序设计(A 卷)任课教师:唐宁九 李征 郑成明 张刚 吴仲光 余波 适用专业年级: 计算机科学与技术 2012级
学号:
姓名:
注意事项:1. 请务必将本人所在学院、姓名、学号、任课教师姓名等信息准确填写在试卷和答题纸上。
2. 考试结束,请将试卷和答题纸一并交给监考老师。
评阅教师
得分
一、单项选择题(本大题共20小题,每小题1分,共20分)提示:在每小题
列出的四个备选项中只有一个是符合题目要求的,请将题号与符合题目要求的代码填写在答题纸上。错选、多选或未选均无分
1. 以下哪一条指令一定会使SP 寄存器的内容减2?( B ) (A )SUB BP,2 (B )PUSHF (C )ADD SP,2 (D )POP AX 2. 以下哪一条指令一定会使CF 标志为0?( C )
(A )JC L1 (B )ADD AL,BL (C )CLC (D )CMP CL,AL
3. 以下哪一条指令一定会使ZF 标志为1?( C )and or xor test都会强制将cf of清零, af 不确定 af 不确定
(A )ADD BL,03H (B )STC (C )XOR CL,CL (D )JZ L2 4. 以下指令中,哪一条不影响标志位?( B )not 对标志位不影响 (A )NEG AL (B )NOT DL (C )XOR AL,05H (D )ADC AL,08H 5. 以下指令中,哪一条不影响CF 标志位?A
(A )JC L3 (B )NEG BL(求相反数) (C )SUB DL,77H (D )POPF 6. 以下指令中,使用了立即数寻址方式的是哪一条?( D )
(A )MOV AL,BL (B )ADD [BX],CL (C )AND [1200H],DL (D )SUB AX,0012H 7. 以下指令中,使用直接寻址方式的是哪一条?( B )
(A )MOV [BX],AX (B )AND [0102H],BL (C )NOP (D )MOV AX,0300H 8.以下指令中,使用变址分量进行寻址的是哪一条?( D )
(A )SBB [BP],CX (B )SUB BL,DL (C )MOV [0920H],DL (D )ADD [SI],AL
注:试题字迹务必清晰,书写工整。
本题5页,本页为第1页
9. 以下条件转移指令中,仅使用CF 标志位进行判断的是哪一条?( C ) (A )JZ L1 (B )JO L2 (C )JC L1 (D )JNZ L2
10.以下哪一条指令可以将AL 寄存器的低4位置1,但同时不影响高4位?( B ) (A )XOR AL,0FH (B )OR AL,0FH (C )AND AL,0FH (D )AND AL,0F0H 11. 假设(AL )=0FFH,执行INC AL指令后,CF = ( D )
(A )0 (B )1 (C )2 (D )与执行INC 指令前保持一致(dec inc不影响cf 标志位) 12. 假设(AL )= 01H,执行指令SUB AL,02H后,OF = ( A ) (A )0 (B )1 (C )不确定 (D )2
13. 假设(AL )= 05H,执行指令NEG AL后,(AL )= ( B ) (A )0FAH (B )0FBH (C )0FCH (D )0F5H
14. 假设(AL )= 32H,执行指令SUB AL,05H后,PF = ( B ) (A )0 (B )1 (C )2 (D )与执行SUB 指令前保持一致
15. 当CF=1时,以下哪一条指令会将程序流程转移至标号L1?( B ) (A )JNC L1 (B )JC L1 (C )JZ L1 (D )JNZ L1 16.假设(SP )=0048H,执行指令POP AX后,(SP )= ( C ) (A )0050H (B )0046H (C )004AH (D )0049H
17.假设(AL )=02H,AF=1,执行AAA 指令后,(AL )=( A ) (A )02H (B )0CH (C )08H (D )12H
18.假设(AL )=80H,执行指令DEC AL后,SF = ( A )dec inc 影响五个标志位,除了cf 位之外
(A )0 (B )1 (C )不确定 (D )与执行DEC 指令前一致 19. LOOP指令隐含使用如下哪一个寄存器作为计数器?( C ) (A )AX (B )BX (C )CX (D )DX
20. 假设(DS )=1000H,(BX )=0200H,对于指令MOV 0200H [BX],AL 的目的操作数, 其物理地址为如下哪一个?( C )
(A )00500H (B )23000H (C )10400H (D )14000H
评阅教师
得分
二、多项选择题(本大题共5小题,每小题2分,共10分)提示:在每小题列
出的五个备选项中有二个至五个是符合题目要求的,请将题号与符合题目要求的代码填写在答题纸上。错选、多选、少选或未选均无分。
1. 以下指令中,哪些要影响标志位?( ACD ) (A )MOV (B )PUSH (C )ADD (D )SBB (E )JA 2. 以下哪些指令会产生“不确定”的标志位?( CD ) (A )ADC (B )MOV (不影响标志位) (C )AND (D )OR (E )INC
注:试题字迹务必清晰,书写工整。
本题5页,本页为第2页
3. 假设(AL )= 25H,执行指令OR AL, 3AH后,以下结果中,正确的有哪些? ( ADE )
(A )(AL)=3FH (B )(AL )=2FH (C )CF = 1 (D )OF = 0 (E )PF = 1
4. 假设(AL )=01H,(CL )=04H,执行指令ROR AL,CL后,以下结果中,正确的有哪些? ( ACD )
(A )(AL )=10H (B )CF = 1 (C )PF = 0 (D )ZF = 0 (E )(AL )=80H
5. 以下哪些条件转移指令会使用OF 作为判断条件或判断条件的一部分?( ACDE ) (A )JC (B )JB (C )JG (D )JO (E )JL
评阅教师
得分
三、判断改错题(本大题共5小题,每小题4分,共20分)提示:下列各语句
可能有语法错误,判断各语句正确与否,对于错误的语句,需解释其错误的原因,对于正确的语句,若做出正确判断则给4分,对于错误的语句,做出正确判断给2分,做出正确的解释再给2分。
1.ADD AL 错误,ADD 为双操作指令,不能只带有一个操作数。
2.SUB AL,BX错误,AL 为八位通用寄存器,而BX 为16位寄存器,位数不同,不能进行运算 3. JZ BX 错误,条件跳转语句后面跟的是标号,不能跟寄存器。
4.PUSH 0239H 错误,PUSH 语句不能直接对立即数进行操作,应该通过寄存器做中转。 5. MOV DS, ES 错误,不能直接对两个段寄存器进传送类指令操作,应该通过通用寄存器来做中转。
评阅教师
得分
四、名词解释题(本大题共3小题,每小题4分,共12分)。提示:解释每
小题所给名词的含义,若解释正确则给分,若解释错误则无分,若解释不准确或不全面,则酌情扣分。
1. 有效地址 即偏移量,用于指示被访问内存单元距离段起始地址的字节距离。 2. BCD码 用四位二进制位来表示一个十进制数字的二进制编码形式。
3. ZF标志位 表示当前的操作运算结果是否为零,若为零,则ZF 标志位置1,否则,则ZF 标志位置0。
评阅教师
得分
五、程序分析题(本大题共3小题,每小题5分,共15分)。提示:每小题
给出了一个程序片段,请按各小题的要求分析程序片段的执行结果或功能,并在空白处
本题5页,本页为第3页
注:试题字迹务必清晰,书写工整。
填写分析结果,分析正确则按照每空后标注的分值给分,如果分析错误则该空不得分。
1. 有如下程序片段: MOV AL,73H MOV CX,04H XOR BH,BH L1: ROL AL,1
MOV BL,AL AND BL,01H ROL AL,1 AND BL,AL ADD BH,BL LOOP L1
执行该程序片段后,(BH )的十六进制形式为 02H (3分),PF = 0 (1分), OF = 0 (1分)
2. 有如下程序片段: MOV CX,5 XOR AH,AH L1: STC RCL AH,1 LOOP L1
执行该程序片段后,(AH )的十六进制形式为 0H (3分),OF = 0 (1分), CF = 0 (1分)
3. 有如下程序片段: MOV AL,92H MOV BL,02H
注:试题字迹务必清晰,书写工整。
本题5页,本页为第4页
01110011B
MOV BH,0 MOV CX,0008H LOP1: SHR AL,1 JNC L1 ADD BH,BL L1: LOOP LOP1 AND BH,0FH
执行该程序片段后,(BH )的十六进制形式为 (3分),
(CX )的十六进制形式为 (1分),(AL)的十六进制形式为 (1分)
评阅教师
得分
六、程序设计题(本大题共2小题,第1小题10分,第2小题13分,共23分)。提示:每小题给出了一个程序设计要求,请按照要求写出源程序代码,如果源
程序代码中出现语法错误或逻辑错误,则酌情扣分。
1.试编写一个子程序,入口参数要求通过堆栈传递,入口参数包括一个字节型带符号数数组的起始地址(偏移量)、数组长度(无符号数)。参数传递顺序:数组起始地址、数组长度。要求子程序统计数组中小于-3的数组元素数量,统计结果通过AL 寄存器作为出口参数传递。 注:仅编写子程序的源代码,不编写调用该子程序的主程序。
2. 编写一个完整程序,从键盘接收一个字符串(最大长度为20个字符),删除其中存在的‘A ’与 ‘B ’字符(大写字母),并在新行显示处理后的字符串。 例:输入DCABAABC ,则在新行应输出DCC
注:试题字迹务必清晰,书写工整。
本题5页,本页为第5页
四川大学期末考试试题(闭卷)
(2013~2014学年第1学期)
课程号:304026020 课程名称: 汇编语言程序设计(A 卷)任课教师:唐宁九 李征 郑成明 张刚 吴仲光 余波 适用专业年级: 计算机科学与技术 2012级
学号:
姓名:
注意事项:1. 请务必将本人所在学院、姓名、学号、任课教师姓名等信息准确填写在试卷和答题纸上。
2. 考试结束,请将试卷和答题纸一并交给监考老师。
评阅教师
得分
一、单项选择题(本大题共20小题,每小题1分,共20分)提示:在每小题
列出的四个备选项中只有一个是符合题目要求的,请将题号与符合题目要求的代码填写在答题纸上。错选、多选或未选均无分
1. 以下哪一条指令一定会使SP 寄存器的内容减2?( B ) (A )SUB BP,2 (B )PUSHF (C )ADD SP,2 (D )POP AX 2. 以下哪一条指令一定会使CF 标志为0?( C )
(A )JC L1 (B )ADD AL,BL (C )CLC (D )CMP CL,AL
3. 以下哪一条指令一定会使ZF 标志为1?( C )and or xor test都会强制将cf of清零, af 不确定 af 不确定
(A )ADD BL,03H (B )STC (C )XOR CL,CL (D )JZ L2 4. 以下指令中,哪一条不影响标志位?( B )not 对标志位不影响 (A )NEG AL (B )NOT DL (C )XOR AL,05H (D )ADC AL,08H 5. 以下指令中,哪一条不影响CF 标志位?A
(A )JC L3 (B )NEG BL(求相反数) (C )SUB DL,77H (D )POPF 6. 以下指令中,使用了立即数寻址方式的是哪一条?( D )
(A )MOV AL,BL (B )ADD [BX],CL (C )AND [1200H],DL (D )SUB AX,0012H 7. 以下指令中,使用直接寻址方式的是哪一条?( B )
(A )MOV [BX],AX (B )AND [0102H],BL (C )NOP (D )MOV AX,0300H 8.以下指令中,使用变址分量进行寻址的是哪一条?( D )
(A )SBB [BP],CX (B )SUB BL,DL (C )MOV [0920H],DL (D )ADD [SI],AL
注:试题字迹务必清晰,书写工整。
本题5页,本页为第1页
9. 以下条件转移指令中,仅使用CF 标志位进行判断的是哪一条?( C ) (A )JZ L1 (B )JO L2 (C )JC L1 (D )JNZ L2
10.以下哪一条指令可以将AL 寄存器的低4位置1,但同时不影响高4位?( B ) (A )XOR AL,0FH (B )OR AL,0FH (C )AND AL,0FH (D )AND AL,0F0H 11. 假设(AL )=0FFH,执行INC AL指令后,CF = ( D )
(A )0 (B )1 (C )2 (D )与执行INC 指令前保持一致(dec inc不影响cf 标志位) 12. 假设(AL )= 01H,执行指令SUB AL,02H后,OF = ( A ) (A )0 (B )1 (C )不确定 (D )2
13. 假设(AL )= 05H,执行指令NEG AL后,(AL )= ( B ) (A )0FAH (B )0FBH (C )0FCH (D )0F5H
14. 假设(AL )= 32H,执行指令SUB AL,05H后,PF = ( B ) (A )0 (B )1 (C )2 (D )与执行SUB 指令前保持一致
15. 当CF=1时,以下哪一条指令会将程序流程转移至标号L1?( B ) (A )JNC L1 (B )JC L1 (C )JZ L1 (D )JNZ L1 16.假设(SP )=0048H,执行指令POP AX后,(SP )= ( C ) (A )0050H (B )0046H (C )004AH (D )0049H
17.假设(AL )=02H,AF=1,执行AAA 指令后,(AL )=( A ) (A )02H (B )0CH (C )08H (D )12H
18.假设(AL )=80H,执行指令DEC AL后,SF = ( A )dec inc 影响五个标志位,除了cf 位之外
(A )0 (B )1 (C )不确定 (D )与执行DEC 指令前一致 19. LOOP指令隐含使用如下哪一个寄存器作为计数器?( C ) (A )AX (B )BX (C )CX (D )DX
20. 假设(DS )=1000H,(BX )=0200H,对于指令MOV 0200H [BX],AL 的目的操作数, 其物理地址为如下哪一个?( C )
(A )00500H (B )23000H (C )10400H (D )14000H
评阅教师
得分
二、多项选择题(本大题共5小题,每小题2分,共10分)提示:在每小题列
出的五个备选项中有二个至五个是符合题目要求的,请将题号与符合题目要求的代码填写在答题纸上。错选、多选、少选或未选均无分。
1. 以下指令中,哪些要影响标志位?( ACD ) (A )MOV (B )PUSH (C )ADD (D )SBB (E )JA 2. 以下哪些指令会产生“不确定”的标志位?( CD ) (A )ADC (B )MOV (不影响标志位) (C )AND (D )OR (E )INC
注:试题字迹务必清晰,书写工整。
本题5页,本页为第2页
3. 假设(AL )= 25H,执行指令OR AL, 3AH后,以下结果中,正确的有哪些? ( ADE )
(A )(AL)=3FH (B )(AL )=2FH (C )CF = 1 (D )OF = 0 (E )PF = 1
4. 假设(AL )=01H,(CL )=04H,执行指令ROR AL,CL后,以下结果中,正确的有哪些? ( ACD )
(A )(AL )=10H (B )CF = 1 (C )PF = 0 (D )ZF = 0 (E )(AL )=80H
5. 以下哪些条件转移指令会使用OF 作为判断条件或判断条件的一部分?( ACDE ) (A )JC (B )JB (C )JG (D )JO (E )JL
评阅教师
得分
三、判断改错题(本大题共5小题,每小题4分,共20分)提示:下列各语句
可能有语法错误,判断各语句正确与否,对于错误的语句,需解释其错误的原因,对于正确的语句,若做出正确判断则给4分,对于错误的语句,做出正确判断给2分,做出正确的解释再给2分。
1.ADD AL 错误,ADD 为双操作指令,不能只带有一个操作数。
2.SUB AL,BX错误,AL 为八位通用寄存器,而BX 为16位寄存器,位数不同,不能进行运算 3. JZ BX 错误,条件跳转语句后面跟的是标号,不能跟寄存器。
4.PUSH 0239H 错误,PUSH 语句不能直接对立即数进行操作,应该通过寄存器做中转。 5. MOV DS, ES 错误,不能直接对两个段寄存器进传送类指令操作,应该通过通用寄存器来做中转。
评阅教师
得分
四、名词解释题(本大题共3小题,每小题4分,共12分)。提示:解释每
小题所给名词的含义,若解释正确则给分,若解释错误则无分,若解释不准确或不全面,则酌情扣分。
1. 有效地址 即偏移量,用于指示被访问内存单元距离段起始地址的字节距离。 2. BCD码 用四位二进制位来表示一个十进制数字的二进制编码形式。
3. ZF标志位 表示当前的操作运算结果是否为零,若为零,则ZF 标志位置1,否则,则ZF 标志位置0。
评阅教师
得分
五、程序分析题(本大题共3小题,每小题5分,共15分)。提示:每小题
给出了一个程序片段,请按各小题的要求分析程序片段的执行结果或功能,并在空白处
本题5页,本页为第3页
注:试题字迹务必清晰,书写工整。
填写分析结果,分析正确则按照每空后标注的分值给分,如果分析错误则该空不得分。
1. 有如下程序片段: MOV AL,73H MOV CX,04H XOR BH,BH L1: ROL AL,1
MOV BL,AL AND BL,01H ROL AL,1 AND BL,AL ADD BH,BL LOOP L1
执行该程序片段后,(BH )的十六进制形式为 02H (3分),PF = 0 (1分), OF = 0 (1分)
2. 有如下程序片段: MOV CX,5 XOR AH,AH L1: STC RCL AH,1 LOOP L1
执行该程序片段后,(AH )的十六进制形式为 0H (3分),OF = 0 (1分), CF = 0 (1分)
3. 有如下程序片段: MOV AL,92H MOV BL,02H
注:试题字迹务必清晰,书写工整。
本题5页,本页为第4页
01110011B
MOV BH,0 MOV CX,0008H LOP1: SHR AL,1 JNC L1 ADD BH,BL L1: LOOP LOP1 AND BH,0FH
执行该程序片段后,(BH )的十六进制形式为 (3分),
(CX )的十六进制形式为 (1分),(AL)的十六进制形式为 (1分)
评阅教师
得分
六、程序设计题(本大题共2小题,第1小题10分,第2小题13分,共23分)。提示:每小题给出了一个程序设计要求,请按照要求写出源程序代码,如果源
程序代码中出现语法错误或逻辑错误,则酌情扣分。
1.试编写一个子程序,入口参数要求通过堆栈传递,入口参数包括一个字节型带符号数数组的起始地址(偏移量)、数组长度(无符号数)。参数传递顺序:数组起始地址、数组长度。要求子程序统计数组中小于-3的数组元素数量,统计结果通过AL 寄存器作为出口参数传递。 注:仅编写子程序的源代码,不编写调用该子程序的主程序。
2. 编写一个完整程序,从键盘接收一个字符串(最大长度为20个字符),删除其中存在的‘A ’与 ‘B ’字符(大写字母),并在新行显示处理后的字符串。 例:输入DCABAABC ,则在新行应输出DCC
注:试题字迹务必清晰,书写工整。
本题5页,本页为第5页