我用的是2812 (一个加法小程序) 源程序如下:(源程序没错,但第二个程序是自己在第一个基础上修改后就有错了) .global start start: MOV @AR1,#9000h ;给ar1寄存器赋值 LOOP: ADDB SP,#3 ;此时sp指针为403h地址 MOV *-SP[1],#10 ;把立即数10放到402地址上 MOV *-SP[2],#1 ;把立即数1放到401地址上 MOV AL,*-SP[2] ;把401地址上数据读出放到AL寄存器中 ADD AL,*-SP[1] ;把401和402地址中数据做加法运算,把结果放到AL寄存器中 MOV *-SP[3],AL ;把AL中值放到400h地址中 nop ;空指令 nop SUBB SP,#3 ;设置sp指针为400h地址 BANZ LOOP,AR1-- ;有条件跳转,只要ar1中的值不为0 .end
上面的源程序没错,但我自己在中间加了一条转移指令就有错误,如下所示,不知道为什么?望高手指点一下! .global start start: MOV @AR1,#9000h ;给ar1寄存器赋值 LOOP: ADDB SP,#3 ;此时sp指针为403h地址 MOV *-SP[1],#0f000h ;把立即数0f000h放到402地址上 MOV *-SP[2],#0e000h ;把立即数0e000h放到401地址上 MOV AL,*-SP[2] ;把401地址上数据读出放到AL寄存器中 ADD AL,*-SP[1] ;把401和402地址中数据做加法运算,把结果放到AL寄存器中 BCND W1,NC MOV AH,#1 W1: MOV *-SP[3],AL ;把AL中值放到400h地址中 nop ;空指令 nop SUBB SP,#3 ;设置sp指针为400h地址 BANZ LOOP,AR1-- ;有条件跳转,只要ar1中的值不为0 .end ------------------------------ TASM.pjt - Debug ------------------------------ [tasm.asm] "C: ic2000cgtoolsincl2000" -g -q -fr"c:/icetek-f2812-a-edulab/dsp281x_examples/lab0103-asm/Debug" -d"_DEBUG" -d"LARGE_MODEL" -ml -v28 -@"Debug.lkf" "tasm.asm" "tasm.asm", ERROR! at line 11: [E0002] Invalid instruction for specified processor version BCND W1,NC
1 Assembly Error, No Assembly Warnings
Errors in Source - Assembler Aborted
Build Complete, 2 Errors, 0 Warnings, 0 Remarks.
|