[ hvlareta @ 09.12.2007. 16:17 ] @
Ljudi stvarno imam problem sa nekolicinom zadataka koje bih voleo da znam da uradim ako neko zna molio bih ga da mi pomogne (uradi) oko ovih zadataka jer stvarno nemam predstavu kako ih uraditi a imam podosta takvih, ozbiljno mislim da naucim taj ispit. evo jednog od zadataka pa ako je neko raspolozen za pomoc u neprilici nek se javi ima oko 10ak tipova zadataka. fora je u tome da ko zna zadaci su laki

Napisati program koji u memoriju od adrese $100 do $1FF smešta naizmenično brojeve $AA i $55
[ bkaradzic @ 09.12.2007. 17:37 ] @
Da li ćeš u rezimeu kada ga budeš slao poslodavcima napisati da znaš asembler ili ćeš napomenuti da su ti zadatke iz asemblera radili na nekom forumu? Da li znaš da rešiš zadatak u nekom drugom programskom jeziku?
[ kime1 @ 09.12.2007. 17:49 ] @
pazi, da su bilo koji brojevi, mogao bi ih čuvati u dve lokacije, pa posebno upisivati jednu i drugu (ili prvo samo jednu pa drugu) - prvo izračunaš koliko ukupno zapisivanja treba da bude (200h-100h = 512), postaviš početnu adresu upisa i counter koji dekrementiraš. Pošto 55h i AAh u zbiru daju FFh, verovatno se očekuje da svaki put izvršiš neku operaciju komplementiranja ili šta već, ne znam šta sve radi alu.
Znači očekuje se verovatno da imaš u memoriji samo jednu lokaciju za broj koji upisuješ 5h ili AAh


postaviš vrednost početne sdrese 100h u neki registar (load R1 #100h)
postaviš counter u drugi (load R2 #100h)
Load R3 #AA
napišeš labelu na početku petlje,
store r3 r1 (gde koristiš direktno memorijsko adresiranje, ne znam kako se označava, da li u zagradi...)
inc R1
complementiraš r3 (sigurno imaš neku naredbu)
dec R2
JNZ labela


otprilike tako
[ hvlareta @ 09.12.2007. 18:45 ] @
to bkaradzic
treba mi samo postupak kako bih mogao dalje da naucim i savladam gradivo da bih polozio ispit, iskreno ne zanimaju me toliko mikroracunari vec web design

to kime

da znam odprilike postupak ali stvarno ne znam kako to uraditi jer mi je najgore od svega sto znam osnovu a postoje 20-ak tipova zadataka koji se ponavljaju. 10-ak sam sam provalio ali ovo stvarno nemam pojma
u krajnjoj liniji znas li nekog ko drzi casove toga placam posteno

fora je sto i ja znam odprilike (bez uvrede naravno)
[ kime1 @ 09.12.2007. 19:10 ] @

za detaljniji odgovor morao bih da znam koju arhitekturu koristite, jedino da nađeš nekoga ko je položio taj kurs na vets...
[ bkaradzic @ 09.12.2007. 19:27 ] @
Citat:
iskreno ne zanimaju me toliko mikroracunari vec web design

Uh... Poznavanje toga ti neće predstavljati teret u kasnijem bavljenju web dizajnom. Ali ok, tvoj izbor.

Jedna verzija bi bila:
Code:

  mov eax, 0AA55AA55h
  mov ecx, 40h
  mov esi, 100h
loop:
  mov [esi], eax
  mov esi, 4
  dec ecx
  jnz loop


Sada oni na faksu verovatno više vole da vide komplikovanu verziju od jednostavne, pa:

Code:

  mov al, 55h
  mov ecx, 1ffh
loop:
  mov [ecx], al
  rol al, 1 ;; ili xor al, ffh
  dec ecx
  jnz loop


rol radi zato što brojevi 0x55 i 0xAA izledaju ovako binarno:
01010101 0x55
10101010 0xAA
[ hvlareta @ 09.12.2007. 19:56 ] @
pa mi konkretno radimo na Motorola MC6800hc11
bkaradzic stvarno hvala ali ja ovde nista ne razumem
[ bkaradzic @ 09.12.2007. 20:21 ] @
Gledajući dokumentaciju za 68HC11 program bi izgledao ovako:
Code:

  ldaa #$55
  ldab #$100
  ldx #$1ff
loop:
  staa 0,x
  rola ;; ili eora #$ff
  dex
  decb
  bne loop

Reference:
http://www.owlnet.rice.edu/~elec201/Book/6811_asm.html
http://www.ele.uri.edu/Courses...5/6811-Instructions/index.html
[ hvlareta @ 11.12.2007. 17:30 ] @
dakle sve osim par stvari mi je tu jasno
1. zasto staa 0,x a ne staa 100,x (posto predpostavljam da sadrzaj acca baca na sve lokacije od do)
2. zasto dekramentujemo b

[Ovu poruku je menjao hvlareta dana 11.12.2007. u 19:32 GMT+1]
[ bkaradzic @ 11.12.2007. 18:39 ] @
Zato što po dokumentaciji samo ta instrukcija postoji. Npr. možeš da napišeš staa <#$adresa> ali ne možeš da napišeš samo staa <index registar>, moraš da dodaš offset. U ovom slučaju 0. Mada ovo zavisi i od asemblera, jer neki asembleri dozvoljavaju da pišeš u skraćenom obliku, a onda oni prevedu u ono što treba.

Citat:

STAA Store Accumulator A
IND, X

Indexed

Location of data is specified by the sum of a 16-bit index register (register X or Y) and an offset value that is part of the instruction. Example: LDAA 5,X takes the sum of the value currently in the X register and 5, then loads the A register with the memory byte at that address. Offsets range in value from 0 to 255.


decb je tamo zato što u primeru upisujem od adrese $1ff i završava sa na adresi $100 pa zero flag bit neće biti setovan kada se dođe do te adrese... Takođe nije moguće da offset pređe $ff, pa ne možeš da napišeš ovakav kod:

Code:

  ldaa #$55
  ldx #$ff
loop:
  staa $100,x ;; greška zato što je offset van 0-255 opsega. $100 = 256.
  rola ;; ili eora #$ff
  dex
  bne loop


[ hvlareta @ 13.12.2007. 13:32 ] @
ok mislim da sam skapirao ovo jos samo da mi udje u prste
sad se naravno javlja drugi tip zadatka

Napisati podprogram za vremensko kašnjenje od približno 0.2s (instrukcioni ciklus je 1μS). Koristeći ovaj podprogram u glavnoj programskoj petlji na leč na adresi $8000 sa taktom od 0.4s naizmenično izbacivati vrednost 1 i 4 respektivno.

e sad ovaj deo za kasnjenje trebalo bi da izgleda
Code:

        ldx     #$c8
pet   dex
        bne    pet


ali kako ostatak???
[ hvlareta @ 17.12.2007. 20:43 ] @
zna li neko ko ima vremena da mi odgovori???
[ bkaradzic @ 18.12.2007. 21:55 ] @
Na ovom linku, a i verovatno i u literaturi koju si dobio na VETS-u imaš sve detaljno o instrukcijama. dex 3 ciklusa, bne 3 ciklusa, znači ukupno 6μS po iteraciji. Sada samo promeni ldx tako da 6μS * broj iteracija bude 0.2s ili 0.4s, šta ti već treba...
[ Monk Psycho @ 30.03.2008. 20:33 ] @
@hvlareta

Ne mogu da verujem da jos nisi polozio MK
Pozdrav