1、PC技术机试模拟试卷 67及答案与解析 一、程序设计题 1 请编制程序,其功能是:内存中连续存放着 20个 ASC 字符,如果是小写字母a z之间的字符 (包括字母 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保存到文件 O
2、UTPUT1.DAT中。 请填空 BEGIN和 END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与 IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。 【试题程序】 EXTRN LOAD:FAR,SAVE:FAR N EQU 20 STAC SEGMENT STACK DB 128 DUP (?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESUL
3、T DB N DUP(0) NAME0 DB INPUT1.DAT,0 NAME1 DB OUTPUT1.DAT,0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ; 数据区起始地址 LEA SI,NAME0 ; 原始数据文件名 MOV CX,N ; 字节数 CALL LOAD ; 从 “INPUT.DAT“中读取数据 ; * BEGIN * LEA SI, SOURCE LEA
4、DI, RESULT MOV CX, N NEXT: MOV AL,SI CMP AL,a JB (1) CMP AL, (2) J (3) UPPER2 SUB AL, (4) UPPER2: HOV DI, (5) INC (6) INC (7) (8) NEXT ; * END * LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名 MOV CX,N ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 67答案与解析 一、程序设计题 1 【正确答案】 (1) UPPER2 (2) z (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP 【试题解析】 本题主要考查的是将小写字母改写成大写字母的实现方法。题目中给出的程序是利用循环依次对每个字符进行判断是否是小写字母,若是则减去 32即成为该字母相对应的大写字母。