汇编语言实现数据排序与显示程序

5星 · 超过95%的资源 需积分: 9 7 下载量 4 浏览量 更新于2024-09-15 收藏 37KB DOC 举报
"该资源是一个汇编语言编程的实验,目标是编写一个程序,能够接收用户从键盘输入的任意数据,然后对这些数据进行由小到大的排序,并将排序后的结果展示出来。程序中使用了压缩BCD码(Binary Coded Decimal)来存储和处理数字,采用冒泡排序算法对数据进行排序。" 在该实验中,程序员首先定义了一个数据段(DSEGMENT),其中包含了提示信息(PU1 和 PU2)和一个双字节数组(D2)用于存储用户输入的数据。PU1 提示用户输入数字,PU2 则用于显示排序后的信息。数组 D2 被初始化为 32 个未知值的双字节项,可以存储最多16个两位数(因为每个数字用两个字节的压缩BCD码表示)。 接着,程序进入了代码段(CSEGMENT),通过设置段寄存器(DS 和 ES)以及初始化 SI、CX 和 DX 寄存器来准备数据输入。然后,使用 DOS 的标准输入函数(INT 21H 功能号 09H)显示提示信息并读取用户输入。用户输入的每个字符被检查,当遇到回车符(0DH)时,表示输入结束。 输入过程中,程序将字符转换为十进制数,并以压缩BCD码的形式存储在数组 D2 中。这里的压缩BCD码是一种节省空间的编码方式,每个数字(0-9)用一个字节表示,最高位(位7)用于指示是否有千位,其余四位存储实际的数值。如果输入的数字超过8000,则被视为负数。 排序过程使用了冒泡排序算法,这是一种简单的交换排序方法,通过不断比较相邻元素并交换位置,使得较大的元素逐渐“冒”到数组的末尾。循环体(AG2)中调用了子程序 SUBP 进行一次冒泡排序的交换操作,然后通过 LOOP 指令重复这个过程,直到所有元素都排序完成。 最后,排序完成后,程序会再次调用 DOS 输入输出函数(INT 21H 功能号 09H)显示提示信息“排序后:”,然后通过一系列计算和转换,将BCD码形式的数字转换回十进制,逐个输出到屏幕上。输出过程中,每个数字的千位、百位、十位和个位分别进行处理,确保正确显示排序后的结果。 这个实验详细介绍了如何在汇编语言环境中编写一个基本的输入输出及排序程序,涵盖了数据输入、转换、存储、排序和输出等多个关键步骤,是学习汇编语言和数据处理的好例子。