装配中的选择排序

问题描述

我正在尝试在x86程序集中实现选择排序。我在Linux环境中使用AT&T语法。我已经编写了算法,但是由于我不太了解汇编程序,所以我不知道如何合并我的输入数组。这是我的代码

.section .rodata

.result: .string "%d\n"             #string that will be used to print array

.data

.arr: .quad 3,4,9,12,1          #initializing array

.text
.global main

selectionSort:
        push %rbp
        mov %rsp,%rbp
        push %rsi
        push %rdi
        push %rbx
        movq $0,%rax
        movq $0,%rbx

outerFor:
        cmp 12(%rbp),%rax
        jge endOuterFor
        mov %rax,%rcx
        mov %rax,%rdx
        add $1,%rdx

innerFor:
        cmp 12(%rbp),%rdx
        jge endInnerFor
        mov 8(%rbp),%rdi
        mov (%rdi,%rdx,4),%rsi

condition:
        cmp(%rdi,%rcx,%rsi
        jge endInnerFor
        mov %rdx,%rcx

endCondition:
        add $1,%rdx
        jmp innerFor

endInnerFor:
        mov 8(%rbp),%rdx
        mov (%rdx,%rsi
        mov (%rdx,%rax,%rdi
        mov %rdi,(%rdx,4)
        mov %rsi,4)
        add %rcx,%rbx
        add $1,%rax
        jmp outerFor

endOuterFor:
        mov %rbx,%rax
        pop %rbx
        pop %rdi
        pop %rsi
        pop %rbp
        ret

main:

我需要做的是在开始时对数组进行排序,但是我不知道如何将其用作输入。我的代码可能存在错误,但是在处理这些错误之前,我需要查看它如何与输入数组一起运行。关于如何编写主要功能有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)