Advertisement
Guest User

opseg

a guest
Mar 21st, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .section .data
  2. poruka1: .ascii "Unesite proizvoljnu recenicu: \0"
  3. por1_len=.-poruka1
  4.  
  5. MAX=100
  6. prijem: .fill MAX,1,42
  7.  
  8. duzina: .long 0
  9. brojacIzmenjenih: .long 0                   #brojac za ukupan broj izmenjenih reci
  10.  
  11. greska: .long 0                             #indikator za prekoracenje
  12. brojacSlova: .long 0
  13.  
  14. pocetak: .long 0                            #promenljiva koja oznacava pocetak reci
  15. .section .text
  16.  
  17. .globl main
  18. main:
  19.     movl $0,greska                          #inicijalizacija indikatora
  20.  
  21.     movl $4, %eax                           #ispis na ekran
  22.     movl $1, %ebx
  23.     leal poruka1, %ecx
  24.     movl $por1_len, %edx
  25.     int $0x80
  26.    
  27.     movl $3,%eax                            #prijem stringa sa tastature
  28.     movl $0,%ebx
  29.     leal prijem,%ecx
  30.     movl $MAX,%edx
  31.     int $0x80
  32.    
  33.     movl %eax,duzina
  34.    #provera unos
  35.     cmpl $94,%eax
  36.     jae prekoracenje                        #ako je u eax >= od 94,prekoracen unos
  37.    
  38.    
  39.                          
  40.     leal prijem,%edi                        #pokazivac na nas string koji smo primili
  41.     movl $0,brojacSlova
  42. #ideja:
  43. #nadjemo kraj reci(spejs iskljucivo!)
  44. #potom ako je broj slova veci od 5 idemo od kraja te reci ka pocetak+5
  45. #i tako dobijamo interval [pocetakReci,krajReci] i onda taj interval popunjavamo sa spejsom
  46.  
  47. krajReci:
  48.  
  49.     cmpb $' ',(%edi)
  50.     jne sledeceSlovo
  51.    #NADJEN KRAJ RECI
  52.     cmpl $5,brojacSlova                     #ako je broj slova u reci 5 ili manje,ides na  
  53.     jle sledecaRec2                         #sledecu rec i nju proveravas
  54.                                            #inace znaci da je rec veca od 5 slova npr 8
  55.                                            #i interval reci od [6-8] trebas postaviti na space
  56.    
  57.     movl %edi,pocetak                       #[pocetak,%edi] u taj interval stavljamo space
  58.     subl $5,brojacSlova
  59.     movl brojacSlova,%eax
  60.     subl %eax,pocetak                       #na ovaj nacin smo dobili pocetak intervala
  61.    
  62. postavljanjeSpace:
  63.     cmpl %edi,pocetak                       #posto je edi pokazivac koji krece sa desna
  64.     je sledecaRec                           #tj sa kraja prema pocetku reci,kad dodje do
  65.                                            # pocetka
  66.                                            #to znaci da smo prosli kroz citav interval
  67.     decl %edi
  68.     movb $' ',(%edi)
  69.     jmp postavljanjeSpace
  70.    
  71. sledeceSlovo:                               #prelazak na sledeci karakter u nasem stringu
  72.     incl %edi                               #i pri tome brojimo broj slova u reci
  73.     incl brojacSlova
  74.     jmp proveraKraja
  75.    
  76. sledecaRec2:                                #ovde se ulazi kad je rec bila npr 'je' tj manja
  77.     movl $0,brojacSlova                     #od 5 karaktera
  78.     incl %edi
  79.     jmp proveraKraja
  80.    
  81. sledecaRec:                                 #ovde udjemo kad je rec bila duza od 5 karaktera
  82.                                            #i zavrsili smo postavljanje space u intervalu
  83.                                            #i trebamo edi da vratimo gde je bio i nastavimo
  84.                                            #dalje
  85.     addl brojacSlova,%edi
  86.     incl %edi
  87.     movl $0,brojacSlova
  88.  
  89. proveraKraja:
  90.  
  91.     movl duzina,%edx                        #provera da li smo zavrsili sa unetom recenicom
  92.     addl $prijem,%edx                       #ovako u edx dobijemo adresu poslednjeg elementa
  93.     cmpl %edx,%edi
  94.     jl krajReci
  95.    
  96. dalje:
  97.  
  98.     #ispis recenice posle njenog koriscenja tj menjanja
  99.     movl $4,%eax
  100.     movl $1,%ebx
  101.     leal prijem,%ecx
  102.     movl duzina,%edx
  103.     int $0x80
  104.     jmp kraj
  105.    
  106. prekoracenje:
  107.     movl $255,greska
  108.  
  109. kraj:
  110.     movl $1,%eax
  111.     movl greska,%ebx                        #ako je sve uredu 0 ce se smestiti u ebx inace 255
  112.     int $0x80
  113.    
  114.    
  115. #Uneti 94 karaktera,sa razmakom se odredjuje kraj reci,ukoliko neka (svaka) rec ima vise od 5 karaketera ubacujemo razmak umesto ostatka reci,povratna vrednost treba da bude koliko se izmenilo karaketera,ukoliko je neko pokusao da unese vise od 94 karaktera povratna vrednost je 255
  116.  
  117. #Uneses danijela je carina
  118. #On izbaci
  119. #Danij    je carin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement