1、PC技术机试模拟试卷 9及答案与解析 一、程序设计题 1 试题要求如下: 请编制程序,其功能是:内存中连续放着 20个 ASCII字符,如果是小写字母A Z之间的字符,请把它们转换成相应的小写字母:若为其他字符,均转换成ASCII字符 NUL (00H)。 例如: 内存中有: 41H (A), 42H (B), 5EH, 64H, 48H 结果为: 61H (a), 62H (b), 00H(NUL), 00H(NUL), 00H(NUL) 部分程序已给出 ,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从 RESULT开始存放,由过
2、程SAVE保存到文件 OUTPUT1.DAT中。在 BEGIN和 AND之间编程完成要求的功能。 对程序进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件,最终运行程序产生结果。 试题程序: EXTRN LOAD: FAR, SAVE: FAR N EQU 20 STAC SEGMENT STACK DB 128 DUP (? ) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N DUP(0FH) NAME0 DB INPUT1.DAT, 0 NAME1 DB OUTPUT1.DAT, 0 DATA ENDS CODE S
3、EGMENT 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 ; 从 INPUT1.DAT中读取数据 LEA SI, SOURCE LEA DI, RESULT ; * BEGIN * ; * END * LEA DX, RESULT ; 结果数据区首址 LEA SI, NAME1 ; 结果文
4、件名 MOV CX, L+I ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 9答案与解析 一、程序设计题 1 【正确答案】 MOV CX, N NEXT: MOV AL, SI CMP AL, A JB PRO CMP AL, Z JA PRO XOR AL, 20H JMP PSH PRO: MOV AL, 00H PSH: MOV DI, AL INC DI INC SI LOOP NEXT 【试题解析】 本程序要求将 A Z之间的字母转换成相对应的小写字母。 DI中存放着的是转换后的偏移地址,每次加 1; AL的作用是相当于一个指针,每次SOURCE与它相加; CX是一个循环计数器,每次减 1。