UCOS 51移植 特殊指针问题

2020-02-01 16:30发布

       我是在http://www.amobbs.com/forum.php?mod=viewthread&tid=3396563这里看的ucos 51移植的代码。然后在移植汇编的时候有下面的代码

;获得堆栈长度和起址
        MOV  A,SP
        CLR  C
        SUBB A,#OSStkStart
        MOV  R5,A     ;获得堆栈长度        
   
        ;OSTCBCur ===> DPTR  获得当前TCB指针,详见C51.PDF第178页
        MOV  R0,#LOW (OSTCBCur) ;获得OSTCBCur指针低地址,指针占3字节。+0类型+1高8位数据+2低8位数据
        INC  R0
        MOV  DPH,@R0    ;全局变量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
   
其中的OSTCBCur是申明为IDATA类型的指针变量的。它应该是一个特殊的指针和普通指针有所区别的。普通指针是3个字节,而特殊指针是2个字节的。 5AN()YP3$_{Y$LE](5C8PW1.jpg (280.96 KB, 下载次数: 0) 下载附件 2012-11-12 11:20 上传
上图就是C51上说的。。。请大神们指点一下。。。解开我心中的迷惑。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
rechan886
2020-02-02 05:18
    ;OSTCBCur ===> DPTR  获得当前TCB指针,详见C51.PDF第178页
        MOV  R0,#LOW (OSTCBCur) ;获得OSTCBCur指针低地址,指针占3字节。+0类型+1高8位数据+2低8位数据
        INC  R0
        MOV  DPH,@R0    ;全局变量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
就是上面他说OSTCBCur指针是三个字节啊。。我认为是两个字节。 直接就是1高8位数据+2低8位数据啊。。。

一周热门 更多>