四川大学期末考试试题(闭卷)
1213412(2005-2006学年第2学期)
课程号: 课序号: 课程名称: 汇编语言程序设计(B卷)任课教师:
适用专业年级:计算机科学技术2004级 学生人数: 印题份数: 学号: 姓名:
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.如果当前(SP)=0058H,执行POP AX指令后,(SP)=(D ) (A)60H (B)56H (C)59H (D)5AH 2.下面的数值表示中,和100相等的是哪一个( D ) (A)00000100B (B)64 (C)100H (D)64H 3.以下指令中,执行后要影响标志位的指令为( B ) (A)MOV AL,BL (B)SAHF (C)NOT CL (D)PUSHF 4.在算术移位指令中,如果移位次数大于1,则移位次数应当预先存放在哪一个寄存器中(B ) (A)DL (B)CL (C)DH (D)AL 5.下列条件转移指令中,哪一个是针对带符号数比较的( C ) (A)JB (B)JA (C)JG (D)JC 6.如果当前(AL)=0FFH,执行指令INC AL之后,CF标志位的取值为(A ) (A)与执行该指令之前的取值保持一致 (B)1 (C)0 (D)2 7.LOOP指令所使用的计数器是哪一个寄存器( A ) (A)CX (B)CL (C)BX (D)DX 8.如果当前(AL)=0C0H,执行CBW指令后AH寄存器的内容为( B ) (A)00H (B)0FFH (C)与执行该指令前保持一致 (D)01H 9.如果(AL)=81H,执行ROL AL,1指令后,OF标志位为( B ) (A)OF=0 (B)OF=1 (C)OF=2 (D)OF不确定 10.如果(AL)=0C4H,执行如下所示的程序片段后,正确的执行结果为( C ) MOV BL,AL SHL AL,1 ADC AL,BL (A)(AL)=4CH (B)(AL)=88H (C)(AL)=4DH (D)(AL)=0C4H 11.以下指令中,没有使用存储器寻址方式的是哪一个( B ) (A)SUB AL,[SI] (B)ADC BH,28H (C)XOR TAB1[BX][DI],AX (D)NOT BYTE PTR 100H[BX] 12.如果(SP)=56H,在一个NEAR类型的子程序内执行指令RET 6,执行完毕后 (SP)=( C ) (A)62H (B)64H (C)5CH (D)5EH 13.如果数据段中一个内存单元对应的物理地址为17698H,(DS)=1700H,那么使用DS段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元( C ) (A)15F88H (B)0688H (C)0698H (D)0088H 14.如果要读取60H号端口的内容,下面的指令哪一个能够实现该功能( D) (A)IN BL, 60H (B)MOV AL,[60H] (C)INT 60H (D)IN AL,96 15.以下指令中,没有使用基址寻址的指令是哪一个( B ) (A)AND CL,100H[BX] (B)MOV [BP],BX (C)SBB TAB1[BX],AH (D)XOR AX,200H[BP] 16.如果(AL)=11000100B执行如下程序片段后,正确的执行结果为( B ) SHL AL,1 AND AL,0FH RCL AL,1 (A)(AL)=00010000B,CF=1 (B)(AL)=00010000B,CF=0 (C)(AL)=00010001B,CF=0 (D)(AL)=00010001B,CF=1 17.如果(AL)=08H,(BL)=07H,执行如下程序片段后,正确的执行结果为以下哪一个(C ) ADD AL,BL AAA (A)(AL)=0FH,CF=0 (B)(AL)=0FH,CF=1 (C)(AL)=05H,CF=1 (D)(AL)=05H,CF=0 18.以下指令中,哪条指令访问了堆栈段?( C ) (A)AND CL,[DI] (B)MOV [BX][SI],46H (C)SBB 0020H [BP][DI],AX (D)NEG ES:[100H] 19.若当前(AL)=28H,执行指令OR AL,80H后,SF标志位的取值为( B ) (A)0 (B)1 (C)2 (D)0A8H 20.如果(SP)=80H,执行指令CALL FAR PTR PROCD1后,(SP)=( D ) (A)80H (B)7EH (C)84H (D)7CH 二、多项选择题(本大题共5小题,每小题2分,共10分 )在每小题列出的五个备选项中有二个至五个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。 1.对于SAHF指令,以下哪些标志位是要被影响的( ABCDE ) (A)CF (B)OF (C)PF (D)ZF (E)SF 2.对于汇编语言中的子程序设计,下列描述正确的有哪些( ABCDE ) (A)子程序执行的最后一条指令一定是RET指令 (B)子程序可以通过堆栈取得入口参数,并且通常使用BP寄存器从堆栈中获取入口参数 (C)子程序可以通过寄存器取得入口参数 (D)子程序可以分为NEAR和FAR两种类型 (E)RET N (N为整数)这种返回指令格式通常用于清除主程序通过堆栈传递的入口参数 3.下面对8086/8088汇编语言中堆栈的描述,正确的有哪些( ACE ) (A)当使用PUSH、POP指令对堆栈进行操作时,遵循后进先出的原则 (B)执行PUSH指令时,SP寄存器的内容会被自动加2 (C)CALL指令与RET指令在执行时会自动改变SP寄存器的内容 (D)PUSH、POP指令的操作数可以以字为单位,也可以以字节为单位 (E)执行POPF指令时,SP寄存器的内容会被自动加2 4.如果当前(AL)=03H,有如下程序片段: SHL AL,1 MOV BL,AL MOV CL,2 SHL AL,CL ADD AL,BL 执行该程序片段后,对执行结果的正确描述有哪些?( ABCE ) (A)(AL)=1EH (B)(BL)=06H (C)(CL)=02H (D)CF=1 (E)PF=1 5.如果在源程序中定义了一个变量VA1,下列指令中,哪些指令一定能够获取该变量的偏移量并保存到SI寄存器中( CE ) (A)MOV SI,VA1 (B)LDS SI,VA1 (C)LEA SI,VA1 (D)LES SI,VA1 (E)MOV SI,OFFSET VA1 三、判断分析题(本大题共5小题,每小题3分,共15分 )每小题列出的语句在语法上可能是正确的,也可能是错误的,请判断各小题所给语句在语法上是否正确,如果是错误的,则需要分析其错误原因。对于所给语句正确的小题,只要做出正确判断即给3分,如果做出错误判断则无分;对于所给语句错误的小题,做出正确判断给1分,做出正确的错误分析再给2分,如果做出错误判断则无分。 1.JB BX 1. 错误,条件转移指令没有间接转移方式 2.MOV IP,0890H 错误,不能使用MOV指令给IP寄存器传递数据 3.ADC BYTE PTR [BX],BYTE PTR [SI] 错误,双操作数指令中只能有一个存储器操作数 4.SUB [SI],64 错误,操作数的类型不明确 5.PUSH AL 错误,PUSH指令只能操作字数据类型 四、名词解释题(本大题共3小题,每小题4分,共12分),解释每小题所给名词的含义,若解释正确则给分,若解释错误则无分,若解释不准确或不全面,则酌情扣分。 1.立即数寻址: 寻址方式的一种,由指令代码内部的立即数字段给出源操作数 2.补码: 一种带符号数的编码方式,正数的补码为真值本身,负数的补码为真值变反加1的结果 3.寄存器间接寻址: 存储器寻址方式的一种,由BX、BP、SI、DI这四个寄存器其中之一给出偏移量 五、程序分析题(本大题共3小题,每小题7分,共21分 ),每小题给出了一个程序片段,这些程序片段在语法和逻辑上都是正确的,请按照各小题给出的分析要求,分析程序片段的执行结果或总结程序片段的功能,并在空白处填写分析结果,分析正确则按照每空后标注的分值给分,如果分析错误则该空不得分。 1.阅读下面的程序片段,并分析程序功能与指定寄存器的用途。(共7分) DATA SEGMENT DAT1 DB -53,63,-78,23,48,62,-37,80 LEN EQU $-DAT1 DATA ENDS …… CODE SEGMENT …… MOV BX,OFFSET DAT1 MOV CX,LEN XOR AL,AL L1: TEST [BX],80H 指示汇编程序如何汇编的指令 JZ L2 INC AL L2: INC BX LOOP L1 …… CODE ENDS 该程序片段的功能为 统计数组中负数的数量 (3分) AL寄存器的用途为 AL用作统计负数个数 (2分) CX寄存器的用途为 CX用作循环计数器 (2分) 2.阅读下面的程序片段,并分析执行结果。(共7分) MOV AL,0B6H MOV CX,0402H XOR BL,BL L1: ROL AL,CL ADC BL,0 DEC CH JNZ L1 执行该程序片段后: (AL)= 0B6H (3分) CF = 0 (2分) ZF = 1 (2分) 3.阅读下面的程序片段,并分析执行结果(共7分) MOV AX,6560H MOV BX,4839H PUSH AX SUB AX,BX POP BX NEG BX 执行上面程序片段后,执行结果为: (AX)= 1D27H (3分) (BX)= 9AAoH (2分) CF = 1 (2分) 六、程序设计题(本大题共2小题,第1小题10分,第2小题12分,共22分 ),每小题给出了一个程序设计要求,请按照要求写出源程序代码,如果源程序代码中出现语法错误或逻辑错误,则酌情扣分。 1.请设计一个宏指令,其功能如下: (1)主程序进行宏调用时提供一个字符串在数据段中的起始偏移量、该字符串的长度、存放统计值的单元偏移量 (2)宏指令统计该字符串中字符‘A’的个数,统计结果返回给主程序 仅要求写出与宏指令相关的源程序代码,并用文字说明各形式参数的含义。(10分) 形式参数说明:STR1用于指示字符串的起始偏移量,LENGTH用于指出字符串长度,RES用于指示存放统计结果的偏移量 ;形式参数说明 2分 CHARNUM MACRO STR1, LENGTH,RES ;宏定义 2分 LEA BX, STR1 ;循环初始化 2分 MOV CX, LENGTH MOV RES,0 LOP1: CMP [BX], ‘A’ ;循环主体 4分 JNZ L1 INC RES L1: LOOP LOP1 ENDM 2.请设计一个完整程序,该程序的功能如下: (1)从键盘接收一个字符串输入,把接收到的字符串存放于一个缓冲区中,最大允许输入10个字符,输入字符数不够10个时可以回车键结束字符串的输入。 (2)将该字符串中的字符‘H’全部替换为字符‘T’ (3)在新的一行上显示更改后的字符串 要求写出完整的源程序代码。(12分) DATA SEGMENT ;数据段及变量定义,2分 MAXLEN DB 20 ACTLEN DB ? STR1 DB 21 DUP(?) DATA ENDS CODE SEGMENT ;代码段定义,1分 ASSUME CS:CODE,DS:DATA ;ASSUME,1分 BEGIN:MOV AX,DATA ;DS初始化,1分 MOV DS,AX MOV DX,OFFSET MAXLEN ;字符串输入,1分 MOV AH,0AH INT 21H MOV DL,0DH ;回车换行显示,1分 MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H LEA BX,STR1 ;添加字符串结束标志,1分 PUSH BX MOV CL,STR1+1 XOR CH,CH ADD BX,CX MOV [BX],‘$’ POP BX LOP1: CMP [BX],‘H’ ;循环主体,2分 JNZ L1 MOV [BX],‘T’ L1: INC BX LOOP LOP1 LEA BX,STR1 ;字符串显示,1分 MOV AH,09H INT 21H MOV AH,4CH ;程序框架,1分 INT 21H CODE ENDS END BEGIN |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论