Advertisement
Guest User

Untitled

a guest
May 25th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .section .text
  2. .globl roman_to_inter
  3. dec:    .long 1000, 500, 100, 50, 10, 5, 1
  4. rom:   .ascii "MDCLXVI\0"
  5.  
  6. # unsigned int oct_str_float_to_inter(char* str, unsigned int* greska);
  7.  
  8. roman_to_inter:
  9.  
  10. pushl %ebp
  11. movl %esp, %ebp
  12.  
  13. subl $12, %esp
  14.  
  15. pushl %esi
  16. pushl %edi
  17. pushl %ebx
  18.  
  19. movl %esp, -12(%ebp)
  20.  
  21. #====================== MAKRO DEF ======================
  22.  
  23. .macro greska gr = $0
  24.  
  25.   movl 12(%ebp), %eax
  26.   movl \gr, (%eax)
  27.   jmp kraj
  28.  
  29. .endm
  30.  
  31. #=======================================================
  32.  
  33. #==================== INICIJALIZACIJA ==================
  34.  
  35.   movl 8(%ebp), %esp
  36.   decl %esp
  37.   movb $5, (%esp)
  38.   incl %esp
  39.  
  40.   movl 12(%ebp), %eax
  41.   movl $0, (%eax) # greska na 0
  42.  
  43.   xorl %eax, %eax # rezultat
  44.   xorl %ecx, %ecx #  ide znak => %cl
  45.   xorl %edx, %edx # ide broj => %dx
  46.   xorl %ebx, %ebx # ide sledeci broj => %bx
  47.  
  48.  
  49.   movl $0, -4(%ebp) # manji
  50.   movl $0, -8(%ebp) # prvi put
  51.  
  52.  
  53.  
  54.  
  55.  
  56. #=======================================================
  57.  
  58. #====================== NADJI KRAJ =====================
  59.  
  60. nadjiKraj:
  61.   movb (%esp), %cl
  62.   cmpb $0, %cl
  63.   je nasaoKraj
  64.  
  65.   incl %esp
  66.   jmp nadjiKraj
  67.  
  68. #=======================================================
  69.  
  70. nasaoKraj:
  71.   decl %esp # sad si na poslednjem
  72.  
  73. #======================== SUMA =========================
  74.  
  75. suma:
  76.   movb (%esp), %cl
  77.  
  78.   movl $dec, %esi
  79.   movl $rom, %edi
  80.  
  81. trazi:
  82.   movb (%edi), %ch # znak iz "MDCLXVI\0"
  83. # ne zaboravi $0
  84.  
  85.   cmpb $0, %ch
  86.   jne nastavi
  87.  
  88.   greska $1
  89.  
  90. nastavi:
  91.  
  92.   cmpb %cl, %ch
  93.   je pronadjen
  94.  
  95.   addl $4, %esi
  96.   incl %edi
  97.  
  98.   jmp trazi
  99.  
  100.   pronadjen:
  101.  
  102.   movw (%esi), %dx
  103.   decl %esp
  104.  
  105.   cmpl $0, -8(%ebp)
  106.   jne prvi
  107.  
  108.   addw %dx, %ax
  109.   incl -8(%ebp)
  110.  
  111. prvi:
  112.  
  113. # ___________________________________________________ #
  114.  
  115.  
  116.   movb (%esp), %cl
  117.  
  118.   movl $dec, %esi
  119.   movl $rom, %edi
  120.  
  121. trazi1:
  122.   movb (%edi), %ch # znak iz "MDCLXVI\0"
  123. # ne zaboravi $0
  124.   cmpb $5, %cl
  125.   je kraj
  126.  
  127.   cmpb $0, %ch
  128.   jne nastavi1
  129.  
  130.   greska $1
  131.  
  132. nastavi1:
  133.  
  134.   cmpb %cl, %ch
  135.   je pronadjen1
  136.  
  137.   addl $4, %esi
  138.   incl %edi
  139.  
  140.   jmp trazi1
  141.  
  142. pronadjen1:
  143.  
  144.   movw (%esi), %bx
  145.  
  146.   cmpw %bx, %dx # ako je %bx manje
  147.   jna dalje
  148.  
  149.   movl $1, -4(%ebp)
  150.  
  151.   cmpw $0, %bx
  152.   je kraj
  153.  
  154. oduzmi:
  155.   subw %bx, %ax
  156.   jmp suma
  157.  
  158. dalje:
  159.   cmpw %bx, %dx
  160.   jne dalje1
  161.  
  162.   cmpw $0, %bx
  163.   je kraj
  164.  
  165.   cmpl $1, -4(%ebp)
  166.   je oduzmi
  167.  
  168. dalje1:
  169.  
  170.   cmpw $0, %bx
  171.   je kraj
  172.  
  173.   addw %bx, %ax
  174.   movl $0, -4(%ebp)
  175.  
  176.  
  177.   jmp suma
  178.  
  179. #=============================== KRAJ ===============================
  180.  
  181. kraj:
  182.  
  183. movl -12(%ebp), %esp
  184.  
  185. popl %ebx
  186. popl %edi
  187. popl %esi
  188.  
  189. movl %ebp, %esp
  190. popl %ebp
  191. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement