51单片机中移植ucos的问题

2020-01-22 12:05发布

本帖最后由 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就是硬件堆栈的起始地址,不会变化,

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。