Re: macro usage

Noel Henson <[email protected]> Thu, 30 Jun 2011 15:14:30 -0500
Newsgroups gmane.comp.hardware.microcontrollers.gnupic
Message-ID <1309464870.1920.24.camel@HP>
Have you check the .lst output file? If your radix is not set to
decimal, you may be generating mycalls 1-9,a,b,c,d,e,f.

Noel

On Tue, 2011-06-28 at 16:56 -0400, Joe M wrote:
> Hello,
> 
> I am trying to figure out how the macros in gpasm work?
> 
> I am trying to generate a table of calls such as:
> 
>   call mycall1
>   call mycall2
>   call mycall3
> 
> and this is the code I am trying it with:
>
> repeat macro label,firstIndex,no_of_times
>    if (no_of_times > 0)
>       call label#v(firstIndex)
>       repeat label, (firstIndex + 1),(no_of_times - 1)
>    endif
>    endm
> 
>    repeat mycall,1,10
> 
> repeat mycall,1,9 works fine. But, not "repeat mycall,1,10"
> 
> but, gpasm gives me these errors:
> 
> cp ../src/test_macro_usage.asm ./ && gpasm --expand ON -c test_macro_usage.asm
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall11).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall11).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall12).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall12).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall13).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall13).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall14).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall14).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall15).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall15).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall16).
> test_macro_usage.asm:52:Error [113] Symbol not previously defined (mycall16).
> 
> sample source file:
> 
> ;==== test_macro_usage.asm BEGIN
> 
>    errorlevel 0
>    list p=18f4455 ; set processor type
>    list n=0 ; supress page breaks in list file
>    include <p18f4455.inc>
> 
> RESET_VECTOR CODE 00000h ; Reset and Interrupt Vectors
>    pagesel start
>    global start
>    goto start
> 
> MAIN CODE
> 
>    global start
> start
>    nop
> 
> mycall1
>    return
> mycall2
>    return
> mycall3
>    return
> mycall4
>    return
> mycall5
>    return
> mycall6
>    return
> mycall7
>    return
> mycall8
>    return
> mycall9
>    return
> mycall10
>    return
> 
> ; macro to generate a list of call such as
> ;  call mycall1
> ;  call mycall2
> ;  call mycall3
> repeat macro label,firstIndex,no_of_times
>    if (no_of_times > 0)
>       call label#v(firstIndex)
>       repeat label, (firstIndex + 1),(no_of_times - 1)
>    endif
>    endm
> 
>    repeat mycall,1,10
> 
> loop
>    goto loop
> 
>    return
> 
> Any thoughts, please?
> 
> Thanks
> Joe
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>