请教高手(2812 加法汇编小程序中的问题)

[复制链接]
 楼主| yh_zjm 发表于 2007-7-3 14:11 | 显示全部楼层 |阅读模式
我用的是2812&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(一个加法小程序)<br />源程序如下:(源程序没错,但第二个程序是自己在第一个基础上修改后就有错了)<br />&nbsp;&nbsp;&nbsp;&nbsp;.global&nbsp;start<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />start:<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@AR1,#9000h&nbsp;&nbsp;;给ar1寄存器赋值<br />LOOP:<br />&nbsp;&nbsp;&nbsp;&nbsp;ADDB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,#3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;此时sp指针为403h地址<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[1],#10&nbsp;;把立即数10放到402地址上<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[2],#1&nbsp;&nbsp;;把立即数1放到401地址上<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AL,*-SP[2]&nbsp;&nbsp;;把401地址上数据读出放到AL寄存器中<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AL,*-SP[1]&nbsp;&nbsp;;把401和402地址中数据做加法运算,把结果放到AL寄存器中<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[3],AL&nbsp;&nbsp;;把AL中值放到400h地址中<br />&nbsp;&nbsp;&nbsp;&nbsp;nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;空指令<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;SUBB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,#3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设置sp指针为400h地址<br />&nbsp;&nbsp;&nbsp;&nbsp;BANZ&nbsp;&nbsp;&nbsp;LOOP,AR1--&nbsp;&nbsp;&nbsp;;有条件跳转,只要ar1中的值不为0<br />.end<br /><br /><br />上面的源程序没错,但我自己在中间加了一条转移指令就有错误,如下所示,不知道为什么?望高手指点一下!&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;.global&nbsp;start<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />start:<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@AR1,#9000h&nbsp;&nbsp;;给ar1寄存器赋值<br />LOOP:<br />&nbsp;&nbsp;&nbsp;&nbsp;ADDB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,#3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;此时sp指针为403h地址<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[1],#0f000h&nbsp;;把立即数0f000h放到402地址上<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[2],#0e000h&nbsp;;把立即数0e000h放到401地址上<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AL,*-SP[2]&nbsp;&nbsp;;把401地址上数据读出放到AL寄存器中<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AL,*-SP[1]&nbsp;&nbsp;;把401和402地址中数据做加法运算,把结果放到AL寄存器中<br />&nbsp;&nbsp;&nbsp;&nbsp;BCND&nbsp;&nbsp;&nbsp;&nbsp;W1,NC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AH,#1<br />W1:<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*-SP[3],AL&nbsp;&nbsp;;把AL中值放到400h地址中<br />&nbsp;&nbsp;&nbsp;&nbsp;nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;空指令<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;SUBB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,#3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设置sp指针为400h地址<br />&nbsp;&nbsp;&nbsp;&nbsp;BANZ&nbsp;&nbsp;&nbsp;LOOP,AR1--&nbsp;&nbsp;&nbsp;;有条件跳转,只要ar1中的值不为0<br />.end<br />------------------------------&nbsp;&nbsp;TASM.pjt&nbsp;-&nbsp;Debug&nbsp;&nbsp;------------------------------<br />[tasm.asm]&nbsp;&quot;C:        ic2000cgtoolsincl2000&quot;&nbsp;-g&nbsp;-q&nbsp;-fr&quot;c:/icetek-f2812-a-edulab/dsp281x_examples/lab0103-asm/Debug&quot;&nbsp;-d&quot;_DEBUG&quot;&nbsp;-d&quot;LARGE_MODEL&quot;&nbsp;-ml&nbsp;-v28&nbsp;-@&quot;Debug.lkf&quot;&nbsp;&quot;tasm.asm&quot;<br />&quot;tasm.asm&quot;,&nbsp;ERROR!&nbsp;&nbsp;&nbsp;at&nbsp;line&nbsp;11:&nbsp;[E0002]&nbsp;Invalid&nbsp;instruction&nbsp;for&nbsp;specified<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processor&nbsp;version<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BCND&nbsp;&nbsp;&nbsp;&nbsp;W1,NC<br /><br />1&nbsp;Assembly&nbsp;Error,&nbsp;No&nbsp;Assembly&nbsp;Warnings<br /><br />Errors&nbsp;in&nbsp;Source&nbsp;-&nbsp;Assembler&nbsp;Aborted<br /><br />Build&nbsp;Complete,<br />&nbsp;&nbsp;2&nbsp;Errors,&nbsp;0&nbsp;Warnings,&nbsp;0&nbsp;Remarks.<br />
chenligen 发表于 2012-8-1 16:39 | 显示全部楼层
我也在搞这个程序,即第一个程序也没调试出来,会是什么原因?
jesuswd 发表于 2012-8-14 14:03 | 显示全部楼层
你那个是C2XLP的程序,可以换成XB指令试试!
optical85 发表于 2012-8-15 09:41 | 显示全部楼层
报错的意思应该是说2812的指令集里面没有BCND这个指令。去查查2812 instruction set reference guide里面有没有BCND的指令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

3

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部