Sorting 如何用6位数的工件编写汇编排序程序8086?

Sorting 如何用6位数的工件编写汇编排序程序8086?,sorting,assembly,numbers,stack,x86-16,Sorting,Assembly,Numbers,Stack,X86 16,我不熟悉汇编语言,我知道很多代码。 然而,我使用的8086模拟器只适用于16位数字。 这是我真正陷入的家庭作业: 如何使用编写汇编代码?请执行以下操作: 1-get 20 , maximum 6-digits decimal numbers and store them in an array. 2- sort the array in ascending order. 我真的很难理解如何为这么长的数字管理寄存器和堆栈 我们将提前感谢您的帮助。为了使用16位寄存器对32位数字(或更宽)进行排

我不熟悉汇编语言,我知道很多代码。 然而,我使用的8086模拟器只适用于16位数字。 这是我真正陷入的家庭作业: 如何使用编写汇编代码?请执行以下操作:

1-get 20 , maximum 6-digits decimal numbers and store them in an array.

2- sort the array in ascending order.
我真的很难理解如何为这么长的数字管理寄存器和堆栈


我们将提前感谢您的帮助。

为了使用16位寄存器对32位数字(或更宽)进行排序,您必须分别比较每个数字的上半部分

假设我们有两个随机的32位数字(以十六进制显示)
4567afdf
321abc09

现在,当您将它们视为16位值时,它们如下所示:

4567 afdf
321a bc09
正如您很容易看到的,您可以单独比较上面的16位

如果上面的16位较高或较低,那么您知道较低的部分不再重要,并相应地对它们进行排序

如果上16位相等,则比较下16位,如果它们也相等,则两个数字相等=>不需要排序,否则将相应地对它们进行洗牌。因为上面的16位也是相等的,所以您甚至不需要对它们进行洗牌

如果上面的16位不同,您仍然需要相应地洗牌下面的16位,因为它们可能不同

这种方法的基本原理可以用于任意位数,而不仅仅是32位。一般来说,当你遇到一个看似困难的问题时,你应该试着想出一些简单的例子,以及如何解决它。然后你可以把它扩展到更复杂的情况

编辑:

另一种方法是,如果您有十进制数字的字符串,并且希望根据字符串表示而不是数字对其进行排序

在这种情况下,您可以按如下方式执行

  • 如果两个数字字符串的长度不同,则越短的数字越小
  • 如果长度相等,则可以单独查看每个数字(从第一个数字开始),直到找到不相等的数字或字符串结尾。如果到达字符串的末尾,则数字相同,否则您将知道哪个更高/更低

  • 到目前为止你试过什么?听起来像是一个家庭作业,所以我想你已经得到了如何开始的解释;但我无法管理如何开始:|我可以为排序和其他工作人员排序并编写代码,最多4位数字(16位),但这是一个20位数字,会让我感到困惑。你可以开始构建作业并发布你遇到的步骤。