Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. ; вводим число Х, А=2
  2.  
  3. ; Цикл1: если А=1 то рет
  4. ; делить Х/А
  5. ; если Ост=0 то Цикл2
  6. ; если Ост<>0 то Цикл3
  7.  
  8. ; Цикл2: вывод текущего А
  9. ; А=2
  10. ; возврат Цикл1
  11.  
  12. ; Цикл3: А+1
  13. ;ввела число вычла код 0 чет сделала прибавила код 0 к результирующим циферкам и выводим
  14.  
  15. section .data
  16. len equ 255
  17. text db '*'
  18.  
  19. section .bss
  20. num resb len
  21. dig resb len
  22. mn resb len
  23. mn2 resb len
  24.  
  25. section .text
  26.  
  27. global _start
  28.  
  29. Digit1:
  30. xor ebx, ebx
  31. mov bl, byte [num + esi] ;
  32. mul ebp
  33. sub bl, '0'
  34. add eax, ebx
  35.  
  36. inc esi
  37. cmp esi, ecx
  38. jl Digit1
  39. ret
  40.  
  41. Cycle1:
  42. cmp eax, 1
  43. je .Re
  44. div ebx
  45. cmp edx, 0
  46. je Cycle2
  47. jne Cycle3
  48. .Re:
  49. ret
  50. ret
  51.  
  52. Cycle2:
  53. mov esi, eax
  54. xor eax, eax
  55. xor ecx, ecx
  56. mov eax, ebx ;кладем пр.мн в еах
  57. xor ebx, ebx
  58.  
  59. call Digit2
  60.  
  61. Digit2:
  62. div ebp ;берем младший разряд простого множителя
  63. add edx, '0' ;к нему прибавляем код нуля чтобы стал символом
  64.  
  65. push edx
  66. xor edx, edx
  67. inc edi
  68.  
  69. cmp eax, 0
  70. jne Digit2
  71. je Output
  72. ret
  73.  
  74. Output:
  75. cmp edi, 0
  76. je Cycle4
  77. ;pop ebx
  78.  
  79. mov edx, edi
  80. mov ecx, esp
  81. mov ebx, 1
  82. mov eax, 4
  83. int 80h
  84.  
  85. xor eax,eax
  86. dec edi
  87. jmp Output
  88.  
  89.  
  90. Cycle4:
  91. mov eax, 4
  92. mov ebx, 1
  93. mov ecx, [text]
  94. mov edx, 1
  95. int 80h
  96.  
  97. xor eax, eax
  98. mov eax, esi
  99. xor ecx, ecx
  100. xor edi, edi
  101. xor ebx, ebx
  102. xor edx, edx
  103.  
  104. mov ebx, 2
  105. jmp Cycle1
  106. ret
  107.  
  108. Cycle3:
  109. xor edx, edx
  110. xor eax, eax
  111. mov eax, esi
  112. add ebx, 1
  113. jmp Cycle1
  114. ret
  115.  
  116.  
  117.  
  118. _start:
  119. mov eax, 3 ;ввожу число
  120. mov ebx, 0
  121. mov ecx, num
  122. mov edx, len
  123. int 80h
  124.  
  125. xor ecx, ecx
  126. mov ecx, eax ;копирую длину введеной строки в есх
  127. sub ecx, 1 ;вычитаю 1 чтобы не учитывать в длине перенос строки
  128. xor eax, eax
  129. mov ebp, 10 ;для умножения дальше
  130. call Digit1
  131.  
  132. xor esi, esi
  133. mov esi, eax
  134. xor ebx, ebx
  135. mov ebx, 2
  136. call Cycle1
  137. int 80h
  138.  
  139. mov eax, 1
  140. mov ebx, 0
  141. int 80h
  142.  
  143.  
  144. ;mov eax, [num]
  145. ;mov ebx, 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement