[计算机类试卷]PC技术机试模拟试卷58及答案与解析.doc

上传人:proposalcash356 文档编号:493473 上传时间:2018-11-28 格式:DOC 页数:3 大小:27.50KB
下载 相关 举报
[计算机类试卷]PC技术机试模拟试卷58及答案与解析.doc_第1页
第1页 / 共3页
[计算机类试卷]PC技术机试模拟试卷58及答案与解析.doc_第2页
第2页 / 共3页
[计算机类试卷]PC技术机试模拟试卷58及答案与解析.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、PC技术机试模拟试卷 58及答案与解析 一、程序设计题 1 编制一个程序,其功能是:计算内存中连续存放的 20个字节无符号数据的相邻两个数据之间的和,并找出和的最大值,和的最大值存放在结果的最后一个字单元,和为字数据。 例如: 内存中有: 20H, 04H, 58H, 34H, 35H, 4DH , 则结果为: 0024H, 008CH, 0082H 部分程序已经给出,其中原始数据由过程 LOAD从文件 INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单 元存放,由过程 SAVE保存到文件 OUTPUT.DAT中。 请填空 BEGIN和 END之间

2、已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要 条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和 END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与 IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 【试题程序】 TRN OAD:FAR,SAVE:FAR N EQU 10 SSEG SEGMENT TACK B 256 DUP (?) SSEG NDS DSEG EGMENT SOURCE DB N*2 DUP (?) RESULT DW N+1 DUP (0) NAME0 DB IN

3、PUT.DAT,0 NAME1 DB OUTPUT.DAT,0 DSEG DS CSEG EGMENT SSUME CS:CSEG,DS:DSEG,SS:SSEG START PROC FAR USH S OR AX,AX USH X OV AX,DSEG OV DS,AX EA DX,SOURCE EA SI,NAME0 OV CX,N*2 ALL GAD ; * BEGIN * EA SI, SOURCE EA DI,RESULT OV CX,N AGAIN0: (1) OV AL,SI DD AL,SI+1 DC AH,0 OV DI,AX DD SI, (2) (3) OOP GAIN

4、0 OV BX,N-1 OV SI,OFFSET RESULT OV AX,SI AGAIN1: ADD SI, 2 MP AX,SI (4) OV AX,SI NEXT: DEC BX NZ AGAIN1 (5) ; * END * EA DX,RESULT EA SI,NAME1 OV CX,N+1 ALL AVE ET START ENDP CSEG ENDS END START PC技术机试模拟试卷 58答案与解析 一、程序设计题 1 【正确答案】 (1) MOV AX,0 (2) 2(3) ADD DI,2 (4) JAE NEXT (5) MOVSI+2,AX 【试题解析】 从程序

5、的整体结构可以看出程序首先进行的是求和运算,并将结果存入从 RESULT开始的存储单元中。求和结束以后,再求 RESULT中数据的最大值。 第一个循环 AGAIN0用来对 SOURCE中相邻的数据求和,并存入 RESULT中。为了使上一次的相加结果不影响后面的运算,需要在每一次进入循环的时候将 AX寄存器清零,因此 第一个空白处应该填写的内容为 MOV AX,0(或 XOR AX,AX或 SUB AX,AX)。本程序的加法运算过程中,指针的变化要特别注意。由于是对相邻两个数据进行求和,所以尽管 SOURCE中的数据是字节类型,但由于一次操作需要使用两个数据,所以 SI指针的变化每次应该是 2,

6、也就是说一次加法使用两个数据以后,下一次要从第三个数据开始,所以第二个空白处应填 2。指向 RESULT的指针也要变化,由于 RESULT是字类型,因此指针的变化也应该是 2,所以第三个空白处应该是 DI增加 2,即 ADD DI,2。 寻找最大值 采用的算法是逐个比较法,即将存储单元中的第一个数取到 AX寄存器中,然后逐个与存储单元的内容进行比较,如果 AX寄存器中的数据大,则进行下一次比较,否则将存储单元中的内容传送到 AX中,这样在比较结束时, AX中的内容便是这一组数中的最大值。在程序中,首先将用米控制循环次数的内容送到 BX寄存器中,然后将存储单元的偏移地址送到寄存器 SI中。将第一个数据取入 AX寄存器后,便开始比较,显然第四个空白处应该填写的内容是一个跳转语句,从下面 MOV AX,SI可以知道跳转的条件应该是 AX中的数据大于 SI中的数据,所以 应使用 JAE指令。由于需要修改指针并且判断比较是否结束,因此应该跳转到 NEXT处,即第四个空白处的程序是 JAE NEXT。最后一个语句实现的是将最大值存入 RESULT的最后一个存储单元,由于在比较时, SI已经指到了RESULT中的最后一个数据,所以只需要将指针 SI再加 2就指向了 RESULT的最后一个存储单元,即第五个空应填的内容为 MOV SI+2,AX。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1