[elektro] ASM30, karakter hivatkozas
hg12345
hg12345 at freemail.hu
Fri Aug 29 09:10:53 CEST 2008
Horvath Zsolt <hozso_001 at freemail.hu> írta:
>
>
> Sziasztok!
>
>
> Hogyan tudok ASCII karakter kódot betölteni
> egy W regiszterbe? Mármint hogyan hivatkozok az assemblyben rá?
> Ezt szeretném:
>
> mov 'HZ', W2
Ez nem ér, ez a fiam monogramja :-)
>
> Nem fogadja el. Amit elfogad:
> mov #'H', W2
>
> ekkor beírja a H kódját W2-be, az alsó byte-ba. Ha még egy
> karaktert írok mellé, akkor már hibát jelez a fordító.
>
Az ascii '*' de ez is konstans mint bármi más ezért kell elé a konstans
jelzés: #.
Ascii konstans csak byte-os lehet ez nem ismeri a kiterjesztett
betötérképet. Ha két karaktert szeretnél elhelyezni egy regiszterben
az már string de stringet nem igy kell kezelni DS51307G page 58,
valahol elhelyezed a memóriában és egy pointerrel (indirekt cimzés)
végig olvasod.
Mint látod a string jelzése "****", de ez nem konstans! Ezért nem
tudod konstansként megadni, az ilyen megadáshoz csak terület
feltöltésnél használható és nem jár semmilyen egyébb hatással. Ha
szeretnéd késöbb használni akkor gondoskodnod egy hivatkozási
címről, ez lesz a pointer vagy cim amire indirekt cimzéssel hivatkozol.
Ez nem ennek az ASM-nek a sajátossága, minden ASM forditó igy
müködik.
Ha tárolt területes megoldást választod, akkor ennél a kontrollernél
elöre kell gondolkozni! Két megoldás van ami nem egyszerűsiti meg a
dolgodat.
Mivel a program memória 24 bites (3byte) és a program memóriá
tetszöleges 32K szegmense belapozható a RAM területre, de ez 16
bites :-) igy itt csak az alsó 16 bitet látod a FLASH-ből. (ennek megvan
oka!).
Ha TBLWR és TBLRD utasitásokkal éred el a FLASH-t akkor mind a 3
byte-t használhatod tárolásra, kicsit lassabb de tömörebb tárolást
biztosit, de a program hiba esetén itt végrehajtható kód lesz, .PSTRING
Ha a lapozást használod és RAM szerű elérést, igy .STRING-t kell
használni, ilyenkor a FLASH-ban NOP utasitások sorozatát látja a
program. Sokkal gyorsabb és egyszerübb a kiolvasás, de nem szabad
megfeledkezni a lapozás engedélyezéséről CORCON.PSV=1és a
PSVPAG regiszter beállításáról. (he nem engedélyezed akkor hardware
memoria trap hibát generál minden olvasásnál :-().
Ha mindenképpen ragaszkodsz a fenti elhatározásodhoz
akkor az igy néz ki :
mov # '1' | ('2'<<8) , W0 ;//ez tényleg lefordul
ez lesz az eredmény :
26C8 232310 mov.w #0x3231,0x0000
Ez két 8 bites konstanst tárol egy 16bites regiszterben, az egyiket
eltolva.
>
> Üdv.: Horváth Zsolt
>
> -----------------------------------------
> elektro[-flame|-etc]
>
______________________________________________________________________
ÉRETTSÉGI UTÁNI SZAKKÉPZÉSEK INGYENES ALAPKÉPZÉSSEL!
2 év alatt akár 3 szakma! EFEB
www.efeb.hu/szakkozep
More information about the Elektro
mailing list