1、三级 PC技术机试-133 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,其功能是:内存中连续存放着 20个 ASC字符,如果是小写字母 az 之间的字符(包括字母 a和 z),请把它们转换成相应的大写字母所对应的 ASC字符;若为其他字符,不作转换。例如:内存中有:61H(a),62H(b),31H(1),41H(A),42H(B)结果为: 41H(A),42H(B),31H,41H,42H部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入 SOURCE开始的内存单元中,运算结果要求从 RESU
2、LT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。请填空 BEGIN和 END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN和 END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 20STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N
3、 DUP(?)RESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX,SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N ; 字节数CALL LOAD ; 从“INPUT.DAT“中读取数据; * BEGIN *LEA SI, SOURCELEA DI, RES
4、ULTMOV CX, NNEXT: MOV AL,SICMP AL,aJB (1) CMP AL, (2) J (3) UPPER2SUB AL, (4) UPPER2: HOV DI, (5) INC (6) INC (7) (8) NEXT; * END *LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名MOV CX,N ; 结果字节数CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START(分数:100.00)_三级 PC技术机试-133 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题
5、数:1,分数:100.00)1.请编制程序,其功能是:内存中连续存放着 20个 ASC字符,如果是小写字母 az 之间的字符(包括字母 a和 z),请把它们转换成相应的大写字母所对应的 ASC字符;若为其他字符,不作转换。例如:内存中有:61H(a),62H(b),31H(1),41H(A),42H(B)结果为: 41H(A),42H(B),31H,41H,42H部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入 SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。请填空 BEGIN和 END之
6、间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN和 END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 20STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(?)RESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAM
7、E1 DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX,SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N ; 字节数CALL LOAD ; 从“INPUT.DAT“中读取数据; * BEGIN *LEA SI, SOURCELEA DI, RESULTMOV CX, NNEXT: MOV AL,SICMP AL,aJB (1) CMP AL,
8、 (2) J (3) UPPER2SUB AL, (4) UPPER2: HOV DI, (5) INC (6) INC (7) (8) NEXT; * END *LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名MOV CX,N ; 结果字节数CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START(分数:100.00)_正确答案:(1) UPPER2 (2) z (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP)解析:解析本题主要考查的是将小写字母改写成大写字母的实现方法。题目中给出的程序是利用循环依次对每个字符进行判断是否是小写字母,若是则减去 32即成为该字母相对应的大写字母。