This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to use the symbol ?STACK in another file

In start.a51, there is defined a idata segment ?STACK.

?STACK  SEGMENT   IDATA


Now, in my asm file, I want to use the ?STACK to reset the SP,when using it directly as follows,

mov SP, #STACK-1


but there is an error: "error A45: UNDEFINED SYMBOL"

How can I do it, thanks.

Parents
  • How could you make "Stack" public/extern, pls tell it in detail

    In the module that has the stack segment just include the line:

    Public  Stack
    

    And in the module that needs to reference the stack segment do (as you have correctly done):

    Extrn  Idata (Stack)
    

    Also, I notice your code snippet of:

    mov R0, #Stack;
    

    If you want to initialise the stack to the base of the block, you would normally use:

    mov R0, #Stack-1
    

    Because the stack pointer (on the 8051) increments before storing the data byte; sometimes referred to as a pre-increment style stack.

Reply
  • How could you make "Stack" public/extern, pls tell it in detail

    In the module that has the stack segment just include the line:

    Public  Stack
    

    And in the module that needs to reference the stack segment do (as you have correctly done):

    Extrn  Idata (Stack)
    

    Also, I notice your code snippet of:

    mov R0, #Stack;
    

    If you want to initialise the stack to the base of the block, you would normally use:

    mov R0, #Stack-1
    

    Because the stack pointer (on the 8051) increments before storing the data byte; sometimes referred to as a pre-increment style stack.

Children
No data