Fórum témák
» Több friss téma |
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?
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.
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) Idézet: legközelebb írj egy =asm -ot a code után. C esetében =c -t...)„(először code-tag-ek közé téve akartam ide a fórumra beilleszteni a kódot, de akkor nem tördelte)” 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..
Esetleg ez a doksi segíthet még...
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?
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?
Ezt a doksiból másoltam ki a program utasítások táblázatból:
És itt van egy példaprogi(bootloader) amiben használják az utasításokat. - bootloader - Ez egy részlet a kódból:
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). |
Bejelentkezés
Hirdetés |