PIC elado

VF vf at elte.hu
Mon Apr 28 19:11:19 CEST 2003


Thus spake Istvan Retaller:

> szoval 7 utasitas. PIC-ben megoldod harmincbol? Es az ido nagy

A bitenkenti szorzassal egyutt? Eselytelen... Mialatt a PIC egyetlen
adatot bemozgat a W-be, az AVR _ket szorzast megcsinal!_
(Ugyanolyan orajelen termeszetesen)

> st Z+,R16  utasitast. Ez a Z regiszterpar altal mutatott cimre teszi
> R16 erteket, majd Z-t eggyel noveli. Akkor is helyesen, ha Z pl.1fffh
> volt, akkor 2000h lesz Z a kilepeskor. Es ez _egyetlen_ utasitas.
> Ennek vannak testverei:
> st -Z,R16 szinten _egyetlen_ utasitas, de _elobb_ csokkenti Z-t, majd
> csak utana teszi le a regisztert.

Ez egy rendkivul hasznos dolog, de szinten csak azok tudjak ertekelni
igazan, akik lehuztak nehany evet valami korszerubb proci programozasaval.
Egy kis izelito az m68k assemblybol:

    move.b    ([a0,d0.w*8],678),(a2,d3.l*8,34)

A d0 regiszter also wordjet mexorozza 8-al, hozzaadja az a0-hoz, majd
az igy kapott cimrol beolvas egy longwordot. Ehhez hozzaad 678-at, majd
errol a cimrol beolvas egy bajtot, amit eltarol a kovetkezo cimen:
a d3-at megszorozza 8-al, hozzaadja az a2-t es 34-et.

    movem.l   d0-d2/a0-a2/a6,(a4)+

A felsorolt regisztereket elmenti az a4-tol kezdodoen. Pre-dekrementalas,
post-inkrementalas, vagy sima tarolas is lehetseges.

    bfexts    (a2,d4.l*4,3){10:3},d2

Az a2+d4*4+3 cimrol kiolvas egy longwordot, balrol szamolva a 10 bittol
kezdodoen 3 bitet kivesz, azt bemasolja a d2 legalso biteibe, majd a
tobbi bitet az elojelnek megfeleloen beallitja.
Ilyenbol van meg elso 1-es bit kereses, beszuras, stb...

    divu.l    d1,d2:d3

A d2 es d3 altal kepzett 64 bites szamot elosztja a d1-el. D3-ba teszi a
hanyadost, d2-be a maradekot. Van elojeles verzio is, szorzas is, d1
helyen az osszes szokasos cimzesmod hasznalhato.

Aki az ilyesmit szokta meg, az AVR-t is szeretni fogja, es hatekonyan
fogja tudni hasznalni. Aki 8051-en es hasonlokon tanulta az assemblyt,
annak szoknia kell, mielott hatekonyan tudna hasznalni a sok uj lehetoseget.

> Udv, RI

-- 
Valenta Ferenc <vf at elte.hu>   Visit me at http://ludens.elte.hu/~vf/
"Lassan irom ezt a levelet, mert tudom, hogy nem tudsz gyorsan olvasni."



More information about the Elektro mailing list