如何解决ARM汇编:如何交换数组元素来实现排序?
在首先将数组从最小整数排序到最大整数后,我正在尝试编写一个程序来搜索数组的中位数。我正在引用一个 C 程序来查找数组的中位数以将其转换为 ARM 程序集等效项。如果 a[j] > a[j+1],我无法弄清楚如何将 a[j] 与 a[j+1] 交换。
这是 C 程序:
void swap(int *p,int *q) {
int t;
t=*p;
*p=*q;
*q=t;
}
void sort(int a[],int n) {
int i,j,temp;
for(i = 0;i < n-1;i++) {
for(j = 0;j < n-i-1;j++) {
if(a[j] > a[j+1])
swap(&a[j],&a[j+1]);
}
}
}
int main() {
int a[] = {6,3,8,5,1};
int n = 5;
int sum,i;
sort(a,n);
n = (n+1) / 2 - 1; // -1 as array indexing in C starts from 0
这是我目前编写的程序:
.syntax unified
.cpu cortex-m4
.fpu softvfp
.thumb
.section .data
.balign
array: .word 81,75,90,94,79,86,89,54,98,-1
size: .word 9
.section .text
.balign
.global main
Median:
ldr r8,=array
ldr r9,=size //hard coded size of the array -1 is not meant to be included
mov r1,#0 // i = 0
mov r3,#0 // j = 0
ldr r2,[r8,r1,lsl #2] // getting a[j]
ldr r4,lsl #3] //getting a[j+1]
cmp r2,r4
bgt swap
swap: // swap a[j] with a[j+1]
str r2,[r4]
forever:
b forever
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。