南开大学三级PC上机题100例:正负数数组处理

需积分: 6 15 下载量 109 浏览量 更新于2024-08-02 收藏 716KB DOC 举报
本题是一道关于计算机三级PC语言的编程题目,要求考生编写一个程序,将内存中由SOURCE指示的40个有符号数组元素分成正数和负数两个数组,并统计各自元素个数。结果需按照正数个数在前,然后是正数数组元素,接着是负数个数和负数数组元素的顺序存储在RESULT区域。原始数据通过过程LOAD从文件INPUT1.DAT中读入,而最终的结果则保存到OUTPUT1.DAT文件中。 程序设计需要遵循以下步骤: 1. 定义数据段(DATASEGMENT): - SOURCE数组用于存放原始数据,长度为40个字节,值为1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H等。 - RESULT数组用于存放分组后的结果,预留空间比正数和负数元素总数多两个元素。 - 文件名变量NAME0和NAME1分别指向INPUT1.DAT和OUTPUT1.DAT。 2. 定义栈段(STACSEGMENT)和代码段(CODESEGMENT)的初始设置,使用标准段寄存器。 3. 编写主程序(STARTPROCFAR): - 调用LOAD过程从NAME0指定的文件中读取40个字节的数据到SOURCE地址。 - 初始化处理流程,比如清零AX寄存器,设置附加段寄存器ES指向DATA段。 - 在BEGIN标记处,程序应该开始处理数据,检查每个元素的符号,将其放入相应的数组(正数或负数)。 - 使用指针DI和BX,DI指向PDATA(正数数组缓冲区),初始值为OFFSET PDATA,表示从PDATA开始存放正数。 - 当遍历到所有元素后,统计正数和负数的数量,并更新RESULT数组。 - 将正数数组和正数个数、负数数组和负数个数依次存储到RESULT。 - 调用SAVE过程,将RESULT中的数据保存到NAME1指定的OUTPUT1.DAT文件中。 4. 函数调用: - EXTRN LOAD:FAR 和 SAVE:FAR 表示这两个过程是外部函数,需要链接IO.OBJ文件以生成可执行文件PROG1.EXE。 5. 要求程序进行汇编和链接,最后生成可执行文件并运行。如果调试过程中发现错误,考生需要修正这些错误以确保程序的正确运行。 本题考核了考生对基本数据结构操作、文件I/O、内存管理以及条件判断等计算机基础知识的理解和应用能力。同时,也要求考生具备良好的程序设计习惯,包括清晰的逻辑结构和错误处理。