Sam Vilmenay / Mbed 2 deprecated AssemblySort

Dependencies:   mbed

Committer:
samvilm
Date:
Sat Jan 04 12:34:04 2020 +0000
Revision:
2:968db132481b
Parent:
0:fb6bbc10ffa0
Sorts array of numbers in assembly language. Also sorts same array in C to compare and ensure same sorted array is returned.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samvilm 2:968db132481b 1 #include "mbed.h"
samvilm 2:968db132481b 2 // Function prototypes
samvilm 2:968db132481b 3 extern "C" int asm_sort(int numbers[16], int size);
samvilm 2:968db132481b 4 extern "C" int my_leds(int value);
simon 0:fb6bbc10ffa0 5
samvilm 2:968db132481b 6 void c_sort (int numbers[16], int size){
samvilm 2:968db132481b 7 int temp;
samvilm 2:968db132481b 8 for (int out_count = 0; out_count <= size - 2; out_count++){
samvilm 2:968db132481b 9 for (int in_count = 0; in_count <= size - 2 - out_count; in_count++){
samvilm 2:968db132481b 10 if (numbers[in_count] > numbers[in_count + 1]){
samvilm 2:968db132481b 11 temp = numbers[in_count];
samvilm 2:968db132481b 12 numbers[in_count] = numbers[in_count + 1];
samvilm 2:968db132481b 13 numbers[in_count + 1] = temp;
samvilm 2:968db132481b 14 }
samvilm 2:968db132481b 15 }
samvilm 2:968db132481b 16 }
samvilm 2:968db132481b 17 }
samvilm 2:968db132481b 18
samvilm 2:968db132481b 19 // Declare LED outputs
samvilm 2:968db132481b 20 DigitalOut myled1(LED1);
samvilm 2:968db132481b 21 DigitalOut myled2(LED2);
samvilm 2:968db132481b 22 DigitalOut myled3(LED3);
samvilm 2:968db132481b 23 DigitalOut myled4(LED4);
samvilm 2:968db132481b 24 // Set up array to sort
samvilm 2:968db132481b 25 const int size = 16;
samvilm 2:968db132481b 26 int numbers[size] = {12, 11, 14, 10, 9, 8, 22, 7, 6, 5, 15, 4, 3, 2, 0, 1};
simon 0:fb6bbc10ffa0 27
simon 0:fb6bbc10ffa0 28 int main() {
samvilm 2:968db132481b 29 // Show current array contents and set lights to "before" pattern
samvilm 2:968db132481b 30
samvilm 2:968db132481b 31 printf("Before\n\r");
samvilm 2:968db132481b 32 for(int index = 0; index <= size-1; index++){
samvilm 2:968db132481b 33 printf("%d, ", numbers[index]);
samvilm 2:968db132481b 34 my_leds(numbers[index]);
samvilm 2:968db132481b 35 wait(0.5);
simon 0:fb6bbc10ffa0 36 }
samvilm 2:968db132481b 37
samvilm 2:968db132481b 38 // Call the sort function, comment out the one not being used
samvilm 2:968db132481b 39 asm_sort(numbers, size); // Call to assembly sort
samvilm 2:968db132481b 40 //c_sort(numbers, size); // Call to driver test stub
samvilm 2:968db132481b 41
samvilm 2:968db132481b 42 printf("\n\rAfter\n\r");
samvilm 2:968db132481b 43
samvilm 2:968db132481b 44 for(int index = 0; index <= size-1; index++){
samvilm 2:968db132481b 45 printf("%d, ", numbers[index]);
samvilm 2:968db132481b 46 my_leds(numbers[index]);
samvilm 2:968db132481b 47 wait(0.5);
samvilm 2:968db132481b 48 }
samvilm 2:968db132481b 49
samvilm 2:968db132481b 50 while(1) {}
samvilm 2:968db132481b 51 }