Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. %include "io.inc"
  2. section .data
  3. SIZE dd 99
  4. CL_SIZE dd 255
  5. count_letters times 256 dd 0
  6. stack times 100 dd 0
  7. temp times 100 dd 0
  8. SIZE_STR dd 7
  9. string db "abbbccdsdksdoskdsodksods"
  10. temp1 dd 0
  11. temp2 dd 0
  12. temp3 dd 0
  13.  
  14. section .text
  15. global CMAIN
  16.  
  17. initialize:
  18. mov al, [string + ecx * 1]
  19. PRINT_CHAR eax
  20. ;mov ebx, -1
  21. ;call count_ebx
  22. mov ebx, [count_letters + eax * 4]
  23. inc ebx
  24. mov [count_letters + eax * 4], ebx
  25. inc ecx
  26. cmp ecx,[SIZE_STR]
  27. jne initialize
  28. ret
  29.  
  30. stack_print_up:
  31. mov ebx, [SIZE]
  32. sub ebx, ecx
  33. PRINT_CHAR [stack + ebx * 4]
  34. loop stack_print_up
  35. mov ebx, [SIZE]
  36. sub ebx, ecx
  37. PRINT_CHAR [stack + ebx * 4]
  38. ret
  39.  
  40. stack_print_down:
  41. PRINT_CHAR [stack + ecx * 4]
  42. loop stack_print_down
  43. PRINT_CHAR [stack + ecx * 4]
  44. ret
  45.  
  46. push_back:
  47. mov [stack + esi * 4], ecx
  48. inc esi
  49. ret
  50.  
  51. pop_back:
  52. dec esi
  53. mov edx, 0
  54. mov [stack + esi * 4], edx
  55. ret
  56.  
  57. start_cycle:
  58. mov ecx, -1
  59. call write_pool
  60. ret
  61.  
  62. write_pool:
  63. inc ecx
  64. cmp ecx, 255
  65. jne continue_pool
  66. ret
  67.  
  68. continue_pool:
  69. mov eax, [count_letters + ecx * 4]
  70. cmp eax, 1
  71. jl write_pool
  72.  
  73. ;push ecx
  74. mov [temp1], ecx
  75. mov [temp2], ebx
  76. mov ecx, [SIZE]
  77. call stack_print_up
  78.  
  79.  
  80. ;pop ecx
  81. mov ecx, [temp1]
  82. mov ebx, [temp2]
  83. PRINT_CHAR ecx
  84. mov [temp1], ecx
  85. mov [temp2], ebx
  86. ;push ecx
  87. mov ecx, [SIZE]
  88. call stack_print_down
  89. mov ecx, [temp1]
  90. mov ebx, [temp2]
  91. ;pop ecx
  92. NEWLINE
  93.  
  94. mov eax, [count_letters + ecx * 4]
  95. cmp eax, 1
  96. je write_pool
  97. sub eax, 2
  98. mov [count_letters + ecx * 4], eax
  99. ;push ecx
  100. call push_back
  101. ;pop ecx
  102.  
  103. ;push ecx
  104. mov [temp1], ecx
  105. mov [temp2], ebx
  106. mov ecx, [SIZE]
  107. call stack_print_up
  108. mov ecx,[SIZE]
  109. call stack_print_down
  110. mov ecx, [temp1]
  111. mov ebx, [temp2]
  112. ;pop ecx
  113. NEWLINE
  114.  
  115. push esp
  116. push ecx
  117. ;mov [temp + edi * 4], ecx
  118. ;inc edi
  119. mov ecx, -1
  120. call write_pool
  121. ;dec edi
  122. ;mov ecx, [temp + edi * 4]
  123. pop ecx
  124. pop esp
  125.  
  126. ;push ecx
  127. ;mov ecx, 0
  128. call pop_back
  129. ;pop ecx
  130. mov eax, [count_letters + ecx * 4]
  131. add eax, 2
  132. mov [count_letters + ecx * 4], eax
  133. jmp write_pool
  134.  
  135. end:
  136. ret
  137.  
  138.  
  139. CMAIN:
  140. mov ebp, esp; for correct debugging
  141. ;write your code here
  142. mov esi, 0
  143. mov edi, 0
  144. mov ecx, 0
  145. call initialize
  146. NEWLINE
  147. mov ecx, 0
  148. jmp start_cycle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement