PDA

Click to See Complete Forum and Search --> : Indirect JMP?


wolf99
Jan 19th, 2012, 08:27 AM
Hi Folks

If I have an address stored in, say DPTR reg, how should I jump to that address?
(Its a long long while since Ive used asm so bear with me!)

Keil throws a syntax error for
LJMP DPTR
and also for
LJMP @DPTR

so.... stuck, guess Im not using LJUMP correctly??
ta

Atheist
Jan 19th, 2012, 08:34 AM
Does this (http://www.keil.com/forum/190/) help?
Specifically, this bit:
If you speak about the 51th controller and you need to make a jump to an explicit 16-bit address, you may load this address into DPTR (DPH, DPL), clear your accumulator and use JMP @A+DPTR.
Michael.

wolf99
Jan 19th, 2012, 08:52 AM
Thanks again athiest! I'll give it a try and see what happens.

Had done similar searches in google myself, but obviously not quite got the search query wording right for google to know what I was on about!

wolf99
Jan 19th, 2012, 09:11 AM
Hi so that worked!

MOV A,#0
LJMP @A+DPTR

Yay, Muchos Gracias!

Two other places I need variability is in an ORG instr and a GLOBAL instr. Im not quite sure what this GLOBAL instr does... declares a global variable?

my inline asm is looking like this currently:

#asm
GLOBAL _ext1isr
PSECT vectors,ovrld
ORG 0x34
MOV A,#0
LJMP @A+DPTR
PSECT text
#endasm


I want to be able to vary the ORG address and the address used for GLOBAL
something like ORG @B and GLOBAL @DPTR...


EDIT: what I THINK might be happening in the asm code currently is that the two instr.s MOV and LJUMP are placed in code memory at the location 0x34