Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .section .data
- str1: .ascii "Unesite string: \0"
- str1_len = . - str1
- str2: .ascii "Rezultat: \0"
- str2_len = . - str2
- duzina: .long 0
- MAX=101
- unos: .fill MAX,1,0
- rez: .fill MAX,1,0
- .section .text
- .globl main
- pp1:
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl 8(%ebp), %esi #pokazivac na str
- xorl %ecx, %ecx
- provera_slova:
- cmpb $'\n', (%esi)
- je kraj_pp1
- cmpb $'A', (%esi)
- jbe preskoci
- cmpb $'Z', (%esi)
- jbe veliko_slovo
- cmpb $'a', (%esi)
- jb preskoci
- cmpb $'z', (%esi)
- jb malo_slovo
- jmp preskoci
- # R = R or 32
- veliko_slovo:
- orb $32, (%esi)
- jmp preskoci
- preskoci:
- incl %esi
- jmp provera_slova
- # R = R and (not 32)
- malo_slovo:
- movb $32, %cl
- notb %cl
- andb %cl, (%esi)
- jmp preskoci
- kraj_pp1:
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- pp2:
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl 8(%ebp), %esi
- cezar:
- cmpb $'\n', (%esi)
- je kraj_pp2
- cmpb $'A', (%esi)
- jb preskoci2
- cmpb $'X', (%esi)
- jb shift
- cmpb $'Z', (%esi)
- jbe spec
- cmpb $'a', (%esi)
- jb preskoci2
- cmpb $'x', (%esi)
- jb shift
- cmpb $'z', (%esi)
- jbe spec
- jmp preskoci2
- spec:
- subb $23, (%esi)
- jmp preskoci2
- shift:
- addb $3, (%esi)
- jmp preskoci2
- preskoci2:
- incl %esi
- jmp cezar
- kraj_pp2:
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- pp3:
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl 12(%ebp), %esi
- xorl %edi, %edi #brojac slova
- brojac:
- cmpb $'\n', (%esi)
- je kraj_brojaca
- cmpb $'A', (%esi)
- jb preskoci3
- cmpb $'Z', (%esi)
- jbe povecaj_brojac
- cmpb $'a', (%esi)
- jb preskoci3
- cmpb $'z', (%esi)
- jbe povecaj_brojac
- jmp preskoci3
- povecaj_brojac:
- incl %edi
- jmp preskoci3
- preskoci3:
- incl %esi
- jmp brojac
- kraj_brojaca:
- cmpl $11, %edi
- jb oktalni
- cmpl $20, %edi
- jbe dekadni
- jmp hex
- oktalni:
- pushl $8
- pushl 8(%ebp)
- pushl %edi
- call konverzija
- addl $12, %esp
- jmp kraj_pp3
- dekadni:
- pushl $10
- pushl 8(%ebp)
- pushl %edi
- call konverzija
- addl $12, %esp
- jmp kraj_pp3
- hex:
- pushl $16
- pushl 8(%ebp)
- pushl %edi
- call konverzija
- addl $12, %esp
- jmp kraj_pp3
- kraj_pp3:
- popl %ebx
- popl %edi
- popl %esi
- movl %ebp, %esp
- popl %ebp
- ret
- konverzija:
- pushl %ebp
- movl %esp, %ebp
- pushl %esi
- pushl %edi
- pushl %ebx
- movl 16(%ebp), %ebx #baza
- movl 12(%ebp), %edi #pokazivac na prazan rez
- movl 8(%ebp), %eax #broj koji konvertujemo
- xorl %esi, %esi #brojac karaktera
- i2_cifra:
- incl %esi
- xorl %edx, %edx
- divl %ebx
- cmpb $10, %dl
- jae upisi_slovo
- addb $'0', %dl
- jmp nastavi
- upisi_slovo:
- addb $'0'+7, %dl
- jmp nastavi
- nastavi:
- movb %dl, (%edi)
- incl %edi
- andl %eax, %eax
- jnz i2_cifra
- #incl %esi
- #incl %edi
- #movb $'\n', (%edi)
- incl %edi
- movb $'\0', (%edi)
- subl $2, %edi
- movl %esi, %ebx
- movl 12(%ebp), %esi
- jmp obrni
- obrni:
- cmpl %edi, %esi
- jae kraj_o
- movb (%esi), %ah
- movb (%edi), %al
- movb %ah, (%edi)
- movb %al, (%esi)
- incl %esi
- decl %edi
- jmp obrni
- kraj_o:
- movl %ebx, %eax
- popl %ebx
- popl %edi
- popl %esi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement