MASM冒泡按降序排序

时间:2013-08-19 03:26:33

标签: assembly masm bubble-sort

我正在尝试按降序对列表进行排序,使用冒泡排序,但我遇到了两个问题。第一个是下面的代码插入一个0作为第一个元素,原因我不明白(我想也许这是数组的错误,但是当不使用这种类型时它不存在,所以我不喜欢不知道它来自哪里。第二个问题是这个实现按升序排序,我无法弄清楚如何修复它来做反对点。如果我能弄清楚零事情可以做一个简单的交换,我假设。我有一个双重问题,就是不能很好地使用MASM,而且不善于使用我不太了解的语言来实现各种类型。

代码:

来自main的电话:

push count ; size of the array
push OFFSET list ; the array
call sortList

过程:

sortList Proc
push ebp
mov ebp, esp
mov ecx,[ebp+12]
mov edx,[ebp+8]
bs_o:
xor ebp,ebp
bs_i:
mov eax,DWORD PTR [edx+ebp*4+4]
cmp DWORD PTR [edx+ebp*4],eax
jb @F
xchg eax,DWORD PTR [edx+ebp*4]
mov DWORD PTR [edx+ebp*4+4],eax
@@:
add ebp,1
cmp ebp,ecx
jb bs_i
loop bs_o
pop ebp
retn 8

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

  

第二个问题是这个实现按升序排序,我无法弄清楚如何修复它来做反对点。

比较两个元素后反转分支条件。也就是说,不要jb $F,而是jae @F