Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. SECTION .data
  2. ;num equ 3
  3. ;len equ $ - num
  4. ;newLine db 0xa
  5.  
  6.  
  7.  
  8. SECTION .bss
  9. num resb 255
  10. array resb 255
  11. line resb 255
  12.  
  13.  
  14. SECTION .text
  15. global _start
  16.  
  17. _start:
  18.  
  19. call read
  20.  
  21. mov ecx, eax
  22. dec ecx
  23.  
  24. call perevod
  25.  
  26.  
  27. mov ebx, 1 ;число, на которое делим
  28. mov esi, 0
  29.  
  30.  
  31. lp:
  32. inc ebx ;начинаем с 2 и далее ув её
  33. mov eax, edi ;делимоe
  34. cmp eax, ebx
  35. jne .ne
  36. call _print1
  37. .ne:
  38. mov edx, 0
  39. div ebx
  40. cmp edx, 0 ;сравниваем остаток с 0
  41. jne lp ;есть остаток - идём в этот же цикл и ув делитель
  42. je lp2 ; нет остатка- др цикл, делим ост делимое на то же число
  43.  
  44. lp2: cmp eax, ebx
  45. jne .ne
  46. call _print2
  47. .ne:
  48. inc esi
  49. mov [array + esi -1], ebx
  50. mov edi, eax ;заносим в edi оставшиеся делимое
  51. mov edx, 0
  52. div ebx
  53. cmp edx, 0 ;сравниваем остаток
  54. je lp2
  55. jne lp3
  56.  
  57. lp3: inc ebx
  58. cmp edi, ebx
  59. je .ne
  60. call _print2
  61. .ne:
  62. mov eax, edi
  63. mov edx, 0
  64. div ebx
  65. cmp edx, 0
  66. je lp2
  67. jne lp3
  68.  
  69.  
  70. mov eax, 1
  71. int 80h
  72.  
  73.  
  74. read:
  75. mov eax, 3
  76. mov ebx, 2
  77. mov ecx, line
  78. mov edx, 255
  79. int 80h
  80. ret
  81.  
  82.  
  83.  
  84. _print1:
  85. push ebx
  86. push eax
  87. push edx
  88. push esi
  89. push edi
  90. push ecx
  91. mov edx, 255
  92. mov ecx, num
  93. mov ebx, 1
  94. mov eax, 4
  95. pop ebx
  96. pop eax
  97. pop edx
  98. pop esi
  99. pop edi
  100. pop ecx
  101. int 80h
  102. ret
  103.  
  104. _print2:
  105. push ebx
  106. push eax
  107. push edx
  108. push esi
  109. push edi
  110. push ecx
  111. mov edx, 255
  112. mov ecx, array
  113. mov ebx, 1
  114. mov eax, 4
  115. pop ebx
  116. pop eax
  117. pop edx
  118. pop esi
  119. pop edi
  120. pop ecx
  121. int 80h
  122. ret
  123.  
  124. perevod: xor eax, eax ; ecx - длина строки line
  125. mov ebx, 10
  126. xor edi, edi
  127. .cycle:
  128. mul ebx ; eax - результат
  129. xor edx, edx
  130. mov dl, [line + edi] ; берем байт
  131. sub dl, 30h
  132. add eax, edx
  133. inc edi
  134. cmp edi, ecx
  135. jle .cycle
  136. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement