移植到51单片机中汇编的一个小问题
save_stack: INC DPTR INC R0 MOV A,@R0 MOVX @DPTR,A DJNZ R5,save_stack ;保存仿真堆栈指针?C_XBP INC DPTR MOV A,?C_XBP ;?C_XBP仿真堆栈指针高8位 MOVX @DPTR,A INC DPTR MOV A,?C_XBP+1 ;?C_XBP仿真堆栈指针低8位 MOVX @DPTR,A ;调用用户程序 LCALL _?OSTaskSwHook
;OSTCBCur = OSTCBHighRdy MOV R0,#OSTCBCur MOV R1,#OSTCBHighRdy MOV A,@R1 MOV @R0,A INC R0 INC R1 MOV A,@R1 MOV @R0,A INC R0 INC R1 MOV A,@R1 MOV @R0,A MOV R0,#OSPrioCur MOV R1,#OSPrioHighRdy MOV A,@R1 MOV @R0,A LJMP OSCtxSw_in
这是一段移植中的汇编指令,红色的是函数名,粉红色的是结构体名。
第一个问题是:C_XBP仿真堆栈指针的作用是什么?
第二个问题是:前面我看到的代码中有 #LOW (OSTCBCur) 这句,说明函数名和结构体名肯定不是8位的。那这里怎么不用LOW这个宏定义了呢?
而且这样赋值给8位R寄存器,数据位数对应不上啊。
各位大侠,这样理解有没有道理啊。得怎么解释啊。
[ 本帖最后由 sydyh43 于 2012-7-18 21:41 编辑 ]
|