www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

motorola MC68000 naloga v zbirniku

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Naloge, izpiti, seminarske
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Tor Maj 13, 2014 2:58 pm    Naslov sporočila:  motorola MC68000 naloga v zbirniku Odgovori s citatom

pozdravljeni,

potrebujem pomoč pri programiranju v zbirniku z motorolo MC68000. Naloga:

Pri fizikalnem poskusu smo na sistemu Kat/Ce v pomnilnik vnesli zaporedje 512 meritev od naslova $4000 naprej. Vsaka meritev je 16-bitno predznačeno celo število. Napišite program v zbirniku, ki izračuna povprečje meritev x. Za izračun uporabite standardno formulo za povprečje.

Prosim če mi lahko kdo, ki se spozna na progrmiranje v zbirniku pomaga rešiti nalogo oziroma razloži kako bi jo rešil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 740
Aktiv.: 3.32
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Tor Maj 13, 2014 3:32 pm    Naslov sporočila:   Odgovori s citatom

1. V indeksni register daš naslov prvega rezultata meritve.

2. V zanki zaporedoma s pomočjo indeksnega registra prebereš vseh 512 meritev in njihove vrednosti prištevaš v 32 bitni akumulator (pred zagonom zanke akumulator seveda postaviš na 0).

3. Preveriš ali je rezultat v akumulatorju pozitiven ali negativen.

4. Če je rezultat pozitiven, ga deliš s 512 tako, da ga s shiftanjem premakneš za 11 mest v desno

5. Če je rezultat negativen, ga najprej z odštevanjem od 0 pretvoriš v pozitivnega, izvršiš deljenje kot v 4. koraku in po deljenju zopet odšteješ od 0, da ga spremeniš nazaj v negativnega.

Za matematično korektnost: pred deljenjem (korak 4.) rezultatu prišteješ še polovico delitelja, v tvojem primeru je to 256. S tem zagotoviš pravilno zaokrožanje decimalnih mest, ki nastanejo pri deljenju, na celoštevilski rezultat! V nasprotnem se izvrši zgolj deljenje z rezanjem decimalnih mest.

Dobljeni rezultat je zopet pšredznačeno celo število.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 740
Aktiv.: 3.32
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Tor Maj 13, 2014 3:41 pm    Naslov sporočila:   Odgovori s citatom

s56al je napisal/a:

4. Če je rezultat pozitiven, ga deliš s 512 tako, da ga s shiftanjem premakneš za 11 mest v desno


Napaka, popravljam, za deljenje s 512 je treba vrednost "shiftati" za 9 binarnih mest v desno (bite, ki na desni izpadajao iz akumulatorja, zavržeš).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Tor Maj 13, 2014 3:44 pm    Naslov sporočila:   Odgovori s citatom

CLR.L D1
MOVE.W #$4000, A1
GOR: ADD.L (A1)+, D1
CMP.W #$4200, (A1)
BNE.W GOR
ROR.L #11, D1
END

je mogoče tako pravilno?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Tor Maj 13, 2014 3:44 pm    Naslov sporočila:   Odgovori s citatom

sem mislil napisat 9 namesto 11 pa nisem bil prepričan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 6.02
Kraj: Ljubljana

PrispevekObjavljeno: Tor Maj 13, 2014 5:10 pm    Naslov sporočila:   Odgovori s citatom

Tvoji podatki v RAM-u so 16-bitni.
z indeksom bereš 32-bitno in tudi index povečuješ za 4!
Torej prebereš vsak drugi rezultat.
Assembler syntax:

Citiram:
(An)+

Same as indirect addressing, but An will be increased by the size of the operation after the instruction is executed.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Tor Maj 13, 2014 11:01 pm    Naslov sporočila:   Odgovori s citatom

potem moram spremeniti v add.w da bom bral 16bitov, kolikor je velika ena številka povečeval bom pa za 2?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 6.02
Kraj: Ljubljana

PrispevekObjavljeno: Sre Maj 14, 2014 7:11 am    Naslov sporočila:   Odgovori s citatom

Tudi zgornjo mejo naslovov moraš spremeniti, ali pa uvesti števec v zanki, ki pa gre do 512 (0x200). Pa paziti, da je seštevanje 32-bitno.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 740
Aktiv.: 3.32
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Sre Maj 14, 2014 8:12 am    Naslov sporočila:   Odgovori s citatom

Pogledal sem v zbirko ukazov MC68000 in kot tam piše, ukaz "ROR" pomika bite v desno na način, da bit, ki zapusti besedo na eni strani, pride na drugi strani nazaj not. Če želiš, da bo deljenje delovalo pravilno, je treba za to ustrezno poskrbeti:

- po shiftanju "brišeš" najvišjih 9 bitov;
- ali poskrbiš, da v besedo med pomikanjem v desno z leve prihajajo le ničle če je število pozitivno oz. enke, če je negativno.

Še enkrat, ne pozabi, da je seštevek meritev, iz katerega po deljenju dobiš povprečje, lahko negativen (MSB = 1). To lahko obravnavaš na dva načina:

- pretvoriš seštevek v pozitivnega z odštevanjem od 0 in potem deliš, ter po deljenju postopek pretvorbe nazaj v negativno število ponoviš (kot sem napisal že v prvem sporočilu),
- pri shiftanju (ali po njem) gornjih 9 bitov zapolniš z enkami namesto z ničlami kot navedeno v drugi alineji prvega odstavka.

Pred deljenjem seštevku prištej 256, s tem boš dosegel pravilno zaokrožanje decimalnih mest. Poskusi na papir, kaj se zgodi, če recimo 0111 "deliš z 2" tako, da zamakneš za eno mesto v desno in sicer brez ter z dodatkom polovice delitelja (v tem primeru +1) pred zamikanjem. Koliko je rezultat v prvem primeru, koliko v drugem in kaj je matematično pravilno?

.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 6.02
Kraj: Ljubljana

PrispevekObjavljeno: Sre Maj 14, 2014 8:34 am    Naslov sporočila:   Odgovori s citatom

ROR --> ASR
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 740
Aktiv.: 3.32
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Sre Maj 14, 2014 9:43 am    Naslov sporočila:   Odgovori s citatom

S53DZ je napisal/a:
ROR --> ASR


ASR je pa idealen v ta namen, ker avtomatsko ohranja MSB, tako da se s predznakom ni treba posebej ukvarjati...
.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Pet Maj 16, 2014 10:41 am    Naslov sporočila:   Odgovori s citatom

obstaja kak simulator za motorolo 68000, da bi lahko sprobaval kodo, ker trenutno lahko samo v šoli programiram...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vpeter
Član
Član



Pridružen-a: Pon 11 Jun 2012 16:05
Prispevkov: 337
Aktiv.: 2.34
Kraj: Maribor okolica

PrispevekObjavljeno: Pet Maj 16, 2014 10:44 am    Naslov sporočila:   Odgovori s citatom

gregaa je napisal/a:
obstaja kak simulator za motorolo 68000

Ravno nekaj tednov nazaj sem testiral EASy68K. Zanimiva zadeva. Poskusi in poročaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gregaa
Član
Član



Pridružen-a: Pon 15 Jun 2009 16:46
Prispevkov: 107
Aktiv.: 0.59
Kraj: Slov.Bistrica

PrispevekObjavljeno: Tor Maj 20, 2014 7:00 am    Naslov sporočila:   Odgovori s citatom

hvala vpeter, ta program je res dober za testiat kodo. samo večkrat mi zmzne med preverjanjem Sad
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vpeter
Član
Član



Pridružen-a: Pon 11 Jun 2012 16:05
Prispevkov: 337
Aktiv.: 2.34
Kraj: Maribor okolica

PrispevekObjavljeno: Tor Maj 20, 2014 10:30 am    Naslov sporočila:   Odgovori s citatom

Jaz sem program samo na hitro preizkusil, tako da ti glede stabilnosti ne morem pomagati.

Morda lahko preizkusiš KAT/CE emulator. Gre za popolno emulacijo sistema vendar ni tako uporabniško prijazen.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Naloge, izpiti, seminarske Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 69 dni


Powered by phpBB © 2001, 2005 phpBB Group