全国计算机三级考试:上机试题编程挑战-求最大值和最小值

需积分: 9 1 下载量 8 浏览量 更新于2024-09-18 收藏 31KB DOC 举报
本题考查的是全国计算机三级考试的上机编程部分,涉及到的是使用汇编语言编写一个程序,目标是在内存中连续存放的二十个无符号字节序列中找到最大值和最小值。考生需要使用ASM汇编语言,以PROG1.ASM为文件名来实现这个功能。 题目要求考生首先定义一个栈段(STACK)和两个数据段,一个用于存储源数据(SOURCE)和原始数据文件名(NAME0),另一个用于存放处理结果(RESULT)。程序需要包含两个外部函数:LOAD用于从文件INPUT1.DAT中读取数据,而SAVE用于将结果保存到OUTPUT1.DAT文件中。 核心部分的代码片段展示了如何初始化和设置数据段的地址,以及如何通过调用LOAD函数从文件中读取数据。接下来的关键步骤是找到最大值和最小值,这部分代码缺失了具体的计算逻辑,考生需要填充空白处(即“LEA____,RESULT”)。这一步通常涉及遍历整个数据区,每次迭代时比较当前元素与已知的最大值和最小值,更新它们的值。 正确操作应该是: 1. 使用指针操作,如LEA(Load Effective Address)指令,将当前指针SI指向的数据地址加载到RESULT的地址上,然后将SI递增,继续遍历。 2. 在每次循环中,检查当前字节是否大于当前最大值,如果是则更新最大值,同时检查是否小于当前最小值,如果是则更新最小值。 3. 遍历完成后,确保最大值在BH寄存器中,最小值在BL寄存器中。 最后,代码应包含一个结束标记(****END****),并正确保存处理结果到RESULT数据段,调用SAVE函数将结果写入OUTPUT1.DAT文件。在程序结尾,应清理栈指针,恢复DS段的默认值,并返回到操作系统。 考生需要确保程序能够正确地编译、链接生成可执行文件PROG1.EXE,并通过调试来确保功能的正确性,因为存在错误的地方可能会影响最终结果的正确输出。整个过程体现了汇编语言的基本控制结构、数据操作和文件I/O操作等技能。