RAM 存储二进制数和汇编语言的冒泡排序

RAM store binary numbers and bubble sort in assembly language

我必须使用 ARM v7 执行一个例程,在 RAM 内存中存储 10 个二进制数,然后使用冒泡排序从高到低对这些数字进行排序,我应该如何开始?

.func
bubbleSortAscendingU32:
    ldr     r3, [r0], #4
    mov     r1, #9*4
    mov     r12, #9*4
1:
    ldr     r2, [r0], #4
    cmp     r2, r3
    strdlo  r2, r3, [r0, #-8]
    movhi   r3, r2
    subs    r12, r12, #4
    bgt     1b

    sub     r0, r0, r1
    subs    r1, r1, #4
    ldrgt   r3, [r0, #-4]
    movgt   r12, r1
    bgt     1b

    bx      lr
.endfunc

假设我们正在处理 uint32_t 的数组,上面的方法可能有效。

strdlomovhi 都必须替换为其他类型:

无符号降序: strdhimovlo

有符号升序: strdltmovgt

有符号降序: strdgtmovlt

函数原型:

void bubbleSortAscendingU32(uint32_t *pSrc);

void bubbleSortDescendingU32(uint32_t *pSrc);

void bubbleSortAscendingS32(int32_t *pSrc);

void bubbleSortDescendingS32(int32_t *pSrc);


  • 不要问我细节。我不得不写半本书来解释。按照说明逐步进行,直到您最终理解流程。
  • 您的教授很可能需要相当长的时间才能理解上述例程。
  • 我怀疑他会相信这是你自己写的。说实话。