Advertisement
StreetKatya

Сырой код

Jun 13th, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 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. S1:
  50. cmp ecx,0
  51. je vivod
  52. mov eax,[a]
  53. cmp eax,esi
  54. jge prov
  55. mov edi,[esi]
  56. add esi,4
  57. add edi,4
  58. dec ecx
  59. jmp S1
  60. prov:
  61. mov eax,[b]
  62. cmp eax,esi
  63. jng nuli
  64. mov edi,[esi]
  65. add esi,4
  66. add edi,4
  67. dec ecx
  68. jmp S1
  69. nuli:
  70. inc [count]
  71. add esi,4
  72. add edi,4
  73. dec ecx
  74. jmp S1
  75. ;вывод массива
  76. ;mov ebx, [N]
  77. ;sub ebx, [count]
  78. vivod:
  79. cinvoke printf,"Array: "
  80. mov ecx,[N]
  81. mov esi, Array2
  82. writeArr:
  83. push ecx
  84. cinvoke printf, "%d ", dword [esi]
  85. add esi,4
  86. pop ecx
  87. loop writeArr
  88. jmp exit
  89.  
  90. err1:
  91. cinvoke printf,"Error Input"
  92.  
  93. exit:
  94. cinvoke getchar
  95. invoke ExitProcess,0
  96.  
  97.  
  98.  
  99.  
  100. section '.idata' import data readable writeable
  101. library kernel32,'kernel32.dll', msvcrt, 'msvcrt.dll'
  102. import kernel32,ExitProcess , 'ExitProcess' ,\
  103. GetStdHandle,'GetStdHandle',\
  104. WriteConsole,'WriteConsoleA',\
  105. ReadConsole,'ReadConsoleA',\
  106. GetProcessHeap, 'GetProcessHeap',\
  107. HeapCreate , 'HeapCreate' ,\
  108. HeapDestroy , 'HeapDestroy' ,\
  109. HeapAlloc , 'HeapAlloc' ,\
  110. HeapFree , 'HeapFree'
  111. import msvcrt, printf,'printf',scanf, 'scanf' ,getchar,'getchar'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement