Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .section .text
- .globl roman_to_inter
- dec: .long 1000, 500, 100, 50, 10, 5, 1
- rom: .ascii "MDCLXVI\0"
- # unsigned int oct_str_float_to_inter(char* str, unsigned int* greska);
- roman_to_inter:
- pushl %ebp
- movl %esp, %ebp
- subl $12, %esp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl %esp, -12(%ebp)
- #====================== MAKRO DEF ======================
- .macro greska gr = $0
- movl 12(%ebp), %eax
- movl \gr, (%eax)
- jmp kraj
- .endm
- #=======================================================
- #==================== INICIJALIZACIJA ==================
- movl 8(%ebp), %esp
- decl %esp
- movb $5, (%esp)
- incl %esp
- movl 12(%ebp), %eax
- movl $0, (%eax) # greska na 0
- xorl %eax, %eax # rezultat
- xorl %ecx, %ecx # ide znak => %cl
- xorl %edx, %edx # ide broj => %dx
- xorl %ebx, %ebx # ide sledeci broj => %bx
- movl $0, -4(%ebp) # manji
- movl $0, -8(%ebp) # prvi put
- #=======================================================
- #====================== NADJI KRAJ =====================
- nadjiKraj:
- movb (%esp), %cl
- cmpb $0, %cl
- je nasaoKraj
- incl %esp
- jmp nadjiKraj
- #=======================================================
- nasaoKraj:
- decl %esp # sad si na poslednjem
- #======================== SUMA =========================
- suma:
- movb (%esp), %cl
- movl $dec, %esi
- movl $rom, %edi
- trazi:
- movb (%edi), %ch # znak iz "MDCLXVI\0"
- # ne zaboravi $0
- cmpb $0, %ch
- jne nastavi
- greska $1
- nastavi:
- cmpb %cl, %ch
- je pronadjen
- addl $4, %esi
- incl %edi
- jmp trazi
- pronadjen:
- movw (%esi), %dx
- decl %esp
- cmpl $0, -8(%ebp)
- jne prvi
- addw %dx, %ax
- incl -8(%ebp)
- prvi:
- # ___________________________________________________ #
- movb (%esp), %cl
- movl $dec, %esi
- movl $rom, %edi
- trazi1:
- movb (%edi), %ch # znak iz "MDCLXVI\0"
- # ne zaboravi $0
- cmpb $5, %cl
- je kraj
- cmpb $0, %ch
- jne nastavi1
- greska $1
- nastavi1:
- cmpb %cl, %ch
- je pronadjen1
- addl $4, %esi
- incl %edi
- jmp trazi1
- pronadjen1:
- movw (%esi), %bx
- cmpw %bx, %dx # ako je %bx manje
- jna dalje
- movl $1, -4(%ebp)
- cmpw $0, %bx
- je kraj
- oduzmi:
- subw %bx, %ax
- jmp suma
- dalje:
- cmpw %bx, %dx
- jne dalje1
- cmpw $0, %bx
- je kraj
- cmpl $1, -4(%ebp)
- je oduzmi
- dalje1:
- cmpw $0, %bx
- je kraj
- addw %bx, %ax
- movl $0, -4(%ebp)
- jmp suma
- #=============================== KRAJ ===============================
- kraj:
- movl -12(%ebp), %esp
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement