Advertisement
Guest User

Untitled

a guest
May 26th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. .section .data
  2.  
  3. str1: .ascii "Unesite string: \0"
  4. str1_len = . - str1
  5.  
  6. str2: .ascii "Rezultat: \0"
  7. str2_len = . - str2
  8.  
  9. duzina: .long 0
  10. MAX=101
  11. unos: .fill MAX,1,0
  12.  
  13. rez: .fill MAX,1,0
  14.  
  15. .section .text
  16. .globl main
  17.  
  18.  
  19. pp1:
  20. pushl %ebp
  21. movl %esp, %ebp
  22. pushl %esi
  23. pushl %edi
  24. pushl %ebx
  25.  
  26. movl 8(%ebp), %esi #pokazivac na str
  27. xorl %ecx, %ecx
  28.  
  29. provera_slova:
  30. cmpb $'\n', (%esi)
  31. je kraj_pp1
  32. cmpb $'A', (%esi)
  33. jbe preskoci
  34. cmpb $'Z', (%esi)
  35. jbe veliko_slovo
  36. cmpb $'a', (%esi)
  37. jb preskoci
  38. cmpb $'z', (%esi)
  39. jb malo_slovo
  40. jmp preskoci
  41.  
  42. # R = R or 32
  43. veliko_slovo:
  44. orb $32, (%esi)
  45. jmp preskoci
  46.  
  47. preskoci:
  48. incl %esi
  49. jmp provera_slova
  50.  
  51. # R = R and (not 32)
  52. malo_slovo:
  53. movb $32, %cl
  54. notb %cl
  55. andb %cl, (%esi)
  56. jmp preskoci
  57.  
  58. kraj_pp1:
  59. popl %ebx
  60. popl %edi
  61. popl %esi
  62.  
  63. movl %ebp, %esp
  64. popl %ebp
  65. ret
  66.  
  67. pp2:
  68. pushl %ebp
  69. movl %esp, %ebp
  70. pushl %esi
  71. pushl %edi
  72. pushl %ebx
  73.  
  74. movl 8(%ebp), %esi
  75.  
  76. cezar:
  77. cmpb $'\n', (%esi)
  78. je kraj_pp2
  79. cmpb $'A', (%esi)
  80. jb preskoci2
  81. cmpb $'X', (%esi)
  82. jb shift
  83. cmpb $'Z', (%esi)
  84. jbe spec
  85.  
  86.  
  87. cmpb $'a', (%esi)
  88. jb preskoci2
  89. cmpb $'x', (%esi)
  90. jb shift
  91. cmpb $'z', (%esi)
  92. jbe spec
  93.  
  94. jmp preskoci2
  95.  
  96. spec:
  97. subb $23, (%esi)
  98. jmp preskoci2
  99.  
  100. shift:
  101. addb $3, (%esi)
  102. jmp preskoci2
  103.  
  104. preskoci2:
  105. incl %esi
  106. jmp cezar
  107.  
  108.  
  109. kraj_pp2:
  110. popl %ebx
  111. popl %edi
  112. popl %esi
  113.  
  114. movl %ebp, %esp
  115. popl %ebp
  116. ret
  117.  
  118.  
  119. pp3:
  120. pushl %ebp
  121. movl %esp, %ebp
  122.  
  123. pushl %esi
  124. pushl %edi
  125. pushl %ebx
  126.  
  127. movl 12(%ebp), %esi
  128.  
  129. xorl %edi, %edi #brojac slova
  130.  
  131. brojac:
  132. cmpb $'\n', (%esi)
  133. je kraj_brojaca
  134. cmpb $'A', (%esi)
  135. jb preskoci3
  136. cmpb $'Z', (%esi)
  137. jbe povecaj_brojac
  138. cmpb $'a', (%esi)
  139. jb preskoci3
  140. cmpb $'z', (%esi)
  141. jbe povecaj_brojac
  142. jmp preskoci3
  143.  
  144. povecaj_brojac:
  145. incl %edi
  146. jmp preskoci3
  147.  
  148. preskoci3:
  149. incl %esi
  150. jmp brojac
  151.  
  152. kraj_brojaca:
  153.  
  154. cmpl $11, %edi
  155. jb oktalni
  156. cmpl $20, %edi
  157. jbe dekadni
  158. jmp hex
  159.  
  160. oktalni:
  161. pushl $8
  162. pushl 8(%ebp)
  163. pushl %edi
  164. call konverzija
  165. addl $12, %esp
  166.  
  167. jmp kraj_pp3
  168.  
  169. dekadni:
  170. pushl $10
  171. pushl 8(%ebp)
  172. pushl %edi
  173. call konverzija
  174. addl $12, %esp
  175.  
  176. jmp kraj_pp3
  177.  
  178. hex:
  179. pushl $16
  180. pushl 8(%ebp)
  181. pushl %edi
  182. call konverzija
  183. addl $12, %esp
  184.  
  185. jmp kraj_pp3
  186.  
  187. kraj_pp3:
  188. popl %ebx
  189. popl %edi
  190. popl %esi
  191.  
  192. movl %ebp, %esp
  193. popl %ebp
  194. ret
  195.  
  196. konverzija:
  197. pushl %ebp
  198. movl %esp, %ebp
  199.  
  200. pushl %esi
  201. pushl %edi
  202. pushl %ebx
  203.  
  204. movl 16(%ebp), %ebx #baza
  205. movl 12(%ebp), %edi #pokazivac na prazan rez
  206. movl 8(%ebp), %eax #broj koji konvertujemo
  207.  
  208. xorl %esi, %esi #brojac karaktera
  209.  
  210.  
  211. i2_cifra:
  212. incl %esi
  213. xorl %edx, %edx
  214. divl %ebx
  215. cmpb $10, %dl
  216. jae upisi_slovo
  217. addb $'0', %dl
  218. jmp nastavi
  219.  
  220. upisi_slovo:
  221. addb $'0'+7, %dl
  222. jmp nastavi
  223.  
  224. nastavi:
  225. movb %dl, (%edi)
  226. incl %edi
  227. andl %eax, %eax
  228. jnz i2_cifra
  229.  
  230. #incl %esi
  231. #incl %edi
  232. #movb $'\n', (%edi)
  233. incl %edi
  234. movb $'\0', (%edi)
  235.  
  236. subl $2, %edi
  237. movl %esi, %ebx
  238.  
  239. movl 12(%ebp), %esi
  240. jmp obrni
  241.  
  242. obrni:
  243. cmpl %edi, %esi
  244. jae kraj_o
  245. movb (%esi), %ah
  246. movb (%edi), %al
  247. movb %ah, (%edi)
  248. movb %al, (%esi)
  249.  
  250. incl %esi
  251. decl %edi
  252. jmp obrni
  253.  
  254. kraj_o:
  255. movl %ebx, %eax
  256.  
  257. popl %ebx
  258. popl %edi
  259. popl %esi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement