Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unesite izraz: n=2, m=10, niz={100, 200, 210, 210, 500, 1000, }dodatak Ukupno brojeva koji ispunjavaju uslov: 0X2
- Unesite izraz: n=2g, m=10, niz={100, 200, 210, 210, 500, 1000, }dodatak GRESKA: Problem prilikom konverzije brojeva.
- Unesite izraz: n=4294967296, m=10, niz={100, 200, 210, 210, 500, 1000, )dodatak GRESKA: Problem prilikom konverzije brojeva.
- Unesite izraz: n=2, m=10, niz={100, 200, 210, 210,500,0, } GRESKA: Prekoracenje kod provere uslova. (objašnjenje: pošto su brojevi neoznačeni, kad proveravamo poslednji uslov i uradimo 0-10, doći će prekoračenja)
- Unesite izraz: n=2, m=10, niz={100, 200, 210, 2147483648,500, 1000, } GRESKA: Prekoracenje kod provere uslova. (objašnjenje: pošto su brojevi 32-bitni, kad proveravamo poslednji uslov i uradimo 2147483648*2, doći će do prekoračenja)
- Unesite izraz: n=2, m=10, niz={} Ukupno brojeva koji ispunjavaju uslov: 0x0
- #
- #
- #
- #
- .section .data
- novi_red: .ascii "\n"
- novi_len=.-novi_red
- ulaz: .ascii "Unesite do 10 brojeva: \0"
- ulaz_len=.-ulaz
- str1: .fill 151,1,0
- str1_len=.-str1
- izlaz: .ascii "Transformacija: \0"
- izlaz_len=.-izlaz
- str2: .fill 151,1,0
- str2_len=.-str2
- niz: .fill 10,4,0
- niz1: .fill 10,4,0
- baza: .long 10
- baza1: .long 36
- .section .text
- .globl main
- main:
- movl $4, %eax
- movl $1, %ebx
- movl $ulaz, %ecx
- movl $ulaz_len, %edx
- int $0x80
- movl $3, %eax
- movl $0, %ebx
- movl $str1, %ecx
- movl $str1_len, %edx
- int $0x80
- movl %ecx, %esi
- movl $0, %eax
- movl $0, %ecx
- movl $0, %ebx
- petlja:
- movb (%esi), %bl
- cmpb $'\n' , %bl
- je greska1
- cmpb $' ' , %bl
- jne predprovere1
- incl %esi
- jmp petlja
- predprovere1:
- movb (%esi), %bl
- movl %esi, %edi
- provere1:
- cmpb $'\n' , 1(%edi)
- je provere
- cmpb $'\n' , %bl #aba\n
- je dodaj_u_niz
- cmpb $' ' , 1(%edi)
- je provere
- cmpb $' ' , %bl
- je dodaj_u_niz
- cmpb %bl, 1(%edi)
- je dalje
- incl %edi
- jmp provere1
- dalje:
- incl %esi
- jmp predprovere1
- provere:
- cmpb $'\n' , %bl
- je dodaj_u_niz
- cmpb $' ' , %bl
- je dodaj_u_niz
- cmpb $'0' , %bl
- jb greska1
- cmpb $'9' ,%bl
- jbe cifra
- subb $39, %bl
- cifra:
- subb $'0' , %bl
- cmpb $35, %bl
- ja greska1
- movl $0, %edx
- mull baza1
- jc greska1
- addl %ebx, %eax
- jc greska1
- incl %esi
- jmp predprovere1
- dodaj_u_niz:
- movl %eax, niz(,%ecx,4)
- incl %ecx
- movl $0, %eax
- cmpb $'\n' , %bl
- je saberi_niz
- incl %esi
- jmp petlja
- saberi_niz:
- movl $0, %esi
- movl $0, %edi
- movl $0, %ebx
- saberi:
- cmpl $0, %ecx
- je konverzija
- saberi1:
- addl niz(,%edi,4), %ebx #1 2 3 4 -> 1 3 6 10
- cmpl %esi, %edi
- je sledeci
- incl %edi
- jmp saberi1
- sledeci:
- movl %ebx, niz1(,%esi,4)
- movl $0, %edi
- incl %esi
- decl %ecx
- movl $0, %ebx
- jmp saberi
- konverzija:
- kraj:
- movl $1, %eax
- int $0x80
- greska1:
- movl $4, %eax
- movl $1, %ebx
- movl $ulaz, %ecx
- movl $ulaz_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- ###
- #
- #
- #
- ##
- #K1SR
- .section .data
- unesi_string: .ascii "Unesite niz: \0"
- unesi_string_len=.-unesi_string
- veca_parna: .ascii "Veca je aritmeticka sredina parnih brojeva!\n\0"
- veca_parna_len=.-veca_parna
- veca_neparna: .ascii "Veca je aritmeticka sredina neparnih brojeva!\n\0"
- veca_neparna_len=.-veca_neparna
- iste_su: .ascii "Iste su aritmeticke sredine partnih i neparnih brojeva!\n\0"
- iste_su_len=.-iste_su
- rezultat_greske0: .ascii "Rezultat greske je: 0\n\0"
- rezultat_greske0_len=.-rezultat_greske0
- rezultat_greske1: .ascii "Rezultat greske je: 1\n\0"
- rezultat_greske1_len=.-rezultat_greske1
- rezultat_greske2: .ascii "Rezultat greske je: 2\n\0"
- rezultat_greske2_len=.-rezultat_greske2
- rezultat_greske3: .ascii "Rezultat greske je: 3\n\0"
- rezultat_greske3_len=.-rezultat_greske3
- prekor: .ascii "Prekoracenje!\n\0"
- prekor_len=.-prekor
- neodg_operand: .ascii "Neodgovarajuci operand!\n\0"
- neodg_operand_len=.-neodg_operand
- prazan_string: .ascii "String je prazan\n\0"
- prazan_string_len=.-prazan_string
- brojac_parnih: .long 0
- brojac_neparnih: .long 0
- privremena: .long 0
- dva: .long 2
- unos_stringa_max=51
- unos_stringa: .fill unos_stringa_max,1,0
- parni_niz: .fill 10,4,0
- neparni_niz: .fill 10,4,0
- baza: .long 10
- zbir_parnih: .long 0
- zbir_neparnih: .long 0
- .section .text
- .globl main
- main:
- movl $4, %eax
- movl $1, %ebx
- movl $unesi_string, %ecx
- movl $unesi_string_len, %edx
- int $0x80
- movl $3, %eax
- movl $0, %ebx
- movl $unos_stringa, %ecx
- movl $unos_stringa_max, %edx
- int $0x80
- #string u ecx-u
- movl $0, %eax
- movl $0, %ebx
- movl $0, %edx
- movl %ecx, %esi
- movl $0, %ecx
- glavna_petlja:
- movb (%esi), %bl
- cmpb $'\n', %bl
- je predlogika
- cmpb $32, %bl
- jne nasao_broj
- incl %esi
- jmp glavna_petlja
- nasao_broj:
- cmpb $'\n', %bl
- je dodaj_u_niz
- cmpb $'0', %bl
- jl greska2
- cmpb $'9', %bl
- jg greska2
- subb $'0' ,%bl
- movl $0, %edx
- mull baza
- jc greska1 #prekoracenje
- addl %ebx, %eax
- jc greska1 #prekoracenje
- incl %esi
- movb (%esi), %bl
- cmpb $32, %bl
- jne nasao_broj
- dodaj_u_niz:
- movl $0, %edx
- movl %eax, %edi
- divl dva
- cmpl $0, %edx
- je paran_br
- incl brojac_neparnih
- movl %edi, neparni_niz(,%ecx,4)
- incl %ecx
- jmp dalje
- paran_br:
- movl privremena, %edx
- movl %edi, parni_niz(,%edx,4)
- incl brojac_parnih
- incl privremena
- dalje:
- movl $0, %eax
- cmpb $'\n', %bl
- je predlogika
- incl %esi
- jmp glavna_petlja
- #################################################
- predlogika:
- cmpl $unos_stringa, %esi
- je greska3
- movl $0, %esi
- movl $0, %ecx #zbir parnih
- movl $0, %edx #zbir neparnih
- logika:
- cmpl $10, %esi
- je sredina
- addl parni_niz(,%esi,4), %ecx
- jc greska1
- addl neparni_niz(,%esi,4), %edx
- jc greska1
- incl %esi
- jmp logika
- sredina:
- movl %edx,%eax
- movl $0, %edx
- divl brojac_neparnih
- movl %eax, %edi
- movl %ecx,%eax
- movl $0, %edx
- divl brojac_parnih
- movl %eax, %ecx
- ispitaj:
- cmpl %ecx, %edi
- ja vise_neparnih_brojeva
- jb vise_parnih_brojeva
- movl $4, %eax
- movl $1, %ebx
- movl $iste_su, %ecx
- movl $iste_su_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske0, %ecx
- movl $rezultat_greske0_len, %edx
- int $0x80
- movl $0, %ebx
- jmp kraj
- vise_neparnih_brojeva:
- movl $4, %eax
- movl $1, %ebx
- movl $veca_neparna, %ecx
- movl $veca_neparna_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske0, %ecx
- movl $rezultat_greske0_len, %edx
- int $0x80
- movl $0, %ebx
- jmp kraj
- vise_parnih_brojeva:
- movl $4, %eax
- movl $1, %ebx
- movl $veca_parna, %ecx
- movl $veca_parna_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske0, %ecx
- movl $rezultat_greske0_len, %edx
- int $0x80
- movl $0, %ebx
- kraj:
- movl $1, %eax
- int $0x80
- greska1:
- movl $4, %eax
- movl $1, %ebx
- movl $prekor, %ecx
- movl $prekor_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske1, %ecx
- movl $rezultat_greske1_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- greska2:
- movl $4, %eax
- movl $1, %ebx
- movl $neodg_operand, %ecx
- movl $neodg_operand_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske2, %ecx
- movl $rezultat_greske2_len, %edx
- int $0x80
- movl $2, %ebx
- jmp kraj
- greska3:
- movl $4, %eax
- movl $1, %ebx
- movl $prazan_string, %ecx
- movl $prazan_string_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske3, %ecx
- movl $rezultat_greske3_len, %edx
- int $0x80
- movl $3, %ebx
- jmp kraj
- ####
- #
- #
- #
- #
- #
- #
- #
- #
- #K1SR
- .section .data
- unesi_string: .ascii "Unesite izraz: \0"
- unesi_string_len=.-unesi_string
- rezultat_greske1: .ascii "greska1.\n\0" #prekoracenje
- rezultat_greske1_len=.-rezultat_greske1
- rezultat_greske2: .ascii "greska2.\n\0" #greska prilikom konverzije
- rezultat_greske2_len=.-rezultat_greske2
- suma_ispis: .ascii "Suma: \0"
- suma_ispis_len=.-suma_ispis
- sume_jednake: .ascii "Sume su jednake.\n\0"
- sume_jednake_len=.-sume_jednake
- suma_u_opsegu_manja: .ascii "Suma brojeva u opsegu je manja.\n\0"
- suma_u_opsegu_manja_len=.-suma_u_opsegu_manja
- suma_u_opsegu_veca: .ascii "Suma brojeva u opsegu je veca.\n\0"
- suma_u_opsegu_veca_len=.-suma_u_opsegu_veca
- string_zbir_van_opsega: .fill 11,1,0
- string_zbir_van_opsega_len=.-string_zbir_van_opsega
- string_zbir_u_opsegu: .fill 11,1,0
- string_zbir_u_opsegu_len=.-string_zbir_u_opsegu
- privremena: .long 0
- unos_stringa_max=101
- unos_stringa: .fill unos_stringa_max,1,0
- zbir_van_opsega: .long 0
- zbir_u_opsegu: .long 0
- baza: .long 10
- baza16: .long 16
- donja_granica: .long 0
- gornja_granica: .long 0
- #parni_niz: .fill 10,4,0
- #neparni_niz: .fill 10,4,0
- .section .text
- .globl main
- main:
- movl $4, %eax
- movl $1, %ebx
- movl $unesi_string, %ecx
- movl $unesi_string_len, %edx
- int $0x80
- movl $3, %eax
- movl $0, %ebx
- movl $unos_stringa, %ecx
- movl $unos_stringa_max, %edx
- int $0x80
- movl %ecx, %esi
- movl $0, %eax
- movl $0, %ebx
- movl $0, %edx #ecx i edi slobodni za sad
- incl %esi
- za_donju_granicu:
- movb (%esi), %bl
- cmpb $',' , %bl
- je pred_gornju_granicu
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska2
- addl %ebx, %eax
- jc greska2
- incl %esi
- jmp za_donju_granicu
- pred_gornju_granicu:
- movl %eax, donja_granica
- movl $0, %eax
- incl %esi
- za_gornju_granicu:
- movb (%esi), %bl
- cmpb $',' , %bl
- je pred_glavna_petlja
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska2
- addl %ebx, %eax
- jc greska2
- incl %esi
- jmp za_gornju_granicu
- pred_glavna_petlja:
- movl %eax, gornja_granica
- movl $0, %eax
- addl $3, %esi
- glavna_petlja:
- movb (%esi), %bl
- cmpb $',' , %bl
- je dodaj_u_niz
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska2
- addl %ebx, %eax
- jc greska2
- incl %esi
- jmp glavna_petlja
- dodaj_u_niz:
- cmpl donja_granica, %eax
- jb van_opsega
- cmpl gornja_granica, %eax
- ja van_opsega
- addl %eax, zbir_u_opsegu
- jc greska1
- incl %esi
- movl $0, %eax
- cmpb $'}' , (%esi)
- je predlogika
- jmp glavna_petlja
- van_opsega:
- addl %eax, zbir_van_opsega
- jc greska1
- incl %esi
- movl $0, %eax
- cmpb $'}' , (%esi)
- je predlogika
- jmp glavna_petlja
- ###############################
- ###########################
- ####################
- ######################################################
- #345/10 edx=5 +48
- predlogika:
- movl zbir_van_opsega, %eax
- movl $0, %edx
- movl $string_zbir_van_opsega, %ecx
- movl $string_zbir_u_opsegu, %edi
- movb $'0' , (%ecx)
- incl %ecx
- movb $'X' , (%ecx)
- incl %ecx
- movb $'0' , (%edi)
- incl %edi
- movb $'X' , (%edi)
- incl %edi
- ##################################
- suma_van_opsega:
- cmpl $0, %eax
- je pred_obrtanje1
- divl baza16
- addb $'0' , %dl
- cmpb $'9' , %dl
- jle dalje_suma_van_opsega
- addb $7 , %dl
- dalje_suma_van_opsega:
- movb %dl, (%ecx)
- incl %ecx
- movl $0, %edx
- jmp suma_van_opsega
- pred_obrtanje1:
- movb $'\n' , (%ecx)
- movl $string_zbir_van_opsega, %ebx
- incl %ebx
- incl %ebx
- decl %ecx
- obrtanje1:
- movb (%ecx), %dl
- movb (%ebx), %dh
- movb %dl, (%ebx)
- movb %dh, (%ecx)
- incl %ebx
- decl %ecx
- cmpl %ebx, %ecx
- ja obrtanje1
- ##################################################
- predsuma:
- #movb $'\n' , (%ecx)
- movl zbir_u_opsegu, %eax
- movl $0, %edx
- suma_u_opsegu:
- cmpl $0, %eax
- je pred_obrtanje2
- divl baza16
- addb $'0' , %dl
- cmpb $'9' , %dl
- jle dalje_suma_u_opsegu
- addb $7 , %dl
- dalje_suma_u_opsegu:
- movb %dl, (%edi)
- incl %edi
- movl $0, %edx
- jmp suma_u_opsegu
- pred_obrtanje2:
- movb $'\n' , (%edi)
- movl $string_zbir_u_opsegu, %ebx
- incl %ebx
- incl %ebx
- decl %edi
- obrtanje2:
- movb (%edi), %dl
- movb (%ebx), %dh
- movb %dl, (%ebx)
- movb %dh, (%edi)
- incl %ebx
- decl %edi
- cmpl %ebx, %edi
- ja obrtanje2
- logika:
- #movb $'\n' , (%edi)
- movl zbir_van_opsega, %ecx
- cmpl %ecx, zbir_u_opsegu
- ja vise_u_opsegu
- jb manje_u_opsegu
- movl $4, %eax
- movl $1, %ebx
- movl $sume_jednake, %ecx
- movl $sume_jednake_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $suma_ispis, %ecx
- movl $suma_ispis_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $string_zbir_van_opsega, %ecx
- movl $string_zbir_van_opsega_len, %edx
- int $0x80
- movl $0, %ebx
- jmp kraj
- vise_u_opsegu:
- movl $4, %eax
- movl $1, %ebx
- movl $suma_u_opsegu_veca, %ecx
- movl $suma_u_opsegu_veca_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $suma_ispis, %ecx
- movl $suma_ispis_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $string_zbir_van_opsega, %ecx
- movl $string_zbir_van_opsega_len, %edx
- int $0x80
- movl $0, %ebx
- jmp kraj
- manje_u_opsegu:
- movl $4, %eax
- movl $1, %ebx
- movl $suma_u_opsegu_manja, %ecx
- movl $suma_u_opsegu_manja_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $suma_ispis, %ecx
- movl $suma_ispis_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $string_zbir_u_opsegu, %ecx
- movl $string_zbir_u_opsegu_len, %edx
- int $0x80
- movl $0, %ebx
- kraj:
- movl $1, %eax
- int $0x80
- greska1:
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske1, %ecx
- movl $rezultat_greske1_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- greska2:
- movl $4, %eax
- movl $1, %ebx
- movl $rezultat_greske2, %ecx
- movl $rezultat_greske2_len, %edx
- int $0x80
- movl $1, %ebx
- ###
- #
- #
- #
- #
- #
- .section .data
- pocetni_ispis: .ascii "Unesite izraz: \0"
- pocetni_ispis_len=.-pocetni_ispis
- greska1_string: .ascii "GRESKA: Problem prilikom konverzije brojeva.\n\0"
- greska1_string_len=.-greska1_string
- greska2_string: .ascii "GRESKA: Prekoracenje kod provere uslova.\n\0"
- greska2_string_len=.-greska2_string
- ispis1: .ascii "Ukupno brojeva koji ispunjavaju uslov: \0"
- ispis1_len=.-ispis1
- unos_max=101
- unos: .fill unos_max,1,0
- broj_string: .fill 12,1,0
- broj_string_len=.-broj_string
- brojac_el: .long 0
- niz1: .fill 21,4,0
- baza: .long 10
- baza16: .long 16
- n: .long 0
- m: .long 0
- brojac: .long 0
- .section .text
- .globl main
- main:
- movl $4, %eax
- movl $1, %ebx
- movl $pocetni_ispis, %ecx
- movl $pocetni_ispis_len, %edx
- int $0x80
- movl $3, %eax
- movl $0, %ebx
- movl $unos, %ecx
- movl $unos_max, %edx
- int $0x80
- movl $0, %eax
- movl $0, %ebx
- movl $0, %edx
- movl %ecx, %esi #esi je adresa
- movl $0, %ecx
- movl $0, %edi
- #ecx i edi su slobodni
- addl $2, %esi
- uzmi_vr_n:
- movb (%esi), %bl
- cmpb $',' , %bl
- je pred_uzmi
- cmpb $'0' , %bl
- jl greska1
- cmpb $'9' , %bl
- jg greska1
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska1
- addl %ebx, %eax
- jc greska1
- incl %esi
- jmp uzmi_vr_n
- pred_uzmi:
- movl %eax, n
- movl $0, %eax
- addl $4, %esi
- uzmi_vr_m:
- movb (%esi), %bl
- cmpb $',' , %bl
- je pred_petlja
- cmpb $'0' , %bl
- jl greska1
- cmpb $'9' , %bl
- jg greska1
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska1
- addl %ebx, %eax
- jc greska1
- incl %esi
- jmp uzmi_vr_m
- ############################################################
- pred_petlja:
- movl %eax, m
- movl $0, %eax
- addl $7, %esi
- glavna_petlja:
- movb (%esi), %bl
- cmpb $'}' , %bl
- je pred_konverzija
- cmpb $',' , %bl
- je pod_petlja
- cmpb $'0' , %bl
- jl greska1 #123 1(49-48=1) eax=0*10=0+1 1*10=10+2=12
- cmpb $'9' , %bl
- jg greska1
- subb $'0' , %bl
- movl $0, %edx
- mull baza
- jc greska1
- addl %ebx, %eax
- jc greska1
- incl %esi
- jmp glavna_petlja
- pod_petlja:
- movl %eax, niz1(,%edi,4)
- incl brojac_el
- cmpb $'}' , 2(%esi)
- je pred_logika
- incl %edi
- movl $0, %eax
- incl %esi
- incl %esi
- jmp glavna_petlja
- ###################################################
- pred_logika:
- movl $1, %edi
- movl $0, %eax
- movl $0, %ebx
- movl $0, %edx
- movl $0, %ecx
- cmpl $3, brojac_el
- jb pred_konverzija
- subl $2, brojac_el
- logika:
- cmpl $0, brojac_el
- je pred_konverzija
- movl niz1-4(,%edi,4), %eax
- movl niz1+4(,%edi,4), %ebx
- movl $0, %edx
- mull n
- jc greska2
- subl m, %ebx
- jc greska2
- cmpl %eax, niz1(,%edi,4)
- jb dalje
- cmpl %ebx, niz1(,%edi,4)
- ja dalje
- incl brojac
- decl brojac_el
- incl %edi
- movl $0, %eax
- movl $0, %ebx
- jmp logika
- dalje:
- incl %edi
- decl brojac_el
- movl $0, %eax
- movl $0, %ebx
- jmp logika
- ######################################################
- pred_konverzija:
- movl $broj_string, %esi
- movl brojac, %eax #31/10 eax=3 edx=1
- movl $0, %ebx
- movl $0, %edx
- movl $0, %ecx
- movl $'0' , (%esi)
- incl %esi
- movl $'X' , (%esi)
- incl %esi
- movl %esi, %edi
- konverzija:
- cmpl $0, %eax
- je predobrtanje
- movl $0, %edx
- divl baza16
- addl $'0' , %edx
- cmpl $'9' , %edx
- jle preskoci
- addl $7, %edx
- preskoci:
- movb %dl, (%esi)
- incl %esi
- jmp konverzija
- predobrtanje:
- cmpl $0, brojac
- jne predobrtanje1
- movb $'0' , (%esi)
- incl %esi
- predobrtanje1:
- movb $'\n' , (%esi)
- decl %esi
- movl $0, %edx
- obrtanje:
- movb (%esi), %dl
- movb (%edi), %dh
- movb %dh, (%esi)
- movb %dl, (%edi)
- decl %esi
- incl %edi
- cmpl %esi, %edi
- jb obrtanje
- movl $4, %eax
- movl $1, %ebx
- movl $ispis1, %ecx
- movl $ispis1_len, %edx
- int $0x80
- movl $4, %eax
- movl $1, %ebx
- movl $broj_string, %ecx
- movl $broj_string_len, %edx
- int $0x80
- movl $0, %ebx
- ##############################################################
- kraj:
- movl $1, %eax
- int $0x80
- greska1:
- movl $4, %eax
- movl $1, %ebx
- movl $greska1_string, %ecx
- movl $greska1_string_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- greska2:
- movl $4, %eax
- movl $1, %ebx
- movl $greska2_string, %ecx
- movl $greska2_string_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- #####################
- #
- #
- #
- #
- #casovnik.s
- .section .data
- ispis1: .ascii "Unesite vreme: \0"
- ispis1_len=.-ispis1
- greska11: .ascii "Greska1!\n\0"
- greska11_len=.-greska11
- greska22: .ascii "Greska2!\n\0"
- greska22_len=.-greska22
- greska33: .ascii "Greska3!\n\0"
- greska33_len=.-greska33
- unos_max=9
- unos: .fill unos_max,1,0
- string_max=10
- string: .fill string_max,1,0
- sati: .long 0
- minuti: .long 0
- baza: .long 10
- .section .text
- .globl main
- main:
- movl $4, %eax
- movl $1, %ebx
- movl $ispis1, %ecx
- movl $ispis1_len, %edx
- int $0x80
- movl $3, %eax
- movl $0, %ebx
- movl $unos, %ecx
- movl $unos_max, %edx
- int $0x80
- movl %ecx, %esi
- movl $0, %eax
- movl $0, %ebx
- movl $0, %edx
- #slobodni su edi i ecx
- nula_jedan:
- movb (%esi), %bl
- cmpb $'0' , %bl
- jl greska1
- cmpb $'1' , %bl
- jg greska1
- subb $'0' , %bl
- #mull baza
- addl %ebx, %eax
- jc greska2
- movl $0, %edx
- incl %esi
- movb (%esi), %bl
- cmpb $'0' , %bl
- jl greska1
- cmpb $'9' , %bl
- jg greska1
- subb $'0' , %bl
- mull baza
- addl %ebx, %eax
- jc greska2
- cmpl $11, %eax
- jg greska3
- movl %eax, sati
- movl $0, %eax
- movl $0, %edx
- addl $2, %esi
- movb (%esi), %bl
- cmpb $'0' , %bl
- jl greska1
- cmpb $'5' , %bl
- jg greska1
- subb $'0' , %bl
- #mull baza
- addl %ebx, %eax
- jc greska2
- movl $0, %edx
- incl %esi
- movb (%esi), %bl
- cmpb $'0' , %bl
- jl greska1
- cmpb $'9' , %bl
- jg greska1
- subb $'0' , %bl
- mull baza
- addl %ebx, %eax
- jc greska2
- movl %eax, minuti
- cmpl $59, %eax
- jg greska3
- incl %esi
- incl %esi
- movb (%esi), %bl
- cmpb $'a' , %bl
- je prepodne1
- cmpb $'p' , %bl
- je poslepodne1
- jmp greska3
- ##################################################################
- prepodne1:
- movl $string, %esi
- movl %esi, %edi
- movl sati, %eax
- movl $0, %edx
- cmpl $0, %eax
- jne prepodne_provera
- movb $'0' , (%esi)
- incl %esi
- movb $'0' , (%esi)
- incl %esi
- jmp obrni1
- prepodne_provera:
- cmpl $10, %eax
- jge prepodne
- movb $'0' , (%esi)
- incl %esi
- addl $48, %eax
- movb %al, (%esi)
- incl %esi
- movb $':' , (%esi)
- decl %esi
- jmp petlja_minuti1
- prepodne:
- cmpl $0, %eax
- je obrni1
- movl $0, %edx
- divl baza
- addb $48, %dl
- movb %dl, (%esi)
- incl %esi
- jmp prepodne
- obrni1:
- movb $':' , (%esi)
- decl %esi
- movb (%esi), %dl
- movb (%edi), %dh
- movb %dh, (%esi)
- movb %dl, (%edi)
- jmp petlja_minuti1
- ##############################################################################
- poslepodne1:
- movl $string, %esi
- movl %esi, %edi
- movl sati, %eax
- addl $12, %eax
- movl $0, %edx
- poslepodne:
- cmpl $0, %eax
- je obrni3
- movl $0, %edx
- divl baza
- addb $48, %dl
- movb %dl, (%esi)
- incl %esi
- jmp poslepodne
- obrni3:
- movb $':' , (%esi)
- decl %esi
- movb (%esi), %dl
- movb (%edi), %dh
- movb %dh, (%esi)
- movb %dl, (%edi)
- jmp petlja_minuti1
- #################################################################
- petlja_minuti1:
- addl $2, %esi
- movl %esi, %edi
- movl minuti, %eax
- movl $0, %edx
- cmpl $0, %eax
- jne petlja_minuti_provera
- movb $'0' , (%esi)
- incl %esi
- movb $'0' , (%esi)
- jmp dodaj_n1
- petlja_minuti_provera:
- cmpl $10, %eax
- jge petlja_minuti
- movb $'0' , (%esi)
- incl %esi
- addl $48, %eax
- movb %al, (%esi)
- incl %esi
- movb $'\n' , (%esi)
- jmp ispisi_ga
- petlja_minuti:
- cmpl $0, %eax
- je obrni2
- movl $0, %edx
- divl baza
- addb $48, %dl
- movb %dl, (%esi)
- incl %esi
- jmp petlja_minuti
- obrni2:
- decl %esi
- movb (%esi), %dl
- movb (%edi), %dh
- movb %dh, (%esi)
- movb %dl, (%edi)
- incl %edi
- incl %edi
- jmp dodaj_n
- dodaj_n1:
- movl $string, %edi
- addl $5, %edi
- dodaj_n:
- movb $'\n' , (%edi)
- ispisi_ga:
- movl $4, %eax
- movl $1, %ebx
- movl $string, %ecx
- movl $string_max, %edx
- int $0x80
- movl $0, %ebx
- kraj:
- movl $1, %eax
- int $0x80
- greska1:
- movl $4, %eax
- movl $1, %ebx
- movl $greska11, %ecx
- movl $greska11_len, %edx
- int $0x80
- movl $1, %ebx
- jmp kraj
- greska2:
- movl $4, %eax
- movl $1, %ebx
- movl $greska22, %ecx
- movl $greska22_len, %edx
- int $0x80
- movl $2, %ebx
- jmp kraj
- greska3:
- movl $4, %eax
- movl $1, %ebx
- movl $greska33, %ecx
- movl $greska33_len, %edx
- int $0x80
- movl $3, %ebx
- jmp kraj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement