Sida 1 av 1

MPlab och Assembler fråga

Postat: 6 februari 2008, 12:31:03
av SmourF
hej,

har suttit och programmerat assembler, och min fråga är enkel för den som kan :) har sökt men inte funnit ngt svar

om jag kodar i assembler i mplab, skapar ett projekt säg 16F84A,

är det möjligt att ha subrutiner i en annan fil ? och sedan includa i main filen

exempelt, main.asm "programmet i sig", init.asm "allt som ska initieras", delay.asm "en delay subrutin"

när man börjar närma sig över 500 rader, vill man dela upp det, hade ju förenklat så mkt

sen en annan fråga, stötte på CBLOCK när jag sökte runt idag, de fanns en fråga här med om CBLOCK och en sa, mplab manualen där finns svaren, kanske ja va blind men isf var PDFs sökmotor de me :)

min fråga är enkelt, fungerar den som en sk STRUCT,

exempel, skriver jag
CBLOCK .20
namn, efternamn
ENDC

genererar den då namn, efternamn, namn, efternamn i all evighet "tills minnet tar slut" ? och hur anropar man de då, rent fysiskt eller finns det som i C(++) en förenkling

tack i förhand

säkert ngt otydligt som jag skrivit, isf klaga ;)

MVH SmourF

Postat: 6 februari 2008, 12:47:44
av sodjan
> är det möjligt att ha subrutiner i en annan fil ?

Ja, två metoder.

1. Antingen (den enkla men lite stelbenta metodern) med #include.
D.v.s att din subrutin bara läses in i huvud-ASM fil och MPASM ser det
som om det hade varit en enda fil från början.

2. Eller (snyggare och modernare) genom att köra relocatable-code.
Läs på om EXTERN och GLOBAL o.s.v. Stora projekt byggs snabbare
eftersom bara den kod som behöver assembleras om.

> fungerar den [CBLOCK] som en sk STRUCT,

NEJ!

CBLOCK (står för Constant BLOCK) skapar bara ett gäng konstanter
som du kan använda i programmet.

CBLOCK h'20'
namn
efternamn
ENDC

Detta skapar en konstant med namn "namn" och värde h'20'
och en annan konstant med namn "efternamn" med värde 'h21'.

Notera att det finns en väl spritt missförstånd att CBLOCK (och EQU)
allokerar minne, det gör de INTE. Båda skapar bara namnsatta konstanter
med givna värden som kan användas till vad som helst. Men de har
inte ett smack med minnesallokering att göra !!

Och snälla, blanda inte in C++ i det här. Försök glömma det helt. Gör
inga jämförelser... :-)

Re: MPlab och Assembler fråga

Postat: 29 december 2009, 00:35:35
av HenkiBoy
sodjan skrev:2. Eller (snyggare och modernare) genom att köra relocatable-code.
Läs på om EXTERN och GLOBAL o.s.v. Stora projekt byggs snabbare
eftersom bara den kod som behöver assembleras om.
I vilken pdf ska man leta efter detta?

Re: MPlab och Assembler fråga

Postat: 29 december 2009, 01:30:00
av sodjan
Tja, enklast i manualen.
Förslagsvis MPASM/MPLINK manualen eftersom det hela handlar om det.
Eller hur menade du ?

För en snabb intro kan du även kolla :
http://www.jescab.se/Relocmode.html
http://www.jescab.se/abs_reloc.html

Re: MPlab och Assembler fråga

Postat: 29 december 2009, 09:57:29
av Icecap
Så CBLOCK fungerar som enum{} i C alltså. Se där, då har jag lärt mig lite idag med.