Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void copyArr(int* a, int* b, int n)
  2. {
  3.     int sizeEl;
  4.     int space;
  5.     __asm
  6.     {
  7.         mov sizeEl, type a // размер элемента
  8.  
  9.         mov eax, b          // eax = b
  10.         sub eax, a          // eax = b - a
  11.         mov space, eax      // смещение
  12.  
  13.         mov eax, n          // eax = n
  14.         dec eax             // eax = n - 1
  15.         mov ecx, eax        // ecx = n - 1
  16.  
  17.         mov ebx, a          // база
  18.  
  19.         // b[i] = <база> + <множитель> * <индекс> + <смещение>
  20.         // b[i] = a[ebx + sizeEl*ecx + space]
  21.  
  22.         L :
  23.             mov eax, ecx    // eax = ecx
  24.             mul sizeEl      // eax = ecx * sizeEl
  25.             add eax, ebx    // eax = ebx +
  26.             mov edx, [eax]  // edx = a[ecx]
  27.  
  28.             add eax, space  // memory of b[i] = ebx + sizeEl*ecx + space
  29.             mov [eax], edx  // b[ecx] = a[ecx]
  30.  
  31.             dec ecx         // ecx --
  32.         cmp ecx, 0          // ecx >= 0 ? L : exit
  33.         JGE L
  34.     }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement