本帖最后由 king1314 于 2014-1-17 16:03 编辑
参照网上的移植方法移植成功了
现在在细看汇编代码
有两个地方表示不太理解
1:红 {MOD}标注的地方:在从仿真堆栈中复制到硬件堆栈过程中
restore_stack:
INC DPTR
INC R0
MOVX A,@DPTR
MOV @R0,A
DJNZ R5,restore_stack //恢复堆栈到硬件堆栈
MOV SP,R0
到这里为止不是结束了吗,为什么还要执行下面红 {MOD}的代码????
INC DPTR
MOVX A,@DPTR
MOV ?C_XBP,A
INC DPTR
MOVX A,@DPTR
MOV ?C_XBP+1,A
MOV R0,#LOW (OSRunning)
MOV @R0,#01
POPALL
SETB EA
RETI //返回pc处
2:?STACK SEGMENT IDATA
RSEG ?STACK
OSStack:
DS 40H
OSStkStart IDATA OSStack-1
定义了一个堆栈段,长度是40H
这里的OSStkStart的值移植和sp相等吗,也就是说会随着sp的变化而变化??
还是说OSStkStart就是硬件堆栈的起始地址,不会变化,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>