Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #kamelija notacija
- #primer
- # oVO JE KAMelijA noTACIJa
- # Ovo Je Kamelija Notacija
- #svako pocetno slovo reci u recenici mora biti veliko, ostala mala
- .section .data
- string: .ascii "Unesite tekst: \0"
- string_len = . - string #automatski broji elemente niza, racuna za poslednju memorijsku lokaciju, ovo je konstanta
- MAX = 101 #konstanta
- string2: .fill MAX, 1, 0 #MAX je buffer (mem), 1 je velicina karaktera (1 byte)
- #MAX - maksimalno znakova moze da se upise
- #1 - velicina jednog karaktera (1 byte)
- #0 - sa njom popunjavam zauzete lokacije
- duzina: .long 0 #kad imam tip, to je promenjiva
- pocetak_reci: .long 0 #treba da radi kao true/false, 0 za false, 1 za true
- .section .text
- .globl main
- main:
- #ispis / printf
- movl $4, %eax
- movl $1, %ebx
- leal string, %ecx #isto kao movl $string, %ecx (adresa stringa u ecx)
- #u leal stavljamo ono sto zelimo da se ispise!
- movl $string_len, %edx
- int $0x80
- #$ je za konstante
- #unos / scanf
- movl $3, %eax
- movl $0, %ebx
- leal string2, %ecx
- movl $MAX, %edx
- int $0x80
- #string2 - u njega upisujem, bafer je MAX zato ide u edx
- #posle unosa, duzina stringa se sacuva u registar %eax!!!!
- decl %eax #decrement (eax--), zbog novog reda (enter posle unosa), smanjimo duzinu stringa za 1
- movl %eax, duzina
- #%esi, %edi se koriste kao brojaci, npr kao int i u for petlji u C-u
- #hocu da esi pokazuje na pocetak stringa:
- leal string2, %esi #sad mi je u esi prvi znak niza
- #npr string NINA, leal, %esi pokaze na adresu slova N (pocetno), a (%esi) pokazuje N (dereferenciranje)
- provera_slova:
- cmpb $0, (%esi)
- je ispis
- cmpb $' ', (%esi)
- je space
- cmpb $'A', (%esi)
- jb preskoci
- cmpb $'Z', (%esi)
- jbe veliko_slovo
- cmpb $'a', (%esi)
- jb preskoci
- cmpb $'z', (%esi)
- jbe malo_slovo
- space:
- movl $0, pocetak_reci
- incl %esi
- jmp provera_slova
- preskoci:
- incl %esi
- jmp provera_slova
- veliko_slovo:
- cmpl $0, pocetak_reci #proveravam sa indikatorom, 1 je pocetak reci, 0 znaci da nije
- je prvo_slovo
- addb $32, (%esi)
- incl %esi
- jmp provera_slova
- prvo_slovo:
- movl $1, pocetak_reci #nasao sam slovo posle space-a, stavi na 1 indikator za pocetak reci
- incl %esi
- jmp provera_slova #umesto ove dve linije moze i jmp preskoci
- malo_slovo:
- cmpl $1, pocetak_reci
- je preskoci #jer malo ostaje malo
- subb $32, (%esi)
- movl $1, pocetak_reci #uvecavam samo pocetak reci
- incl %esi
- jmp provera_slova
- ispis:
- movl $4, %eax
- movl $1, %ebx
- leal string2, %ecx
- movl duzina, %edx
- #promenjive se pisu bez $, a ko
- kraj:
- movl $1, %eax
- movl $0, %ebx
- int $0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement