Advertisement
skalarr

asembler sov

Jun 7th, 2022
1,129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.54 KB | None | 0 0
  1. # autor: Imenko Prezimić INDEX ra1234-2016
  2. # fajlovi: zad.S
  3.  
  4. # Ako vaše rešenje sadrži dodatne fajlove, stavite njihove nazive u liniju fajlovi
  5. # Na primer, ako imate i potprogram u pp.S, iza fajlovi treba da stoji: zad.S pp.S
  6.  
  7. # oktalni brojevi uvek zapocinju sa nulom, npr: 0123, 00
  8. # dok su dekadni npr: 123, 0
  9. .section .data
  10. izlaznik:   .ascii "Izlazni kod: \0"
  11. p0_len = . -izlaznik
  12. punos:      .ascii "Unesite string: \0"
  13. p1_len = . - punos
  14. pgreska:    .ascii "Doslo je do greske u izvrsavanju programa!\n\0"
  15. p2_len = . - pgreska
  16. psuma:      .ascii "Suma elemenata niza je: \0"
  17. p3_len = . - psuma
  18. pbroj_oktalnih: .ascii "\nBroj oktalnih elemenata u nizu: \0"
  19. p4_len = . - pbroj_oktalnih
  20. pbroj_decimalnih: .ascii "\nBroj decimalnih elemenata u nizu: \0"
  21. p5_len = . - pbroj_decimalnih
  22. pnovi_red:  .ascii "\n\0"
  23. nizmax = 30
  24. niz: .fill nizmax,1,42
  25. suma: .long 0
  26. greska: .byte 0
  27.  
  28. .section .text
  29. .global main
  30. main:
  31.     movl $4, %eax
  32.     movl $1, %ebx
  33.     movl $punos, %ecx
  34.     movl $p1_len, %edx
  35.     int $0x80
  36.  
  37.     movl $3, %eax
  38.     movl $0, %ebx
  39.     movl $niz, %ecx
  40.     movl $nizmax, %edx
  41.     int $0x80
  42.     movl %eax, %esi  
  43.  
  44.     movl $niz,%eax
  45.  
  46. broj_p:
  47. cmpb $'0', (%eax)
  48. jne slovo_p
  49.  
  50. slovo_p:
  51. cmpb $'a', (%eax)
  52. je greska1
  53. incl %eax
  54. cmpb $10, (%eax)
  55. jne broj_p
  56. xorl %eax, %eax
  57. leal niz, %esi
  58.  
  59. sum:
  60. addl %eax, suma
  61. jc greska2
  62. incl %esi
  63. cmpb $10, (%esi)
  64. jne sum
  65.  
  66. suma_ispis:
  67.     movl $4, %eax
  68.     movl $1, %ebx
  69.     movl $psuma, %ecx
  70.     movl $p3_len, %edx
  71.     int $0x80
  72. jmp kraj
  73.  
  74. greska1:
  75. movb $1, greska
  76. /*xorl %eax, %eax
  77.  
  78. movb greska, %al
  79. leal gr, %edi
  80. movl $10, %ebx
  81.  
  82. dec_cifra:
  83. xorl %edx, %edx
  84. divl %ebx           konverzija iz dekadnog u znakovni oblik (iz broja u string)
  85. addb $'0', %dl
  86. movb %dl, (%edi)
  87. incl %edi
  88. andl %eax, %eax #%eax,%eax
  89. jnz dec_cifra
  90. movb $0, (%edi)
  91. decl %edi
  92. leal gr, %esi*/
  93.  
  94.     movl $4, %eax
  95.     movl $1, %ebx
  96.     movl $pgreska, %ecx
  97.     movl $p2_len, %edx
  98.     int $0x80
  99.  
  100.     /*movl $4, %eax
  101.     movl $1, %ebx
  102.     movl $izlaznik, %ecx
  103.     movl $p0_len, %edx
  104.     int $0x80*/
  105.     # ovo je za ispis tog izlaznog koda i greske
  106.     /*movl $4, %eax
  107.     movl $1, %ebx
  108.     movl $gr, %ecx
  109.     movl $1, %edx
  110.     int $0x80*/
  111. jmp kraj
  112.  
  113. greska2:
  114. movb $2, greska
  115.     movl $4, %eax
  116.     movl $1, %ebx
  117.     movl $pgreska, %ecx
  118.     movl $p2_len, %edx
  119.     int $0x80
  120. jmp kraj
  121.  
  122. /*greska3:
  123. movb $3, greska
  124.     movl $4, %eax
  125.     movl $1, %ebx
  126.     movl $pgreska, %ecx
  127.     movl $p2_len, %edx
  128.     int $0x80*/
  129.  
  130. kraj:
  131. xorl %ebx, %ebx
  132. movb greska, %bl
  133. movl $1, %eax
  134. int $0x80
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement