K1SR

evo ti Sanja

Jun 18th, 2022 (edited)
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. .section .data
  2. str1: .ascii "Unesite do 20 heks. brojeva: \0"
  3. str1_len=.-str1
  4. str2: .ascii "Unesite opciju (cifra 1-4): \0"
  5. str2_len=.-str2
  6. str3: .ascii "Izlaz: \0"
  7. str3_len=.-str3
  8.  
  9. greska11: .ascii "Prekoracenje!\n\0"
  10. greska11_len=.-greska11
  11. greska22: .ascii "Pogresan unos!\n\0"
  12. greska22_len=.-greska22
  13. greska33: .ascii "Prekoracenje prilikom konv. varijanse i artim. sredine\n\0"
  14. greska33_len=.-greska33
  15. greska44: .ascii "Pogresna opcija!\n\0"
  16. greska44_len=.-greska44
  17. novi_red: .ascii "\n"
  18. novi_red_len=.-novi_red
  19.  
  20.  
  21. unos1: .fill 100,1,0
  22. unos1_len=.-unos1
  23. unos2: .fill 100,1,0
  24. unos2_len=.-unos2
  25. string: .fill 100,1,0
  26. string_len=.-string
  27. niz: .fill 20,4,0
  28.  
  29. suma: .long 0
  30. min: .long 0
  31. max: .long 0
  32. aritm: .long 0
  33. opcija: .long 0
  34. brojac: .long 0
  35. baza10: .long 10
  36. baza16: .long 16
  37. .section .text
  38. .globl main
  39. main:
  40. movl $4, %eax
  41. movl $1, %ebx
  42. movl $str1, %ecx
  43. movl $str1_len, %edx
  44. int $0x80
  45.  
  46. movl $3, %eax
  47. movl $0, %ebx
  48. movl $unos1, %ecx
  49. movl $unos1_len, %edx
  50. int $0x80
  51. movl %ecx, %esi
  52. movl $0, %eax
  53. movl $0, %ebx
  54. movl $0, %edx
  55. movl $0, %edi #brojac
  56. petlja1:
  57. movb (%esi), %bl
  58. cmpb $'\n' , %bl
  59. je ucitaj_opciju
  60. cmpb $' ' , %bl
  61. jne nasao_broj
  62. incl %esi
  63. jmp petlja1
  64. nasao_broj:
  65. movb (%esi), %bl
  66. cmpb $'\n' , %bl
  67. je dodaj_u_niz
  68. cmpb $' ' , %bl
  69. je dodaj_u_niz
  70. cmpb $'0' , %bl
  71. jb greska2
  72. cmpb $'9' , %bl
  73. jbe nasao_broj2
  74. cmpb $'A' , %bl
  75. jb greska2
  76. cmpb $'F' , %bl
  77. jbe nasao_broj1
  78. subb $32, %bl
  79. cmpb $'F' , %bl
  80. ja greska2
  81. nasao_broj1:
  82. subb $7, %bl
  83. nasao_broj2:
  84. subb $'0' , %bl
  85. movl $0, %edx
  86. mull baza16
  87. jc greska1
  88. addl %ebx, %eax
  89. jc greska1
  90. incl %esi
  91. jmp nasao_broj
  92. dodaj_u_niz:
  93. movl %eax, niz(,%edi,4)
  94. movl $0, %eax
  95. incl %edi
  96. cmpb $'\n' , %bl
  97. je ucitaj_opciju
  98. incl %esi
  99. jmp petlja1
  100. ###########################################
  101. ucitaj_opciju:
  102. movl %edi, brojac
  103. movl $4, %eax
  104. movl $1, %ebx
  105. movl $str2, %ecx
  106. movl $str2_len, %edx
  107. int $0x80
  108.  
  109. movl $3, %eax
  110. movl $0, %ebx
  111. movl $unos2, %ecx
  112. movl $unos2_len, %edx
  113. int $0x80
  114. subb $'0' , (%ecx)
  115. cmpb $1 , (%ecx)
  116. je upisi_1
  117. cmpb $2 , (%ecx)
  118. je upisi_2
  119. cmpb $3 , (%ecx)
  120. je upisi_3
  121. cmpb $4 , (%ecx)
  122. je upisi_4
  123. jmp greska4
  124. upisi_1:
  125. movl $1, opcija
  126. jmp predlogika
  127. upisi_2:
  128. movl $2, opcija
  129. jmp predlogika
  130. upisi_3:
  131. movl $3, opcija
  132. jmp predlogika
  133. upisi_4:
  134. movl $4, opcija
  135. jmp predlogika
  136. ###########################################
  137. predlogika:
  138. cmpl $1, opcija
  139. je min_clan
  140. cmpl $2, opcija
  141. je max_clan
  142. cmpl $3, opcija
  143. je aritm_sredina
  144. cmpl $4, opcija
  145. je varijansa
  146. ###########################################
  147. ###########################################
  148. ###########################################
  149. min_clan:
  150. movl $0, %esi
  151. movl niz(,%esi,4), %ebx
  152. movl %ebx, min
  153. incl %esi
  154. min_clan1:
  155. cmpl %esi, %edi
  156. je prebaci_min1
  157. movl niz(,%esi,4), %eax
  158. cmpl min, %eax
  159. jb prebaci_min
  160. incl %esi
  161. jmp min_clan1
  162. prebaci_min:
  163. movl niz(,%esi,4), %ebx
  164. movl %ebx, min
  165. incl %esi
  166. jmp min_clan1
  167. prebaci_min1:
  168. movl min, %eax
  169. jmp predkonv
  170. ############################
  171. max_clan:
  172. movl $0, %esi
  173. movl niz(,%esi,4), %ebx
  174. movl %ebx, max
  175. incl %esi
  176. max_clan1:
  177. cmpl %esi, %edi
  178. je prebaci_max1
  179. movl niz(,%esi,4), %eax
  180. cmpl max, %eax
  181. ja prebaci_max
  182. incl %esi
  183. jmp max_clan1
  184. prebaci_max:
  185. movl niz(,%esi,4), %ebx
  186. movl %ebx, max
  187. incl %esi
  188. jmp max_clan1
  189. prebaci_max1:
  190. movl max, %eax
  191. jmp predkonv
  192. ############################
  193. aritm_sredina:
  194. movl $0, %esi
  195. movl $0, %eax
  196. aritm_sredina1:
  197. cmpl %esi, %edi
  198. je aritm_sredina2
  199. addl niz(,%esi,4), %eax
  200. incl %esi
  201. jmp aritm_sredina1
  202. aritm_sredina2:
  203. movl $0, %edx
  204. divl %edi
  205. jmp predkonv
  206. varijansa:
  207. predkonv:
  208. movl $string, %esi
  209. movl %esi, %edi
  210. movl $0, %edx
  211. konverzija:
  212. cmpl $0, %eax
  213. je obrni
  214. movl $0, %edx
  215. divl baza10
  216. addb $'0' , %dl
  217. movb %dl, (%esi)
  218. incl %esi
  219. jmp konverzija
  220. obrni:
  221. movb (%esi), %dl
  222. movb (%edi), %dh
  223. movb %dh, (%esi)
  224. movb %dl, (%edi)
  225. incl %edi
  226. decl %esi
  227. cmpl %edi, %esi
  228. ja obrni
  229.  
  230. movl $4, %eax
  231. movl $1, %ebx
  232. movl $str3, %ecx
  233. movl $str3_len, %edx
  234. int $0x80
  235.  
  236. movl $4, %eax
  237. movl $1, %ebx
  238. movl $string, %ecx
  239. movl $string_len, %edx
  240. int $0x80
  241.  
  242. movl $4, %eax
  243. movl $1, %ebx
  244. movl $novi_red, %ecx
  245. movl $novi_red_len, %edx
  246. int $0x80
  247. movl $0, %ebx
  248. kraj:
  249. movl $1, %eax
  250. int $0x80
  251.  
  252. greska1:
  253. movl $4, %eax
  254. movl $1, %ebx
  255. movl $greska11, %ecx
  256. movl $greska11_len, %edx
  257. int $0x80
  258. movl $1, %ebx
  259. jmp kraj
  260.  
  261. greska2:
  262. movl $4, %eax
  263. movl $1, %ebx
  264. movl $greska22, %ecx
  265. movl $greska22_len, %edx
  266. int $0x80
  267. movl $2, %ebx
  268. jmp kraj
  269.  
  270. greska3:
  271. movl $4, %eax
  272. movl $1, %ebx
  273. movl $greska33, %ecx
  274. movl $greska33_len, %edx
  275. int $0x80
  276. movl $3, %ebx
  277. jmp kraj
  278.  
  279. greska4:
  280. movl $4, %eax
  281. movl $1, %ebx
  282. movl $greska44, %ecx
  283. movl $greska44_len, %edx
  284. int $0x80
  285. movl $4, %ebx
  286. jmp kraj
  287.  
  288.  
  289.  
  290.  
Add Comment
Please, Sign In to add comment