请教各位大虾:
我想做个MC9S08DZ60的BOOTLOADER,发现它的中断重映射功能不太好用,因为寄存器不是可以随意读写的,是从flash中映射过来的,所以这个功能不太好用,现在只能用中断二次跳转这种方法,但是又发现一个问题,就是它的中断进入的时候硬件在压堆栈的时候,只压了pc,x,a,ccr,没有压h,而是编译器自动添加了一条语句pshh.这样就存在一个问题.因为bootloader 里面的中断会有一条pshh, 而用户应用程序里面中断也会有一条pshh,这样就会出现错误,不知道该怎么解决这个问题.
如果我在bootloader 里面的中断中强行加一句pulh, 不让bootloader里面去压这个寄存器,然后进行跳转,但是跳转又要用到h,不压又破坏了h.
不知道跳转能不能以莫个地址中的数据做为指针来跳转?
比如说0x3000是个 flash地址,里面存放了用户的中断程序地址0x4000,
我想以0x3000中的内容进行跳转,
试了下jmp [0x3000] 这样写不行.
必须要asm ldhx 0x3000; 然后jmp 0,x; 这样写才行.这样就把h寄存器給破坏了.
请教有什么解决办法吗? |