sydyh43 发表于 2012-7-18 21:26

移植到51单片机中汇编的一个小问题

<P><STRONG><FONT size=6><SPAN class=bold><SPAN class=smalltxt>移植到51单片机中汇编的一个小问题</SPAN></SPAN><BR></FONT></STRONG><BR><SPAN></P>
<P>save_stack:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; DPTR<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; R0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,@R0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVX @DPTR,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ R5,save_stack<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;保存仿真堆栈指针?C_XBP<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; DPTR<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,?C_XBP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;?C_XBP仿真堆栈指针高8位<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVX @DPTR,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; DPTR<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,?C_XBP+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;?C_XBP仿真堆栈指针低8位<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVX @DPTR,A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;调用用户程序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LCALL _?OSTaskSwHook</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;OSTCBCur = OSTCBHighRdy<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; R0<FONT color=red>,#OSTCBCur<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; R1<FONT color=red>,#OSTCBHighRdy<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,@R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; @R0,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; R0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; R1<BR>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,@R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; @R0,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; R0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INC&nbsp; R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,@R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; @R0,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; R0<FONT color=magenta>,#OSPrioCur<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; R1<FONT color=magenta>,#OSPrioHighRdy<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; A,@R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp; @R0,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LJMP OSCtxSw_in</P>
<P>&nbsp;</P>
<P>这是一段移植中的汇编指令,红色的是函数名,粉红色的是结构体名。</P>
<P>第一个问题是:<FONT color=darkorchid>C_XBP仿真堆栈指针</FONT>的作用是什么?</P>
<P>第二个问题是:前面我看到的代码中有&nbsp; #LOW (OSTCBCur) 这句,说明函数名和结构体名肯定不是8位的。那这里怎么不用LOW这个宏定义了呢?</P>
<P>而且这样赋值给8位R寄存器,数据位数对应不上啊。</P>
<P>各位大侠,这样理解有没有道理啊。得怎么解释啊。</P></SPAN>

[ 本帖最后由 sydyh43 于 2012-7-18 21:41 编辑 ]

jishuaihu 发表于 2012-7-19 19:39

不懂,表示关注!
至于说为什么不用宏定义。我想这个可以根据个人爱好吧,也可能不用宏移植性更好吧

sydyh43 发表于 2012-7-19 21:33

结构体名是大于8位的,赋值给一个8位的寄存器,数据不就溢出了吗

zshasd1948 发表于 2024-10-15 09:05

页: [1]
查看完整版本: 移植到51单片机中汇编的一个小问题