Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "time.h"
  4.  
  5. using namespace std;
  6.  
  7.  
  8.  
  9. void selection_sort_asembly() {
  10. int arr[60] = { },
  11. n = 60, // ARRAY LENGTH.
  12. ni, nj, // ARRAY LENGTH FOR "FORI" AND "FORJ".
  13. i, j, minIndex;
  14.  
  15. for (int i = 0; i < 60; i++)
  16. {
  17. arr[i] = rand()%100;
  18. }
  19.  
  20. __asm {
  21. lea esi, arr //; I = 0 (ESI USED AS I).
  22. mov eax, n
  23. mov ni, eax //; N.
  24. fori:
  25. mov ebx, esi //; MININDEX = I(EBX USED AS MININDEX).
  26.  
  27. mov edi, esi //; J = I(EDI USED AS J).
  28. add edi, 4 //; J = I + 1.
  29. mov eax, n
  30. mov nj, eax //; N.
  31. forj:
  32.  
  33. // IF(ARR[J] < ARR[MININDEX]).
  34. mov eax, [edi] //; EAX = ARR[J].
  35. mov edx, [ebx] //]; EDX = ARR[MININDEX].
  36. cmp eax, edx
  37. jae nextj //; IF(ARR[J] >= ARR[MININDEX]).
  38.  
  39. mov ebx, edi //; ELSE: MININDEX = J.
  40.  
  41. nextj :
  42. //; FOR(J = I + 1; J < N; J++).
  43. add edi, 4 //; J++.
  44. dec nj //; ZMINIEJZENIE LICZNIKA
  45. jnz forj //; IF(J < N) JUMP.
  46.  
  47. //; IF(MININDEX != I).
  48. cmp ebx, esi
  49. je nexti //; NIE ZMIENIAJ
  50.  
  51. //; EXCHANGE ARR[I] AND ARR[MININDEX].
  52. mov eax, [esi] //; EAX = ARR[I].
  53. mov edx, [ebx] //; EDX = ARR[MININDEX].
  54. mov[esi], edx //; ARR[I] = ARR[MININDEX].
  55. mov[ebx], eax //; ARR[MININDEX] = ARR[I].
  56.  
  57. nexti:
  58. //; FOR(I = 0; I < N - 1; I++).
  59. add esi, 4 //; I++.
  60. dec ni //; ZMINIEJZENIE LICZNIKA
  61. cmp ni, 1 //; MUST NOT REACH 0.
  62. ja fori //; IF I < (N - 1) JUMP.
  63. }
  64.  
  65. for (int i = 0; i < 60; i++)
  66. cout << arr[i] << " ";
  67. }
  68.  
  69. void selection_sort() {
  70.  
  71. int arr[65] = {},
  72. n = 65,
  73. ni, nj, tmp,
  74. i, j, minIndex;
  75.  
  76. for (int i = 0; i < 65; i++)
  77. {
  78. arr[i] = rand() % 100;
  79. }
  80.  
  81. for (i = 0; i < n - 1; i++)
  82. {
  83. minIndex = i;
  84. for (j = i + 1; j < n; j++)
  85. if (arr[j] < arr[minIndex])
  86. minIndex = j;
  87.  
  88. if (minIndex != i)
  89. {
  90. tmp = arr[i];
  91. arr[i] = arr[minIndex];
  92. arr[minIndex] = tmp;
  93. }
  94. }
  95.  
  96. for (int i = 0; i < 65; i++)
  97. cout << arr[i] << " ";
  98.  
  99. }
  100.  
  101. int main()
  102. {
  103. clock_t begin, end; double time_spent;
  104. begin = clock();
  105. srand((unsigned int)time(NULL));
  106. selection_sort_asembly();
  107. end = clock();
  108. time_spent = (long double)(end - begin) / CLOCKS_PER_SEC;
  109. cout << time_spent;
  110. getchar();
  111. return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement