1、三级 PC 技术机试-186 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,其功能是:求 IJ 矩阵的转置矩阵(矩阵中元素为字节型),并计算转置矩阵的每一行元素之和,然后存放在每一行最后一个字单元中。例如:内存中有:04H,05H,06H,(第一行)01H,02H,03H(第二行)结果为: 04H,01H,05H,00H,05H,02H,07H,00H,06H,03H,09H,00H部分程序已给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中。运算结果要求从 RESULT
2、开始存放,由过程 SAVE 保存到文件 OUTPUT1.DAT 中。请填空 BEGIN 和 END 之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去 BEGIN和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序EXTRN LOAD:FAR,SAVE:FARN EQU 30I EQU 3J EQU 10DSEG SEGMENTSOURCE DB
3、 N DUP(?)SRC DW SOURCERESULT DB (N+2*J)DUP(0)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0DSEG ENDSSSEG SEGMENT STACKDB 256 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,SS:SSEG,DS:DSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES,AXLEA DX,SOURCELEA SI,NAME0MOV CX,NCALL LOAD* BEGIN *LEA
4、SI,SOURCELEA DI,RESULTMOV BX,1 ; 第一列LPJ: MOV CX,0 ; 累加和MOV DX,1 ; 第一行LPI: MOV AL,SIADD CL,AL(1) STOSBADD SI,10INC DX(2) JBE LPIMOV DI,CX(3) INC SRC ; 下一列MOV SI,SRC(4) CMP BX,JJBE (5) * END *LEA DX,RESULTLEA SI,NAME1MOV CX,(N+2*J)CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_三级 PC 技术机试-186 答案解析
5、(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序,其功能是:求 IJ 矩阵的转置矩阵(矩阵中元素为字节型),并计算转置矩阵的每一行元素之和,然后存放在每一行最后一个字单元中。例如:内存中有:04H,05H,06H,(第一行)01H,02H,03H(第二行)结果为: 04H,01H,05H,00H,05H,02H,07H,00H,06H,03H,09H,00H部分程序已给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中。运算结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件
6、OUTPUT1.DAT 中。请填空 BEGIN 和 END 之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去 BEGIN和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序EXTRN LOAD:FAR,SAVE:FARN EQU 30I EQU 3J EQU 10DSEG SEGMENTSOURCE DB N DUP(?)SRC DW SOUR
7、CERESULT DB (N+2*J)DUP(0)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0DSEG ENDSSSEG SEGMENT STACKDB 256 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,SS:SSEG,DS:DSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES,AXLEA DX,SOURCELEA SI,NAME0MOV CX,NCALL LOAD* BEGIN *LEA SI,SOURCELEA DI,RESU
8、LTMOV BX,1 ; 第一列LPJ: MOV CX,0 ; 累加和MOV DX,1 ; 第一行LPI: MOV AL,SIADD CL,AL(1) STOSBADD SI,10INC DX(2) JBE LPIMOV DI,CX(3) INC SRC ; 下一列MOV SI,SRC(4) CMP BX,JJBE (5) * END *LEA DX,RESULTLEA SI,NAME1MOV CX,(N+2*J)CALL SAVERETSTART ENDPCSEG ENDSEND START(分数:100.00)_正确答案:(1) ADC CH,0 (2) CMP DX,I (3) ADD DI,2 (4) INC BX (5) LPJ)解析: