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.

汇编指令

 .ref _LineGain
  .ref _VacLineRect
  .ref _VacLineScaled
  MOVW  DP,#(_LineGain)
  MOVL  XT,@_LineGain   ;Q30
  MOVW  DP,#(_VacLineRect)
  QMPYL  ACC,XT,@_VacLineRect ; Q30 * Q24 = Q22
  LSL   ACC,#2

  .ref _shoulder
  MOVW DP, #(_shoulder) 
  SUBL    ACC, @(_shoulder) 
  B  NO_ZERO, GEQ
  MOVB ACC,#0
NO_ZERO:
  .ref _VacLineScaled
  MOVW DP, #(_VacLineScaled) 
  MOVL @(_VacLineScaled), ACC 

  .ref _MaxQ24ref
  MOVW DP, #(_MaxQ24ref)  
  MOVL ACC, @(_MaxQ24ref)   ; ACC = 0x00FFFFFF ~ 1 in Q24

  MOVW DP, #(_VacLineScaled) 
  SUBL ACC, @(_VacLineScaled)

  .ref _InvVac
  MOVW DP, #(_InvVac)   
  MOVL  XAR4,#(_InvVac)   ; Net pointer to InvVac (XAR4)
  MOVL  *XAR4,ACC    ; Write to InvVac

  .ref _InvSineComp
  MOVW DP, #(_InvSineComp)
  MOVL  XAR2,#(_InvSineComp) ; Net pointer to InvSineComp (XAR2)

  .ref _CompAmpltd
  MOVW DP, #(_CompAmpltd)   
  MOVL  XT,*XAR4    ; XT = InvVac
  QMPYL  ACC,XT,@_CompAmpltd  ; ACC (Q22) = InvVac (Q24) * CompAmpltd (Q30)
  LSL  ACC,#2     ; Q24
  MOVL  *XAR2,ACC    ; Write to InvSineComp

 

红色的字体什么意思啊?ACC减shoulder不等于零时跳转,等于0时把0写入ACC