This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335 汇编指令,求大神进来解读下这个汇编代码段,多谢

L31A206: MOVL *SP++,ACC 


MOVL ACC,*-SP[0x06] 


CSB ACC 


LSLL ACC,T 


MOVL @XAR4,ACC


LSR AH,#0x6


SBF L31A247,EQ 


MOVZ AR0,@AH 


MOVL XAR7,#0x3FE412 


MOVB AH,#0x31 


SUBR @TH,AH 


MOVL XAR5,@XT


MOVL XT,*+XAR7[AR0]


MOVL XAR7,#0x3FE502


MOVL XAR6,*XAR7++


IMPYL P,XT,@XAR4 ;


QMPYL ACC,XT,@XAR4


LSL64 ACC:P,#0x1


SUBL ACC,@XAR6


NEG ACC


IMPYL P,XT,@ACC


QMPYL ACC,XT,@ACC


LSL64 ACC:P,#0x3


MOVL XT,@ACC


IMPYL P,XT,@XAR4


QMPYL ACC,XT,@XAR4


LSL64 ACC:P,#0x1


SUBL ACC,@XAR6


NEG ACC


IMPYL P,XT,@ACC


QMPYL ACC,XT,@ACC


LSL64 ACC:P,#0x3


MOVL XT,*--SP


IMPYL P,XT,@ACC


QMPYL ACC,XT,@ACC


LSL64 ACC:P,#0x2


MOVL XT,@XAR5


ASR64 ACC:P,T


ADDUL P,*XAR7++


ADDCL ACC,*XAR7++


MINL ACC,*+XAR7[2]


MINCUL P,*+XAR7[0]


MAXL ACC,*+XAR7[6]


MAXCUL P,*+XAR7[4]


ASR64 ACC:P,#0x1


MOVL ACC,@P


LRETR

上面为 L31A206函数中的代码,从代码中变量看只有第一行MOVL *SP++,ACC 中ACC,在调用这个函数时已经计算好,其他的变量均在函数内部完成赋值。调用

完这个函数均是取这个函数中执行完结果的ACC值赋值到其他变量,有以下几点疑问

1、这个函数时大概是完成什么用的?

2、看了有很多地方调用,均计算好了第一行MOVL *SP++,ACC 中的ACC,如果理解为一个函数的传人变量ACC的话,那么后

面第二行 MOVL ACC,*-SP[0x06] 中不明白*-SP[0x06] 是多少,因为整个函数的变量都能在函数中完成赋值,不需要其他的传人,那么MOVL ACC,*-SP[0x06]  中和

第一行MOVL *SP++,ACC有什么关联吗,否则整个函数在多处被调用,如何实现得到不同的值 ?