Fórum témák

» Több friss téma
Fórum » dsPIC30 adattábla letárolás Assembly-ben
Lapozás: OK   1 / 1
(#) mephi01 hozzászólása Jún 13, 2008 /
 
Sziasztok!

A következő problémám adódott dsPIC30-as assembly programozás közben:
CRC-generáláshoz el kellene helyeznem a memóriában 256 darab két byte hosszú adatot (az adatok megvannak, jelenleg szóközzel és vesszővel elválasztva), azaz 256 memóriarekeszt fel kell töltenem különböző számokkal.
C-ben ezt egyszerűen megoldhatnám egy tömb segitségével, egymás után felsorolva az elemeket.
Assemblyben van valami módja annak, hogy ne 256 darab MOV-val tegyem a helyére a dolgokat?
(#) watt válasza mephi01 hozzászólására (») Jún 13, 2008 /
 
Persze. Erre való a DB(bájt), és a DW(szó) utasítás, ami a fordítónak szól természetesen. Mivel a dsPIC30 16bites, ezért valószínű, hogy a DW lesz neked jó. A tábla előtt org-al be tudod állítani azt a címet, ahová a tábla kerüljön. Ha adsz egy címkét az org elé, akkor arra hivatkozhatsz is amikor beállítod a kiolvasáskor a címet a TBLRDx-ekben.
(#) mephi01 válasza watt hozzászólására (») Jún 14, 2008 /
 
Tehát akkor a következő kód elvileg a 0x0B00-ra (és 0x0B002, stb-re) teszi le az adatokat:



tablazat:

.org 0x0B00

.word 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf


Ha több sorban fér el csak az adat, a fordító csak úgy ette meg, ha minden sor elé beírtam a .word-öt.
Tehát soronként meg kell adni, vagy valamit elrontottam?

Illetve ha így megadtam, hogyan tudok hivatkozni az n-edik elemre?

(először code-tag-ek közé téve akartam ide a fórumra beilleszteni a kódot, de akkor nem tördelte)
(#) watt válasza mephi01 hozzászólására (») Jún 14, 2008 /
 
Idézet:
„(először code-tag-ek közé téve akartam ide a fórumra beilleszteni a kódot, de akkor nem tördelte)”
legközelebb írj egy =asm -ot a code után. C esetében =c -t...)

Ha jól emlékszem soronként kell .word-ot megadnod.

Hivatkozni bármelyik adatra tudsz, csak el kell tolni a TBLRDx-ekben a címet.

Ha címkéket adsz meg az .org-ok elé, akkor azzal is hivatkozhatsz egy csoport elejére.

Ha nem titkos, csatolhatnád a kódot, többet látnék..
(#) watt hozzászólása Jún 14, 2008 /
 
Esetleg ez a doksi segíthet még...
(#) mephi01 válasza watt hozzászólására (») Jún 15, 2008 /
 
A kódot szivesen csatolnám, de nincs értelme, mert nagyon hosszú, és az adat-letárolási rész még nincs benne...

Amivel eddig még nem találkoztam -a linkelt doksiban sem találtam meg-, hogy ez az általad idézett "TBLRDx". Ezt le tudnád írni 1-2 mondatban, vagy hol tudnék utánaolvasni?
(#) mephi01 válasza mephi01 hozzászólására (») Jún 16, 2008 /
 
Hogy kicsit egyértelműbb legyek, egy konkrét példára lenne szükségem, az elemekre való hivatkozással kapcsolatban. Pl. ha a fentebb írt módon elhelyezem azt az egy sort, hogyan tudok rá hivatkozni?
(#) watt válasza mephi01 hozzászólására (») Jún 16, 2008 / 4
 
Ezt a doksiból másoltam ki a program utasítások táblázatból:
  1. 78 TBLRDH TBLRDH Ws,Wd Read Prog<23:16> to Wd<7:0> 1 2 None
  2. 79 TBLRDL TBLRDL Ws,Wd Read Prog<15:0> to Wd 1 2 None


És itt van egy példaprogi(bootloader) amiben használják az utasításokat. - bootloader -

Ez egy részlet a kódból:
  1. tblrdh [W0], W1 ; Read high word to W1
(#) watt válasza watt hozzászólására (») Jún 16, 2008 /
 
Ez is egy jó oldal a kérdésedre.

Az adatlapokban pedig a Flash Programozás részeknél is tárgyalják a programterület címzését(TBLPAG stb).
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem