Sub-routines in PDP-11 assembly -
so i'm writing program assembly , , i'm trying use sub-routines, have problem. i'v written routine resembles switch case . reads input , , based on it's value , writes reserved address in stack address of following sub-routine.
it looks this:
1000 jsr r5,switchcase // let return address 1004 1004 jsr r5,@0(sp) the first jsr goes switch case, writes first address in stack. second 1 jumps address.
i'm using simulator , , every time reaches line stops. don't know goes wrong :/
any appreciated.
the instruction jsr r5,@0(sp) pushes old r5 onto stack , puts current r7 (pc) r5. therefore program not jump address on stack, address stored in r5, wharever is.
in example 1st jsr instruction writes r5 onto stack, , assigns 1004 r5.
edit: when program returns rts, restores old value of r5 stack.
2nd jsr instruction pushes again value onto stack, , jumps address, since on top of stack (distance 0).
if subroutine called 1st jsr indeed leaves subroutine address on top of stack, , 2nd jsr should jump there, 1 had use jsr r5,@2(sp) instead. consider else programming style.
hope got right time...
Comments
Post a Comment