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

Newbie dumb question

Why, when I use the Simulator on this code, does A return as 0 when it should be 3?

MAIN:
        NOP
        MOV     DPTR, #CommandTable
        MOVX    A, @DPTR                ; Get the offset
        MOV     DPTR, #Subroutines
        JMP     @A+DPTR

CommandTable:
        DB Low(GetStatus - Subroutines)

Subroutines:
SetStatus:
        NOP
        NOP
        RET
GetStatus:
        NOP
        NOP
        RET

END

Thanks for your help.

Steve

Parents
  • The context does suggest that he's thinking of CODE and XDATA both mapped to the same physical memory addresses...

    A.k.a. a von-Neumann memory architecture.

    Having never done that, I don't know if it's possible or, if it is, how to do it.

    It's easy with external memory (just combine the chip enable signals). For chips with internal flash and XRAM, this is a feature the chip designer would have to set up.

    OTOH, there's really no point doing that for the OP's case. MOVC exists.

Reply
  • The context does suggest that he's thinking of CODE and XDATA both mapped to the same physical memory addresses...

    A.k.a. a von-Neumann memory architecture.

    Having never done that, I don't know if it's possible or, if it is, how to do it.

    It's easy with external memory (just combine the chip enable signals). For chips with internal flash and XRAM, this is a feature the chip designer would have to set up.

    OTOH, there's really no point doing that for the OP's case. MOVC exists.

Children