南开大学100题之三级PC编程挑战:正负数组处理与计数

需积分: 0 19 下载量 53 浏览量 更新于2024-08-02 收藏 935KB DOC 举报
南开一百题2009年三级PC考试题目涉及了一道编程任务,要求考生设计一个程序,将内存中一个40个字节的有符号数组(存储在SOURCE指示的内存区域)分成正数和负数两个数组,并计算每个数组中的元素数量。结果需要以特定格式存储在RESULT指定的内存区域,即先存放正数个数,接着是正数组元素,然后是负数个数和负数组元素。例如,给定的输入数组1EH, 91H, 74H, 91H, 42H, 30H, 81H, F3H, 18H, 25H,应输出06H, 1EH, 74H, 42H, 30H, 18H, 25H, 04H, 91H, 91H, 81H, F3H。 程序设计中已经提供了一部分代码,包括从文件INPUT1.DAT中读取原始数据到SOURCE区,以及调用外部函数LOAD和SAVE进行文件操作。考生需要完善BEGIN和END之间的代码,或者替换原有代码来实现所需功能。程序需经过汇编和链接,生成可执行文件PROG1.EXE,通过调试确保无误。如果存在错误,需要修改并重新运行以得到正确结果。 具体实现步骤可能包括: 1. 初始化栈段(STACSEGMENT)和数据段(DATASEGMENT)。 2. 定义全局变量和数组,如SOURCE、RESULT、原始数据文件名NAME0和OUTPUT1.DAT等。 3. 使用LOAD函数从NAME0指定的文件中读取数据到SOURCE。 4. 创建一个标志位,用于判断当前处理的数据是否为正数。 5. 使用循环结构遍历SOURCE数组,根据数据的符号(如用CMP指令比较与零的大小关系)将元素分别存放到PDATA(正数数组缓冲区)或PDATADBNDUP(负数数组缓冲区)。 6. 在遍历过程中同时计数正数和负数的个数。 7. 当所有数据处理完毕后,将正数个数存放到RESULT,并按顺序输出正数数组,再输出负数个数和负数组。 8. 调用SAVE函数将处理后的结果保存到OUTPUT1.DAT文件中。 考生需注意,编程时要遵循正确的结构,合理使用指令,并考虑边界条件,确保程序的正确性和效率。完成编写后,务必进行编译链接,验证程序运行结果与预期一致。如果遇到错误,需仔细检查代码逻辑、数据处理和文件操作部分,直至问题解决。
雨中山果落
  • 粉丝: 0
  • 资源: 1
上传资源 快速赚钱