Ik zit met twee dingen omtrent mpasm, waarvan ik graag wil weten hoe het zit. Aangezien de respons op dit forum veel sneller is dan het microchip forum post ik het hier.
1)
Ik vraag me af wat de volgende twee directives nu precies doen binnen mpasm:
udata_shr
udata
Ik zit hier namelijk met een samplecode van microchip te spelen en die twee directives hebben voor een probleem gezorgd. Na wat gerommel in de code is het probleem opgelost, maar ik snap niet wat ik gedaan heb (en dat trek ik slecht).
Weet iemand raad met deze twee directives?
(de uitleg in het microchip-mpasm-boek is voor mij echt onvoldoende om te begrijpen hoe het werkt)
2)
Als je in mpasm voor variabelen een geheugenplaats reserveert (gebruik makend van RES), worden de variabelen op een willekeurige manier in het geheugen gezet. Tenminste, dat is mijn conclusie.
Wat ik nu ontdekt heb, is dat als je voor bijvoorbeeld de variabele "buffer" 10 geheugenplaatsen reserveert, deze geheugenplaatsen ook willekeurig gekozen worden. Het gevolg is dat je in instructies geen gebruik kunt maken van "buffer", "buffer+1", "buffer+2", "buffer+3".
Weet iemand of dit nu echt waar is, of dat ik gewoon fouten loop te maken?
Zucht..ik moet echt C gaan leren...
(ik weet overigens niet of dit topic wordt toegelaten op CO, aangezien het wel heel erg programmeer-issues zijn...)
Jeroen Boere
IF you can't convince them, then confuse them!
Op 16 juli 2004 21:01:05 schreef DIY:
(ik weet overigens niet of dit topic wordt toegelaten op CO, aangezien het wel heel erg programmeer-issues zijn...)
jahoor, het heeft heel erg te maken met elektronica. dus mag hij zeker hier gepost worden. 
Wat jij probeert te doen is code te schrijven waard de compiler nog alle kanten mee op kan. Met RES defineer je inderdaad een variable alleen kan de compiler nu beslissen deze op een willekeurige plaats in het programma geheugen te plaatsen. Dit is eigenlijk bedoeld voor libary`s zodat de functies en variablen in de libraries geplaats kunnen worden waar er plaats is. Als je gewonen normale code schrijft zou ik EQU gebruiken. Met UDATA heeft ook iets te maken met het toepassen van code voor een library. Je moet bij het maken an een library namelijk aangeven wat data is en wat code is geloof ik. Ik meen dat je daar UDATA voor gebruikt. In gewone code gebruikt je deze niet
Veel succes
He DrNellis..dat heldert al wat op..Het is inderdaad geen 'gewone' code, maar een 'project' met 4 asm-files en 1 header-file.
De code is daardoor wel lastig te doorgronden, maar er wordt in de originele code RES gebruikt om een array van 8 variabelen op te slaan en uit te kunnen lezen.
Deze array deed het altijd, maar toen ik de RES-waarde verhoogde naar meer variabelen kreeg ik de laatste twee niet meer te zien als het programma draaide...(en daarvoor had ik die "buffer-waarde" al iets vergroot,wat wel werkte).