1、PC技术机试模拟试卷 13及答案与解析 一、程序设计题 1 请编制程序 PROG1.ASM,其功能是:计算 103矩阵中每一行元素 (八位二进制数 )之和,并将其存放在指定的内存区中。 例如: 内存中有 0, 0, 0, (第 1行 ), 1, 1, 1, (第 2行 ), , 9, 9, 9(第 10行 ) 结果为 0000H, 0003H, , 001BH 部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT1.DAT中读入SOURCE开始的内存元中,转换结果要求从 RESULT开始存放,由过程 SAVE保存到文件 OUTPUT1.DAT中。填空 BEGIN和 END之间已经给
2、出的一段源程序使其完整,填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数 ),考生也可以填入功能相当的多条指令,或删去 BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与 IO.OBJ链接产生 PROG1.EXE执行文件,最终运行程序产生结果 (无结果或结果不正确者均不得分 )。 PROG1.ASM文件内容如下: EXTRN LOAD: FAR, SAVE: FAR N EQU 30 DSEG SEGMENT SOURCE DB N DUP( ? ) RESULT DW N/3 DUP(0) I EQU 10 J EQU
3、3 NAME0 DB INPUT1. DAT ,0 NAME1 DB OUTPUT1. DAT ,0 DSEG ENDS SSEG SEGMENT STACK DB 256 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, SS: SSEG, DS: DSEG START PROC FAR PUSH DS XOR AX, AX PUSH AX MOV AX, DSEG MOV DS, AX MOV ES, AX LEA DX, SOURCE LEA SI, NAMEO MOV CX, N CALL LOAD ; * * * BEGIN * * * L
4、EA SI, SOURCE LEA DI, RESULT MOV BX, 1 LPI: MOV DX,O MOV CX, 1 LPJ: MOV AL, SI _ ADD DX, AX INC INC CX CMP CX, JBE LPJ MOV DI,_ ADD DI,_ INC BX CMP BX, I JBE LPI ; * * * END * * * LEA DX, RESULT LEA SI, NAME1 MOV CX, N/3 CALL SAVE RET START ENDP CSEG ENDS END START PC技术机试模拟试卷 13答案与解析 一、程序设计题 1 【正确答案
5、】 ; * * * BECIN * * * LEA SI, SOURCE LEA DI, RESULT MOV BX, 1 ;设置 BX, BX用于行处理计数 LPI: MOV DX, 0 ; LPI用于每行处理前的设初值; DX用于每行累计求和 MOV CX, 1 ; CX用于每行求和计数 LPJ: MOV AL, SI CBW ;将 AL字节的符号扩展到 AH中 ADD DX, AX ;求和 INC SI ; SI指向下一个存储单元 INC CX ;每加一次 CX累加 1 CMP CX, 3 ;若 CX大于 3,则此行求和结束 JBE LPJ ;否则此行继续求和 MOV DI, DX ;和值存入目的存储区 ADD DI, 1 ; DI指向目的存储区下一个存储单元 INC BX ;累计处理过的行数 CMP BX, I ;若 BX大于 I,则整个求和存储过程完成,否则返回 LPI继续求和 JBE LPI ; * * * END * * * 输入数据: 0101010202020303030404040 50505060606070707080808090909101010 输出结果: 03 06 09 0C 0F 12 15 18 1B 30