1、PC技术机试模拟试卷 32及答案与解析 一、程序设计题 1 请编制程序 PROG1.ASM,其功能是:内存中连续存放的 20个 8位有符号数 (补码 )是由一个 8位 A/D转换器采集的双极性信号 (Xn),现要求对该信号作如下限幅处理 (处理后的信号记为 Yn): a) Yn=-100 Xn -100 b) Yn=Xn Xn 100 c) Yn=100 Xn 100 例如: Xn: 68H,60H,8EH,38H, Yn: 64H,61H,9CH,38H, 部分程序已在 PROG1.ASM中给出,请填空 BEGIN和 END之间已给出的源程序使其完整 (空白己用横线标出,每行空白一般只需一条
2、指令,但功能相当的多条指令亦可 )或删除 BEGIN和 END之间原有的代码并自行编写程序片段来完成要求的功能。 原始数据由过程 LOAD从文件 INPUT1.DAT中读入 SOURCE开始的内存单元中,结果要求从 RESULT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。 对程序必须进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件, 最终运行程序产生结果 (无结果或结果不正确者均不得分 )。 试题程序: EXTRN LOAD:FAR, SAVE:FAR N EQU 20 M EQU 100 DSEG SEGMENT SOURCE DW N DUP(?) RE
3、SULT DW N DUP(0) NAME0 DB INPUTI.DAT,0 NAME1 DB OUTPUT1.DAT,0 DSEG ENDS SSEG SEGMENT STACK DB 128 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG, SS:SSEG START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX LEA DX,SOURCE ; 数据区起始地址 LEA SI,NAME0 ; 原始数据文件名起始地址 MOV CX,N ; 字节数 CALL LOAD
4、; 从 INPUT1.DAT中读取数据 ; * BEGIN * LEA SI,SOURCE LEA DI,RESULT (1) NEXT: MOV AX,SI CMP AX,-M (2) L1 CMP AL,M (3) MOV AL,M JMP L2 L1: MOV AL,-M L2: MOV DI,AL (4) (5) (6) ; * END * LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名起始地址 MOV CX,N ; 字节数 CALL SAVE ; 保存结果到 OUTPUT1.DAT文件中 RET START ENDP CSEG ENDS END START PC技术机试模拟试卷 32答案与解析 一、程序设计题 1 【正确答案】 (1)MOV CX,20 (2) JL (3) JL L2(4) ADD SI,I (5) ADD DI,1 (6) LOOP NEXT 【试题解析】 本题要求对 20个数进行循环转换,但本题中没有设置计数器,所以应该在循环体前面的一个空白处设置计数器。程序中,比较指令后通常是转移指令,需要考虑一个比较操作后应做如何处理。在一个数据处理完毕并存入目的地址后,应准备处理下 个数据,所以应修改源操作数地址和目的操作数地址,并回到循环体开始部分重新进行操作。