我是在
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上说的。。。请大神们指点一下。。。解开我心中的迷惑。
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位数据啊。。。
一周热门 更多>