📄 main_nonbios.asm
字号:
.sym _err,-10, 5, 1, 32
ADDB SP,#10
;----------------------------------------------------------------------
; 134 | long int temp1,temp2;
; 135 | long int err;
;----------------------------------------------------------------------
MOVL *-SP[4],ACC ; |133|
.line 5
;----------------------------------------------------------------------
; 136 | temp1 = 1;
;----------------------------------------------------------------------
MOVB ACC,#1
MOVL *-SP[6],ACC ; |136|
.line 6
;----------------------------------------------------------------------
; 137 | while(1)
;----------------------------------------------------------------------
L10:
.line 8
;----------------------------------------------------------------------
; 139 | temp2 = (M/temp1 + temp1) >>1;
;----------------------------------------------------------------------
MOVL ACC,*-SP[6] ; |139|
MOVL *-SP[2],ACC ; |139|
MOVL ACC,*-SP[4] ; |139|
FFC XAR7,#L$$DIV ; |139|
; call occurs [#L$$DIV] ; |139|
SETC SXM
ADDL ACC,*-SP[6] ; |139|
SFR ACC,1 ; |139|
MOVL *-SP[8],ACC ; |139|
.line 9
;----------------------------------------------------------------------
; 140 | err = (temp1 >= temp2) ? (temp1-temp2) : (temp2-temp1);
;----------------------------------------------------------------------
MOVL ACC,*-SP[8] ; |140|
CMPL ACC,*-SP[6] ; |140|
B L11,GT ; |140|
; branch occurs ; |140|
MOVL ACC,*-SP[6] ; |140|
SUBL ACC,*-SP[8] ; |140|
B L12,UNC ; |140|
; branch occurs ; |140|
L11:
MOVL ACC,*-SP[8] ; |140|
SUBL ACC,*-SP[6] ; |140|
L12:
MOVL *-SP[10],ACC ; |140|
.line 10
;----------------------------------------------------------------------
; 141 | if (err <= 1) return (int)temp2;
;----------------------------------------------------------------------
MOVB ACC,#1
CMPL ACC,*-SP[10] ; |141|
B L13,LT ; |141|
; branch occurs ; |141|
MOV AL,*-SP[8] ; |141|
B L14,UNC ; |141|
; branch occurs ; |141|
L13:
.line 11
;----------------------------------------------------------------------
; 142 | else temp1 = temp2;
;----------------------------------------------------------------------
MOVL ACC,*-SP[8] ; |142|
MOVL *-SP[6],ACC ; |142|
.line 12
B L10,UNC ; |143|
; branch occurs ; |143|
L14:
.line 13
SUBB SP,#10 ; |143|
LRETR
; return occurs
.endfunc 144,000000000h,10
.sect ".text"
.global _CAL_SAMPLE
.sym _CAL_SAMPLE,_CAL_SAMPLE, 32, 2, 0
.func 146
;----------------------------------------------------------------------
; 146 | void CAL_SAMPLE()
;----------------------------------------------------------------------
;***************************************************************
;* FNAME: _CAL_SAMPLE FR SIZE: 2 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 2 Parameter, 0 Auto, 0 SOE *
;***************************************************************
_CAL_SAMPLE:
.line 2
ADDB SP,#2
.line 3
;----------------------------------------------------------------------
; 148 | Ua_Am = CC_INT(vr[0],vi[0]);
;----------------------------------------------------------------------
MOVW DP,#_vr
MOV AL,@_vr ; |148|
MOV AH,@_vi ; |148|
LCR #_CC_INT ; |148|
; call occurs [#_CC_INT] ; |148|
MOVW DP,#_Ua_Am
MOV @_Ua_Am,AL ; |148|
.line 4
;----------------------------------------------------------------------
; 149 | Ub_Am = CC_INT(vr[1],vi[1]);
;----------------------------------------------------------------------
MOV AL,@_vr+1 ; |149|
MOV AH,@_vi+1 ; |149|
LCR #_CC_INT ; |149|
; call occurs [#_CC_INT] ; |149|
MOVW DP,#_Ub_Am
MOV @_Ub_Am,AL ; |149|
.line 5
;----------------------------------------------------------------------
; 150 | Uc_Am = CC_INT(vr[2],vi[2]);
;----------------------------------------------------------------------
MOV AL,@_vr+2 ; |150|
MOV AH,@_vi+2 ; |150|
LCR #_CC_INT ; |150|
; call occurs [#_CC_INT] ; |150|
MOVW DP,#_Uc_Am
MOV @_Uc_Am,AL ; |150|
.line 6
;----------------------------------------------------------------------
; 151 | Ia_Am = CC_INT(vr[3],vi[3]);
;----------------------------------------------------------------------
MOV AL,@_vr+3 ; |151|
MOV AH,@_vi+3 ; |151|
LCR #_CC_INT ; |151|
; call occurs [#_CC_INT] ; |151|
MOVW DP,#_Ia_Am
MOV @_Ia_Am,AL ; |151|
.line 7
;----------------------------------------------------------------------
; 152 | Ib_Am = CC_INT(vr[4],vi[4]);
;----------------------------------------------------------------------
MOV AL,@_vr+4 ; |152|
MOV AH,@_vi+4 ; |152|
LCR #_CC_INT ; |152|
; call occurs [#_CC_INT] ; |152|
MOVW DP,#_Ib_Am
MOV @_Ib_Am,AL ; |152|
.line 8
;----------------------------------------------------------------------
; 153 | Ic_Am = CC_INT(vr[5],vi[5]);
;----------------------------------------------------------------------
MOV AL,@_vr+5 ; |153|
MOV AH,@_vi+5 ; |153|
LCR #_CC_INT ; |153|
; call occurs [#_CC_INT] ; |153|
MOVW DP,#_Ic_Am
MOV @_Ic_Am,AL ; |153|
.line 10
;----------------------------------------------------------------------
; 155 | P_A = ((long)vr[0]*vr[3] + (long)vi[0]*vi[3] >>1) *131 >>16; // 1/1000
;----------------------------------------------------------------------
MOV T,@_vr+3 ; |155|
MPY P,T,@_vr ; |155|
MOV T,@_vi+3 ; |155|
MOVB XAR6,#131
MPY ACC,T,@_vi ; |155|
ADDL ACC,P
SETC SXM
MOVL XT,XAR6 ; |155|
SFR ACC,1 ; |155|
IMPYL ACC,XT,ACC ; |155|
SFR ACC,16 ; |155|
MOVL @_P_A,ACC ; |155|
.line 11
;----------------------------------------------------------------------
; 156 | P_B = ((long)vr[1]*vr[4] + (long)vi[1]*vi[4] >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_vr+4 ; |156|
MPY P,T,@_vr+1 ; |156|
MOV T,@_vi+4 ; |156|
MPY ACC,T,@_vi+1 ; |156|
ADDL ACC,P
SFR ACC,1 ; |156|
MOVL XT,XAR6 ; |156|
IMPYL ACC,XT,ACC ; |156|
SFR ACC,16 ; |156|
MOVL @_P_B,ACC ; |156|
.line 12
;----------------------------------------------------------------------
; 157 | P_C = ((long)vr[2]*vr[5] + (long)vi[2]*vi[5] >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_vr+5 ; |157|
MPY P,T,@_vr+2 ; |157|
MOV T,@_vi+5 ; |157|
MPY ACC,T,@_vi+2 ; |157|
ADDL ACC,P
SFR ACC,1 ; |157|
MOVL XT,XAR6 ; |157|
IMPYL ACC,XT,ACC ; |157|
SFR ACC,16 ; |157|
MOVL @_P_C,ACC ; |157|
.line 13
;----------------------------------------------------------------------
; 158 | P_3 = P_A + P_B + P_C;
;----------------------------------------------------------------------
MOVL ACC,@_P_B ; |158|
ADDL ACC,@_P_A ; |158|
ADDL ACC,@_P_C ; |158|
MOVL @_P_3,ACC ; |158|
.line 14
;----------------------------------------------------------------------
; 159 | Q_A = ((long)vi[0]*vr[3] - (long)vr[0]*vi[3] >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_vi+3 ; |159|
MPY P,T,@_vr ; |159|
MOV T,@_vr+3 ; |159|
MPY ACC,T,@_vi ; |159|
SUBL ACC,P
MOVL XT,XAR6 ; |159|
SFR ACC,1 ; |159|
IMPYL ACC,XT,ACC ; |159|
SFR ACC,16 ; |159|
MOVL @_Q_A,ACC ; |159|
.line 15
;----------------------------------------------------------------------
; 160 | Q_B = ((long)vi[1]*vr[4] - (long)vr[1]*vi[4] >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_vi+4 ; |160|
MPY P,T,@_vr+1 ; |160|
MOV T,@_vr+4 ; |160|
MPY ACC,T,@_vi+1 ; |160|
SUBL ACC,P
SFR ACC,1 ; |160|
MOVL XT,XAR6 ; |160|
IMPYL ACC,XT,ACC ; |160|
SFR ACC,16 ; |160|
MOVL @_Q_B,ACC ; |160|
.line 16
;----------------------------------------------------------------------
; 161 | Q_C = ((long)vi[2]*vr[5] - (long)vr[2]*vi[5] >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_vi+5 ; |161|
MPY P,T,@_vr+2 ; |161|
MOV T,@_vr+5 ; |161|
MPY ACC,T,@_vi+2 ; |161|
MOVL XT,XAR6 ; |161|
SUBL ACC,P
SFR ACC,1 ; |161|
IMPYL ACC,XT,ACC ; |161|
SFR ACC,16 ; |161|
MOVL @_Q_C,ACC ; |161|
.line 17
;----------------------------------------------------------------------
; 162 | Q_3 = Q_A + Q_B + Q_C;
;----------------------------------------------------------------------
MOVL ACC,@_Q_B ; |162|
ADDL ACC,@_Q_A ; |162|
ADDL ACC,@_Q_C ; |162|
MOVL @_Q_3,ACC ; |162|
.line 18
;----------------------------------------------------------------------
; 163 | S_A = ((long)Ua_Am * Ia_Am >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_Ia_Am ; |163|
SPM #-1
MPY P,T,@_Ua_Am
MOVL ACC,P << PM
SPM #0
MOVL XT,XAR6 ; |163|
IMPYL ACC,XT,ACC ; |163|
SFR ACC,16 ; |163|
MOVL @_S_A,ACC ; |163|
.line 19
;----------------------------------------------------------------------
; 164 | S_B = ((long)Ub_Am * Ib_Am >>1) *131 >>16;
;----------------------------------------------------------------------
SPM #-1
MOV T,@_Ib_Am ; |164|
MPY P,T,@_Ub_Am
MOVL ACC,P << PM
SPM #0
MOVL XT,XAR6 ; |164|
IMPYL ACC,XT,ACC ; |164|
SFR ACC,16 ; |164|
MOVL @_S_B,ACC ; |164|
.line 20
;----------------------------------------------------------------------
; 165 | S_C = ((long)Uc_Am * Ic_Am >>1) *131 >>16;
;----------------------------------------------------------------------
MOV T,@_Ic_Am ; |165|
MPY P,T,@_Uc_Am
SPM #-1
MOVL ACC,P << PM
MOVL XT,XAR6 ; |165|
SPM #0
IMPYL ACC,XT,ACC ; |165|
SFR ACC,16 ; |165|
MOVL @_S_C,ACC ; |165|
.line 21
;----------------------------------------------------------------------
; 166 | S_3 = S_A + S_B + S_C;
;----------------------------------------------------------------------
MOVL ACC,@_S_B ; |166|
ADDL ACC,@_S_A ; |166|
ADDL ACC,@_S_C ; |166|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -