1、三级 PC 技术机试-75 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.内存单元连续存放的 20 个 8 位有符号数(补码)是由一个 8 位 A/D 转换器采集的双极性值的双极性信号(Xn),现有要求对该信号作如下限幅处理(处理后的信号记做 Yn)。aYn=-100 Xn-100b. Yn=Xn |Xn|100cYn=100 Xn100例如:Xn=68H,8EH,38HYn:64H,60H,9CH,38H部分程序已经在 PROG1.ASM 中给出,请填空 BEGIN 到 END 之间已经给出的源程序,使其完整(空白已经用横线标出,每行空
2、白一般只需要一条指令,但功能相当多条指令亦可)或删除 BE GIN 到 END 之间的原有代码并自行编写程序片段完成所需的功能。原有数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,结果要求从 RESULT 开始存放,由 SAVE 保存到 OUT1.DAT 文件。对程序必须进行汇编,并与 IO.OBJ 链接产生 PROG1.EXE 执行文件,最终产生运行结果(无结果或结果不正确均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。PROG1.ASM 源程序如下:EXTRN LOAD:FAR,SAVE:FARN EQU 20MAX-VAL EQU
3、100STAG SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(?)RESULT DB N DUP(?)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0,DATA ENDSCODE SEGMENTASSUMEME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXMOV AX,DATAMOV DS,AXLEA DX, SOURCE ; 数据区起始地址LEA SI, NAME0 ; 原始数据文件名起始地址MOV CX,N ;
4、字节数CALL LOAD ; 从INPUT1. DAT中读取数据;, * * * * BEGIN * * * *LEA SI, SOURCELEA DI, RESULT_NEXT: MOV AL, SICMP AL, - MAX - VAL_ LESSCMP AL, MAX - VAL_MOV AL, MAX - ALJMP STORELESS: MOV AL, - MAX - VALSTORE: MOV DI, AL_* * * * END * * * *LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名起始地址MOV CX,N ; 字节数CALL SAV
5、E ; 保存结果到“output1. dat“ 文件中RETSTART ENDPCODE ENDSEND START(分数:100.00)_三级 PC 技术机试-75 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.内存单元连续存放的 20 个 8 位有符号数(补码)是由一个 8 位 A/D 转换器采集的双极性值的双极性信号(Xn),现有要求对该信号作如下限幅处理(处理后的信号记做 Yn)。aYn=-100 Xn-100b. Yn=Xn |Xn|100cYn=100 Xn100例如:Xn=68H,8EH,38HYn:64H,60H,9CH,3
6、8H部分程序已经在 PROG1.ASM 中给出,请填空 BEGIN 到 END 之间已经给出的源程序,使其完整(空白已经用横线标出,每行空白一般只需要一条指令,但功能相当多条指令亦可)或删除 BE GIN 到 END 之间的原有代码并自行编写程序片段完成所需的功能。原有数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,结果要求从 RESULT 开始存放,由 SAVE 保存到 OUT1.DAT 文件。对程序必须进行汇编,并与 IO.OBJ 链接产生 PROG1.EXE 执行文件,最终产生运行结果(无结果或结果不正确均不得分)。调试中若发现整个程序中存在错
7、误之处,请加以修改。PROG1.ASM 源程序如下:EXTRN LOAD:FAR,SAVE:FARN EQU 20MAX-VAL EQU 100STAG SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(?)RESULT DB N DUP(?)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0,DATA ENDSCODE SEGMENTASSUMEME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXMOV AX,DATAMO
8、V DS,AXLEA DX, SOURCE ; 数据区起始地址LEA SI, NAME0 ; 原始数据文件名起始地址MOV CX,N ; 字节数CALL LOAD ; 从INPUT1. DAT中读取数据;, * * * * BEGIN * * * *LEA SI, SOURCELEA DI, RESULT_NEXT: MOV AL, SICMP AL, - MAX - VAL_ LESSCMP AL, MAX - VAL_MOV AL, MAX - ALJMP STORELESS: MOV AL, - MAX - VALSTORE: MOV DI, AL_* * * * END * * * *
9、LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名起始地址MOV CX,N ; 字节数CALL SAVE ; 保存结果到“output1. dat“ 文件中RETSTART ENDPCODE ENDSEND START(分数:100.00)_正确答案:(;* * * * BDGIN * * * *LEA SI,SOURCELEA DI,RESULTMOV CX,20NEXT:MOV AL,SICMP AL,-MAX-VALJL IESSCMP AL,MAX-VALJL STOREMOV AL,MAX-ALJMP STORELESS:MOV AL,-;MAX-VALSTORE:MOV DI,ALINC SI 或 ADD SI,11NC DI 或 ADD DI,1LOOP NEXT;* * * * END * * * *)解析: