Advertisement
StreetKatya

Аня

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