1、PC技术机试模拟试卷 12及答案与解析 一、程序设计题 1 请编制程序 PROG1, ASM,其功能是:内存中连续存放着 12个字节的数字ASCII码字符串,将它们转换成相应无符号数字,并在原第 1、 5、 9个数字前插入一个 24H数值。将这 20个数值存入 RESULT指示的区域。 例如: 源数: 30H, 31H, 32H, 33H, 34H, 35H, 36H, 结果: 24H, 00H, 01H, 02H, 03H, 24H, 04H, 部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中 读入SOURCE开始的内存元中,运算结果要求从 RESULT开始存放,
2、由过程 SAVE保存到文件 OUTPUT1.DAT中。填空 BEGIN和 END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令也可 ),或删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与 IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 PROG1.ASM文件内容如下: EXTRN LOAD:FAR, SAVE:FAR N EQU 16 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT
3、SOURCE DB NDUP(?) RESULT DB N+4DUP(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, NAMEO ;原始数据文件名 MOV CX, N ;字节数 CALL LOAD ;从 INPUT1.DAT文件中读取
4、数据 ; * * * * BECIN * * * * _ MOV DI, 0 MOV CX, 4 MOV BX, _ INSER1: DEC BX JZ EXIT MOV RESULTDI), 0FFH _ MOV CX, 4 CHAN: MOV AL, SOURCESI _ MOV RESULTDI, AL _ INC DI DEC CX JZ _ JMP CHAN EXIT: NOP ; * * * * END * * * * LKA DX, RESULT ;结果数据区首址 LEA SI, NAME1 ;结果文件名 MOV CX, N+4 ;结果字节数 CALL SAVE ;保存结果到文件
5、 RET START ENDP CODE ENDS END START PC技术机试模拟试卷 12答案与解析 一、程序设计题 1 【正确答案】 ; * * * * BECIN * * * * * MOV SI,0 ;设源数据的下标初值 MOV DI, 0 MOV CX, 4 MOV BX, 4 ;设外循环的计数初值 INSER1: DEC BX JZ EXIT MOV RESULTDI, 24H INC DI ;结果数据的下标值加 1 MOV CX, 4 CHAN: MOV AL, SOURCESI SUB AL,30H ;将当前 ASCII码转换为数值 MOV RESULTDI, AL INC SI ;源数据的下标值加 1 1NC DI DEC CX JZ INSER1 ;判定内循环 JMP CHAN EXIT: NOP ; * * * * END * * * *