1、三级 PC技术机试-210 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,其功能为:将内存中存放的连续的 30个二进制数(0 到 100之间),按数值大小分别进行统计,059 为 D,6074 为 C,7584 为 B,85100 为 A,统计出 A、B、C、 D 的个数,并按A、B、C、D 次序存放在内存中。例如:内存中原始数据为:21H,3CH,4DH,31H,4FH,51H,56H统计结果:1,3,1,2部分程序已经给出,其中原始数据由 LOAD过程从文件 INPUT1.DAT中读入从 SOURCE开始的内存单元,转换结
2、果(要求从 RESULT 开始读入)由 SAVE过程保存到 OUTPUT1.DAT文件中。请在 BEGIN和 END之间补充使其完整,完成要求的功能。或删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件,最终产生运行结果。部分程序如下:;PROG1.ASMEXTRN LOAD:FAR, SAVE:FARN EQU 30DSEG SEGMENTSOURCE DB N DUP (?)RESULT DB N DUP (0)NAME0 DB INPUT1. DAT,0NAME1 DB OUTPUT1. DAT,
3、0DSEG ENDSSSEG SEGMENT STACKDB 128 DUP (?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG, DS:DSEG; SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX, DSEGMOV DS,AXMOV ES, AXLEA DX, SOURCELEA SI,NAME0MOV CX,NCALL LOAD; * BEGIN *MOV CX,NLEA SI,SOURCECONT: MOV AL,SI_JB LBINC RESULTJMP OKLB: CMP AL, 75JB LCINC _J
4、MP OKLC: CMP AL,60JB LD_JMP OKLD: _OK: INC SILOOP CONT; * END *LEA DX,RESULTLEA SI,NAME1MOV CX,4CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_三级 PC技术机试-210 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,其功能为:将内存中存放的连续的 30个二进制数(0 到 100之间),按数值大小分别进行统计,059 为 D,6074 为 C,7584 为 B,85100 为 A
5、,统计出 A、B、C、 D 的个数,并按A、B、C、D 次序存放在内存中。例如:内存中原始数据为:21H,3CH,4DH,31H,4FH,51H,56H统计结果:1,3,1,2部分程序已经给出,其中原始数据由 LOAD过程从文件 INPUT1.DAT中读入从 SOURCE开始的内存单元,转换结果(要求从 RESULT 开始读入)由 SAVE过程保存到 OUTPUT1.DAT文件中。请在 BEGIN和 END之间补充使其完整,完成要求的功能。或删除 BEGIN和 END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件,最终产生运
6、行结果。部分程序如下:;PROG1.ASMEXTRN LOAD:FAR, SAVE:FARN EQU 30DSEG SEGMENTSOURCE DB N DUP (?)RESULT DB N DUP (0)NAME0 DB INPUT1. DAT,0NAME1 DB OUTPUT1. DAT,0DSEG ENDSSSEG SEGMENT STACKDB 128 DUP (?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG, DS:DSEG; SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX, DSEGMOV DS,AX
7、MOV ES, AXLEA DX, SOURCELEA SI,NAME0MOV CX,NCALL LOAD; * BEGIN *MOV CX,NLEA SI,SOURCECONT: MOV AL,SI_JB LBINC RESULTJMP OKLB: CMP AL, 75JB LCINC _JMP OKLC: CMP AL,60JB LD_JMP OKLD: _OK: INC SILOOP CONT; * END *LEA DX,RESULTLEA SI,NAME1MOV CX,4CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_正确答案:
8、(答案: 本题答案为:; * BEGIN *MOV CX, NLEA SI, SOURCECONT: MOV AL, SICMP AL, 85JB LBINC RESULTJMP OKLB: CMP AL, 75JB LCINC RESULT+1JMP OKLC: CMP AL, 60JB LDINC RESULT+2JMP OKLD: INC RESULT+3OK: INC SILOOP CONT; * END *INPUT1.DAT 中的输入数据: 60H,3CH,4DH, 31H,4FH,51H,56H,59H,41H,32H35H,21H,4FH,3AH,21H,2BH,51H, 11H,45H,44H3AH, 1EH,3BH,34H,3CH,46H,63H,24H,40H,3EH输出结果:04 05 08 OD)解析: