Deklaration av variablar i ASM

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Deklaration av variablar i ASM

Inlägg av warrior »

Har någon lust att förklara det här för mig.
Skriver man så här i asm.
Och gör man det så förklara gärna CBLOCK och ENDC är det start och slut
på variabeldeklarationen? behöver man inte tala om i assembler vad det är för variabel eller kan det bara vara en siffra mellan 0-255?
Tacksam för svar.
Finns det nån bra sida där man kan läsa om upplägg i program är jag
intresserad!

CBLOCK 0x000
WREG_TEMP ;to save WREG during interrupt
STATUS_TEMP ;to save STATUS during interrupt
BSR_TEMP ;to save BSR during interrupt
FSR0H_TEMP ;to save FSR0H during interrupt
FSR0L_TEMP ;to save FSR0L during interrupt
FSR0H_SHADOW ;to save FSR0H during high interrupt
FSR0L_SHADOW ;to save FSR0L during high interrupt
Flags ;byte for indicator flag bits
TempData ;temporary data in main routines
TempRxData ;temporary data in Rx buffer routines
TempTxData ;temporary data in Tx buffer routines
TxStartPtrH ;pointer to start of data in Tx buffer
TxStartPtrL ;pointer to start of data in Tx buffer
TxEndPtrH ;pointer to end of data in Tx buffer
TxEndPtrL ;pointer to end of data in Tx buffer
RxStartPtrH ;pointer to start of data in Rx buffer
RxStartPtrL ;pointer to start of data in Rx buffer
RxEndPtrH ;pointer to end of data in Rx buffer
RxEndPtrL ;pointer to end of data in Rx buffer
TxBuffer:TX_BUF_LEN ;Tx buffer for data to transmit RxBuffer:RX_BUF_LEN ;Rx buffer for received data
ENDC
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

Till att börja med är det alltid en fördel att skriva *vilken* assembler det gäller, men nu råkar det vara så att jag kan gissa mig till att du använder PIC och MPLAB. I hjälpfilerna till MPLAB finns all information du behöver om CBLOCK, och vad du menar med "..bara vara en siffra mellan 0-255" vet jag inte. Själv använder jag direktivet RES när jag deklarerar variabler, för då får jag själv ange storlek. RES 1 ger ett register (8 bitar), RES 5 ger 5*8, osv.
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Inlägg av warrior »

Ok
Ja det var ju lite klantigt att jag inte skrev det men du gissade helt rätt.
Så man kan söka efter sån typ av hjälp i mplab´s hjälp.

Tack för tipset.

Ska använda mig av res det är väl lättare om man byter processor att använda samma program då!
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

Varför skulle det vara lättare?
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Inlägg av warrior »

Har uppfattat det så men jag kanske har fel!
Se länk!

http://www.jescab.se/Relocmode.html
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Generellt sett är "Relocatable mode" mer modernt och smidigare eftersom
det blir färre hårda kopplingar till just den processor man jobbar med
för tillfället. Det blir alltså lite enklare att flytta koden mellan
olika processorer. "Absolut mode" är en relik från historen och det finns
idag ingen anledning att själv skriva kod så.

Sen är det en annan sak att 99% av all kod ute "på nätet" är skriven
i absolut mode, men den brukar i alla fall vara så jäkla dålig, så det
spelar mindre roll...

> CBLOCK och ENDC är det start och slut

CBLOCK = "Constant Block".
CBLOCK skapar ett antal *konstanter* med olika värden i sekvens.

O.b.s att detta inte har ett smack med allokering av RAM minne att göra !!

Konstanterna kan användas till vad som helst, och MPASM har ingen koll
på att du inte strulare till det för dig och t.ex sätter två konstanter till
samma värde och sedan använder dom som adresser...

RES direktivet däremot gör en RAM allokering på korrekt sätt.

> kan det bara vara en siffra mellan 0-255?

Siffra och siffra....
Det kan vara ett värde, ett tecken (t.ex ASCII), 8 st bit-flaggor eller vad
du nu vill använda ett register till. Det är helt upp till dig.

Vad var ditt exemepl till för processor ?

Förrutom sidan som du länkade till, se även : http://www.jescab.se/abs_reloc.html
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Inlägg av warrior »

Tack för info Sodjan.

Programmet var tagit ur ett exempel till18f452 men jag har tänkt att använda det till 18f2480.

Men inser nu att det kanske är bättre att skriva om programmet.

Ska läsa igenom sidorna som länkarna på din sida går till Sodjan och förstå mig på det.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Programmet var tagit ur ett exempel till18f452

OK, misstänkte att det var en PIC18. Men i så fall så är :

> WREG_TEMP ;to save WREG during interrupt
> STATUS_TEMP ;to save STATUS during interrupt
> BSR_TEMP ;to save BSR during interrupt

i princip onödiga. Interrupt systemet på PIC18 fungerar inte så,
om man inte envisas med att köra dubbla interrupt nivåer, vilket
i 99% av fallen är onödigt...

Men de kanske aldrig användes i koden i alla fall...

Var finns "programmet" (om det är publikt, alltså) ?
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Inlägg av warrior »

Microchip

AN774 och så den som är för pic18 där

Jag har valt p18_tiri.asm
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Som jag skrev :

> Sen är det en annan sak att 99% av all kod ute "på nätet" är skriven
> i absolut mode,

Och Microchip är inget undantag... :-)

OK, ett USART exmpel.
Jag antar att det enklaste är att bara plocka de delar som du vill använda.
Det är ju ett ganska komplext exempel med buffrar m.m. Är det så du
vill köra ? Att *läsa* koden är därmot aldrig fel! Det lär man sig en massapå.
Men sedan kan man skriva sin egen kod i alla fall.
Dessutom ska väl detta ingå i något annat annat jag.
warrior
Inlägg: 50
Blev medlem: 22 februari 2007, 12:36:58
Ort: Borås

Inlägg av warrior »

Tack för visat intresse av att hjälpa.
Det är guld värt när man inte fattar.

Ja jag tänkte försöka förstå programmet för att sedan plocka ut det som verkar intressant för mig. Finns det någonstans man kan få hjälp med just sådana frågor om programupplägg som detta.

Förutom mplabs hjälp som jag fick tips om innan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Problemet är att det är väldigt personligt hur man vill organisera
sin kod. I mina exempel syns hur jag har gjort. Sen tillkommer
fler "regler" när man skapar projekt med flera filer o.s.v.
Min uppfattning är i alla fall att relocatable mode till viss del ger en
snygg struktur av sig självt.

Och igentligen är det inget som är specifikt eller unikt för just PIC kod... :-)
Skriv svar