[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