Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

broj jedinica (zadatak)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Građa računala
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Loo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 06. 2012. (16:02:07)
Postovi: (D0)16
Spol: žensko
Sarma = la pohva - posuda
84 = 85 - 1

PostPostano: 19:06 pet, 9. 11. 2012    Naslov: broj jedinica Citirajte i odgovorite

zanima me postoji li ljepši način za prebrojati jedinice u binarnom zapisu broja s adrese $6000
meni ovo moje djeluje dosta šlampavo, pa da pitam :)

[code:1]
DATA: EQU $6000
PROGRAM: EQU $6100

ORG DATA
VALUE: DS.W 1
RESULT: DS.B 1
MASK: EQU $0001

ORG PROGRAM
START:
MOVE.W VALUE, D0
BEQ.S KRAJ
MOVEQ #0, D2

LOOP: MOVE.W D0, D1
AND.W #MASK, D1
ADD.B D1, D2
LSR.W #1, D0
BNE.S LOOP

KRAJ: MOVE.B D2, RESULT


MOVE.B #9,D0
TRAP #15 ; halt simulator



END START[/code:1]
zanima me postoji li ljepši način za prebrojati jedinice u binarnom zapisu broja s adrese $6000
meni ovo moje djeluje dosta šlampavo, pa da pitam Smile

Kod:

   DATA:      EQU   $6000
   PROGRAM:   EQU   $6100
   
         ORG   DATA
   VALUE:      DS.W   1
   RESULT:      DS.B   1
   MASK:      EQU   $0001
   
         ORG   PROGRAM
   START:
         MOVE.W   VALUE, D0
         BEQ.S   KRAJ
         MOVEQ   #0, D2
         
   LOOP:      MOVE.W   D0, D1
         AND.W   #MASK, D1
         ADD.B   D1, D2
         LSR.W   #1, D0
         BNE.S   LOOP
         
   KRAJ:      MOVE.B    D2, RESULT


      MOVE.B   #9,D0
      TRAP   #15      ; halt simulator



      END   START


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Atomised
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59)
Postovi: (399)16
Sarma = la pohva - posuda
70 = 95 - 25
Lokacija: Exotica

PostPostano: 20:21 pet, 9. 11. 2012    Naslov: Citirajte i odgovorite

Nemam sad vremena prisjećati se sintakse, ali mislim da možeš rotirati broj i gledati je li pozitivan ili negativan (tj. ima li na početku nula ili jedan)
Nemam sad vremena prisjećati se sintakse, ali mislim da možeš rotirati broj i gledati je li pozitivan ili negativan (tj. ima li na početku nula ili jedan)


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Loo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 06. 2012. (16:02:07)
Postovi: (D0)16
Spol: žensko
Sarma = la pohva - posuda
84 = 85 - 1

PostPostano: 8:44 sub, 10. 11. 2012    Naslov: Citirajte i odgovorite

aha, ali kako ću znati kad sam ga izrotirala do kraja? onda mi treba još jedan brojač za to, zar ne? :oops:
aha, ali kako ću znati kad sam ga izrotirala do kraja? onda mi treba još jedan brojač za to, zar ne? Embarassed


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ivstojic
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 20. 03. 2007. (08:52:16)
Postovi: (23)16
Sarma = la pohva - posuda
13 = 13 - 0

PostPostano: 14:18 sub, 10. 11. 2012    Naslov: Citirajte i odgovorite

Mogla bi se koristiti instrukcija BTST za testiranje određenog bita operanda, uz shiftanje registra udesno i testiranje najmanje značajnog bita (slično kao u gornjem kodu), ili recimo uz brojač koji u petlji ide od 0 do 15 i testira bitove redom.
Mogla bi se koristiti instrukcija BTST za testiranje određenog bita operanda, uz shiftanje registra udesno i testiranje najmanje značajnog bita (slično kao u gornjem kodu), ili recimo uz brojač koji u petlji ide od 0 do 15 i testira bitove redom.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Loo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 06. 2012. (16:02:07)
Postovi: (D0)16
Spol: žensko
Sarma = la pohva - posuda
84 = 85 - 1

PostPostano: 19:35 sri, 28. 11. 2012    Naslov: Citirajte i odgovorite

da ne otvaram novu temu, pitat ću ovdje:
nikako da shvatim zbog čega mi program uvijek kaže da su nizovi različiti (osim kad stavim duljinu 0)
to je 16. zadatak za praktični

[code:1]
;Provjerite da li su tri niza ASCII znakova jednaka.
;Početne adrese stringova dane su 32 bitnim varijablama START1, START2, START3 s adresa $6000, $6004, $6008.
;Prvi bajt svakog stringa označava duljinu tog stringa u bajtovima.
;Ako su stringovi jednaki postavi varijablu MATCH s adrese $600C na 0, inače postavi na -1.

DATA: EQU $6000
PROGRAM: EQU $6100

ORG DATA
START1: DS.L 1
START2: DS.L 1
START3: DS.L 1
MATCH: DS.W 1

ORG PROGRAM
START:
MOVEA.L START1, A0
MOVEA.L START2, A1
MOVEA.L START3, A2
MOVEQ #-1, D1

MOVE.B (A0)+, D0
CMP.B (A1)+, D0
BNE.S KRAJ
CMP.B (A2)+, D0
BNE.S KRAJ

TST.B D0
BEQ.S ISTI

SUBQ.W #1, D0

LOOP: CMPM.B (A0)+, (A1)+
DBNE D0, LOOP

BNE.S KRAJ

MOVEA.L START1, A0
MOVE.B (A0)+, D0
SUBQ.W #1, D0

LOOP1: CMPM.B (A0)+, (A2)+
DBNE D0, LOOP1

BNE.S KRAJ

ISTI: MOVEQ #0, D1

KRAJ: MOVE.W D1, MATCH



MOVE.B #9,D0
TRAP #15 ; halt simulator



END START

[/code:1]
da ne otvaram novu temu, pitat ću ovdje:
nikako da shvatim zbog čega mi program uvijek kaže da su nizovi različiti (osim kad stavim duljinu 0)
to je 16. zadatak za praktični

Kod:

;Provjerite da li su tri niza ASCII znakova jednaka.
;Početne adrese stringova dane su 32 bitnim varijablama START1, START2, START3 s adresa $6000, $6004, $6008.
;Prvi bajt svakog stringa označava duljinu tog stringa u bajtovima.
;Ako su stringovi jednaki postavi varijablu MATCH s adrese $600C na 0, inače postavi na -1.

DATA:      EQU   $6000
PROGRAM:   EQU   $6100

      ORG   DATA
START1:      DS.L   1
START2:      DS.L   1
START3:      DS.L   1
MATCH:      DS.W   1

      ORG   PROGRAM
START:
      MOVEA.L   START1, A0
      MOVEA.L   START2, A1
      MOVEA.L   START3, A2
      MOVEQ   #-1, D1
      
      MOVE.B   (A0)+, D0
      CMP.B   (A1)+, D0
      BNE.S   KRAJ
      CMP.B   (A2)+, D0
      BNE.S   KRAJ
      
      TST.B   D0
      BEQ.S   ISTI
      
      SUBQ.W   #1, D0
      
LOOP:      CMPM.B   (A0)+, (A1)+
      DBNE   D0, LOOP
      
      BNE.S   KRAJ
      
      MOVEA.L   START1, A0
      MOVE.B   (A0)+, D0
      SUBQ.W   #1, D0
      
LOOP1:      CMPM.B   (A0)+, (A2)+
      DBNE   D0, LOOP1
      
      BNE.S    KRAJ
      
ISTI:      MOVEQ   #0, D1

KRAJ:      MOVE.W   D1, MATCH
      
      

      MOVE.B   #9,D0
      TRAP   #15      ; halt simulator



      END   START



[Vrh]
Korisnički profil Pošaljite privatnu poruku
Phoenix
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 1:50 čet, 29. 11. 2012    Naslov: Citirajte i odgovorite

Problem je u tome što nakon petlje [tt]LOOP[/tt] imaš u [tt]D0[/tt] pohranjenu vrijednost [tt]0000FFFF[/tt], a nakon unosa duljine prvog stringa u isti registar, recimo da je duljina bila [tex]3[/tex], u njemu imaš [tt]0000FF03[/tt]. To nije dobro jer nakon tri oduzimanja u petlji [tt]LOOP1[/tt] dobivaš broj [tt]0000FF00[/tt] koji je svakako različit od nule, stoga ti se ta petlja vrti najviše [tex](FF00)_{16}[/tex] dodatnih, nepoželjnih koraka, odnosno u nekom trenutku možda i stane ako zaključi da su proširenja promatranih stringova ipak različita (ovisno što se već nalazi u ostatku memorije koja nam, usput, možda nije ni dozvoljena na korištenje).

Dakle, dovoljno je dodatni naredbu poput [tt]MOVE.W #0 D0[/tt] nakon petlje [tt]LOOP[/tt] i naredbe [tt]BNE.S KRAJ[/tt] i program će ti funkcionirati kako si zamislila. :)
Problem je u tome što nakon petlje LOOP imaš u D0 pohranjenu vrijednost 0000FFFF, a nakon unosa duljine prvog stringa u isti registar, recimo da je duljina bila [tex]3[/tex], u njemu imaš 0000FF03. To nije dobro jer nakon tri oduzimanja u petlji LOOP1 dobivaš broj 0000FF00 koji je svakako različit od nule, stoga ti se ta petlja vrti najviše [tex](FF00)_{16}[/tex] dodatnih, nepoželjnih koraka, odnosno u nekom trenutku možda i stane ako zaključi da su proširenja promatranih stringova ipak različita (ovisno što se već nalazi u ostatku memorije koja nam, usput, možda nije ni dozvoljena na korištenje).

Dakle, dovoljno je dodatni naredbu poput MOVE.W #0 D0 nakon petlje LOOP i naredbe BNE.S KRAJ i program će ti funkcionirati kako si zamislila. Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Loo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 06. 2012. (16:02:07)
Postovi: (D0)16
Spol: žensko
Sarma = la pohva - posuda
84 = 85 - 1

PostPostano: 10:36 čet, 29. 11. 2012    Naslov: Citirajte i odgovorite

a tako znači! mislila sam da je problem u ideji, a ne u neopreznosti s veličinama brojeva.
puno ti hvala :D
a tako znači! mislila sam da je problem u ideji, a ne u neopreznosti s veličinama brojeva.
puno ti hvala Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Phoenix
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 13:57 čet, 29. 11. 2012    Naslov: Citirajte i odgovorite

Možda bi bilo korisno i da kažem sljedeće: Trace info (6. gumb slijeva u gornjoj traci, odnosno F7) ti uvelike pomaže u debuggiranju. Tako možeš analizirati svoj kod liniju po liniju i pratiti promjene u memoriji, registrima i čemu već ne. :) Tako bi, recimo, u svom kodu primijetila da se previše puta vrtiš u petlji [tt]LOOP1[/tt], pa pogledom na registar [tt]D0[/tt] bi skužila da nije jednak nuli, a trebao bi biti. :D
Poprilično su korisne i zelene lampice s lijeve strane dok pokrećeš program. Promijeniš li koju u crvenu i pokreneš li program, izvršit će se sve naredbe do one prve po redu koja ima upaljenu crvenu lampicu. Tako da, primjerice, ako ti početni dio koda radi, a sam se izvršava u povećem broju ciklusa, ovako ga efikasno preskočiš. :D

Eto, čisto par savjeta ako nisi do sada skužila da se kodovi mogu poprilično efikasno debuggirati, a ne samo izvrtiti od početka do kraja. :) A i ovo su valjda najkorisnije stvari dok učiš programirati i dok učiš kako se sve to odvija i ponaša u memoriji. :)
Možda bi bilo korisno i da kažem sljedeće: Trace info (6. gumb slijeva u gornjoj traci, odnosno F7) ti uvelike pomaže u debuggiranju. Tako možeš analizirati svoj kod liniju po liniju i pratiti promjene u memoriji, registrima i čemu već ne. Smile Tako bi, recimo, u svom kodu primijetila da se previše puta vrtiš u petlji LOOP1, pa pogledom na registar D0 bi skužila da nije jednak nuli, a trebao bi biti. Very Happy
Poprilično su korisne i zelene lampice s lijeve strane dok pokrećeš program. Promijeniš li koju u crvenu i pokreneš li program, izvršit će se sve naredbe do one prve po redu koja ima upaljenu crvenu lampicu. Tako da, primjerice, ako ti početni dio koda radi, a sam se izvršava u povećem broju ciklusa, ovako ga efikasno preskočiš. Very Happy

Eto, čisto par savjeta ako nisi do sada skužila da se kodovi mogu poprilično efikasno debuggirati, a ne samo izvrtiti od početka do kraja. Smile A i ovo su valjda najkorisnije stvari dok učiš programirati i dok učiš kako se sve to odvija i ponaša u memoriji. Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Loo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 06. 2012. (16:02:07)
Postovi: (D0)16
Spol: žensko
Sarma = la pohva - posuda
84 = 85 - 1

PostPostano: 23:04 pet, 30. 11. 2012    Naslov: Citirajte i odgovorite

nisam primjetila ovo s lampicama :oops:
hvala za savjete, šteta što mi degiorgi ne dopušta dati više od jedne la pohve :wink:
nisam primjetila ovo s lampicama Embarassed
hvala za savjete, šteta što mi degiorgi ne dopušta dati više od jedne la pohve Wink


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Građa računala Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan