我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
是不是应该以 MR3的值,进行判断吧,如果MR3不等于就跳转,等于0就不跳转,是这样吗?
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
Hank Zhao:
回复 user3900194:
是的,你的理解是正确的,MR3不等于0就跳转,等于0就不跳转.
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
回复 Hank Zhao:
谢谢,但是我在MMOVZ16 MR3,@_CputoClaVar.RJF下一条指令又加了MMOVXI MR3,#0x00;为何现在是否跳转还和不加MMOVXI MR3,#0x00时一样呢?在这_CputoClaVar.RJF=5391,按照程序的分析,现在MR3等于0,现在应该不跳转啊,但是在单步调试时竟然跳转了,这是为何?
MMOV32 MR0,@_ClatoCpuVar.ADVMMOVZ16 MR1,@_AdcMirror.ADCRESULT0MMOVZ16 MR3,@_CputoClaVar.RJF
MMOVXI MR3,#0x00;
MBCNDD LOOP,NEQ————….. MNOPLOOP:
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
Hank Zhao:
回复 user3900194:
MMOVZ16 MR3,@_CputoClaVar.RJF指令会跟句MR3的值来修改MSTF寄存器的值,但MMOVXI MR3,#0x00指令的结果对MSTF寄存器无影响,所以这是正常的。
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
回复 Hank Zhao:
我还是不太明白,怎么判断MSTF寄存器的是否改变呢,都同时对MR3赋值,MMOVZ16 MR3,@_CputoClaVar.RJF能够改变MSTF寄存器的值,但MMOVXI MR3,#0x00指令的结果对MSTF寄存器无影响,这是为何呢,麻烦您再给我指点一下,谢谢!
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
回复 Hank Zhao:
这个程序中LOOP一下还有好多语句,我在单步调试时,问题,MBCNDD的跳转指令根据什么呢,为何这次跳转,等下次运行到这时又不跳转,一直重复,难道和LOOP以下的语句有关,和MMOVXI MR0,#0x29;以及MMOVXI MR3,#0x00;无关?跳不跳转最终看MSTF寄存器的值?
MMOVXI MR0,#0x29; MMOVXI MR3,#0x00; MNOP MNOP MNOP MBCNDD LOOP,NEQ—问题,此处的跳转指令根据什么呢,为何这次跳转,等下次运行到这时又不跳转,一直重复,难道和LOOP以下的语句有关? MNOP MNOP MNOP MCMPF32 MR0,#15.0 MNOP MNOP MNOPLOOP:………………………………………
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
Hank Zhao:
回复 user3900194:
MSTF寄存器是否被某一条指令修改是由该指令的功能决定的,在CLA user guide的每条指令的解释上会有说明。
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
Hank Zhao:
回复 user3900194:
这要看在loop的过程中CNDF状态有没有发生变化,如果发生变化的话,可能就会出现这次跳转,下次不跳转的情况。
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
回复 Hank Zhao:
谢谢您的耐心解答,我明白了许多
我在这想问下,MBCNDD指令之前没有比较指令的话,它是根据谁的值进行判断跳转的呢?
MMOV32 MR0,@_ClatoCpuVar.ADV
MMOVZ16 MR1,@_AdcMirror.ADCRESULT0
MMOVZ16 MR3,@_CputoClaVar.RJF
MBCNDD LOOP,NEQ————这条指令根据谁的值(MRO/MR1/MR3还是其它的)判断是否为0,进行跳转到LOOP呢?
….. 还是不执行这条件指令执行按顺序向下执行 MNOP
LOOP:
user3900194:
回复 Hank Zhao:
具体MBCNDD LOOP是不跳转,应该不是根据MR3的值吧,应该是根据MBCNDD LOOP之前的三个MNOP时间的值?
TI中文支持网

