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
vbforums.com
Copyright Internet.com Inc., All Rights Reserved.