Advertisement
StreetKatya

Сдвиг элементов вправо

Sep 15th, 2021
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. ;Дан целочисленный массив из N элементов. Выполнить циклический сдвиг массива ВПРАВО на К элементов.
  2. format PE console
  3. entry start
  4. include 'includes\win32ax.inc'
  5. ; одномернный массив
  6. section '.data' data readable writeable
  7. MaxCnt = 100
  8. N dd ?
  9. Array dd MaxCnt dup(?)
  10. Array2 dd MaxCnt dup(?)
  11. nextInd dd ?
  12. temp dd ?
  13. K dd ?
  14.  
  15. section '.code' code readable executable
  16. start:
  17. cinvoke printf," K = "
  18. cinvoke scanf, "%d", K
  19. cinvoke printf," N = "
  20. cinvoke scanf, "%d", N
  21.  
  22. cmp eax,1
  23. jne er1
  24. mov eax,[K]
  25. cdq
  26. mov ebx,[N]
  27. idiv ebx
  28. mov [K],edx
  29. ; ввод массива
  30. mov ecx,[N]
  31. mov esi, Array
  32. readArr:
  33. push ecx
  34. cinvoke scanf,"%d",esi
  35. cmp eax,1
  36. jne er1
  37. add esi,4
  38. pop ecx
  39. loop readArr
  40. ;сдвиг массива #1
  41. mov esi,Array
  42. mov edi,Array2
  43. mov eax,[K]
  44. mov ebx,4
  45. imul ebx
  46. add edi,eax
  47. mov ecx,[N]
  48. sub ecx,[K]
  49. m1:
  50. mov eax,[esi]
  51. mov [edi],eax
  52. add edi,4
  53. add esi,4
  54. loop m1
  55. ;сдвиг массива #2
  56. mov esi,Array
  57. mov edi,Array2
  58. mov eax,[N]
  59. mov ebx,4
  60. imul ebx
  61. add esi,eax
  62. mov eax,[K]
  63. mov ebx,4
  64. imul ebx
  65. sub esi,eax
  66. mov ecx,[K]
  67. cmp ecx,0
  68. je vivod
  69. m2:
  70. mov eax,[esi]
  71. mov [edi],eax
  72. add edi,4
  73. add esi,4
  74. loop m2
  75.  
  76. ;вывод
  77. vivod:
  78. cinvoke printf,"Array: "
  79. mov ecx,[N]
  80. mov esi, Array2
  81. writeArr:
  82. push ecx
  83. cinvoke printf, "%d ", dword [esi]
  84. add esi,4
  85. pop ecx
  86. loop writeArr
  87. jmp exit
  88.  
  89. er1: cinvoke printf,"Input Error"
  90. exit:
  91.  
  92. cinvoke getchar
  93. invoke ExitProcess,0
  94.  
  95.  
  96.  
  97. section '.idata' import data readable writeable
  98. library kernel32,'kernel32.dll', msvcrt, 'msvcrt.dll'
  99. import kernel32,ExitProcess , 'ExitProcess' ,\
  100. GetStdHandle,'GetStdHandle',\
  101. WriteConsole,'WriteConsoleA',\
  102. ReadConsole,'ReadConsoleA',\
  103. GetProcessHeap, 'GetProcessHeap',\
  104. HeapCreate , 'HeapCreate' ,\
  105. HeapDestroy , 'HeapDestroy' ,\
  106. HeapAlloc , 'HeapAlloc' ,\
  107. HeapFree , 'HeapFree'
  108. import msvcrt, printf,'printf',scanf, 'scanf' ,getchar,'getchar'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement