📄 main_nonbios.asm
字号:
; call occurs [#_BCD_HEX] ; |94|
MOV @_TimerDate,AL ; |94|
.line 8
;----------------------------------------------------------------------
; 95 | TimerMonth = BCD_HEX(*TIMER_MONTH & 0xFF);
;----------------------------------------------------------------------
MOVL XAR4,#557054 ; |95|
AND AL,*+XAR4[0],#0x00ff ; |95|
LCR #_BCD_HEX ; |95|
; call occurs [#_BCD_HEX] ; |95|
MOV @_TimerMonth,AL ; |95|
.line 9
;----------------------------------------------------------------------
; 96 | TimerYear = BCD_HEX(*TIMER_YEAR & 0xFF);
;----------------------------------------------------------------------
MOVL XAR4,#557055 ; |96|
AND AL,*+XAR4[0],#0x00ff ; |96|
LCR #_BCD_HEX ; |96|
; call occurs [#_BCD_HEX] ; |96|
MOV @_TimerYear,AL ; |96|
.line 10
;----------------------------------------------------------------------
; 97 | *TIMER_FLAG = 0x00;
;----------------------------------------------------------------------
MOVL XAR4,#557040 ; |97|
MOV *+XAR4[0],#0 ; |97|
.line 11
LRETR
; return occurs
.endfunc 98,000000000h,0
.sect ".text"
.global _PERIOD
.sym _PERIOD,_PERIOD, 46, 2, 0
.func 100
;----------------------------------------------------------------------
; 100 | unsigned int PERIOD() // Caculate signal period for frequency
;----------------------------------------------------------------------
;***************************************************************
;* FNAME: _PERIOD FR SIZE: 3 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 0 Parameter, 3 Auto, 0 SOE *
;***************************************************************
_PERIOD:
.line 2
;----------------------------------------------------------------------
; 102 | unsigned int first,second,diff;
; 103 | static unsigned int period = 46874;
;----------------------------------------------------------------------
.sym _first,-1, 14, 1, 16
.sym _second,-2, 14, 1, 16
.sym _diff,-3, 14, 1, 16
ADDB SP,#3
.line 5
;----------------------------------------------------------------------
; 104 | if(EvaRegs.CAPFIFOA.bit.CAP1FIFO>1)
;----------------------------------------------------------------------
MOVW DP,#_EvaRegs+34
AND AL,@_EvaRegs+34,#0x0300 ; |104|
LSR AL,8 ; |104|
CMPB AL,#1 ; |104|
B L3,LEQ ; |104|
; branch occurs ; |104|
.line 7
;----------------------------------------------------------------------
; 106 | first = EvaRegs.CAP1FIFO;
;----------------------------------------------------------------------
MOV AL,@_EvaRegs+35 ; |106|
MOV *-SP[1],AL ; |106|
.line 8
;----------------------------------------------------------------------
; 107 | second = EvaRegs.CAP1FIFO;
;----------------------------------------------------------------------
MOV AL,@_EvaRegs+35 ; |107|
MOV *-SP[2],AL ; |107|
.line 9
;----------------------------------------------------------------------
; 108 | if (second > first) diff = second-first;
;----------------------------------------------------------------------
MOV AL,*-SP[1] ; |108|
CMP AL,*-SP[2] ; |108|
B L1,HIS ; |108|
; branch occurs ; |108|
MOV AL,*-SP[2] ; |108|
SUB AL,*-SP[1] ; |108|
MOV *-SP[3],AL ; |108|
B L2,UNC ; |108|
; branch occurs ; |108|
L1:
.line 10
;----------------------------------------------------------------------
; 109 | else diff = 65536-first+second;
;----------------------------------------------------------------------
MOVU ACC,*-SP[2]
SUBU ACC,*-SP[1] ; |109|
ADD ACC,#2 << 15 ; |109|
MOV *-SP[3],AL ; |109|
L2:
.line 11
;----------------------------------------------------------------------
; 110 | if (diff>40000 && diff<60000)
;----------------------------------------------------------------------
CMP AL,#40000 ; |110|
B L3,LOS ; |110|
; branch occurs ; |110|
CMP AL,#60000 ; |110|
B L3,HIS ; |110|
; branch occurs ; |110|
.line 12
;----------------------------------------------------------------------
; 111 | period = diff;
;----------------------------------------------------------------------
MOVW DP,#_period$1
MOV @_period$1,AL ; |111|
L3:
.line 14
;----------------------------------------------------------------------
; 113 | if(diff>46974 || diff<46774) EvaRegs.T2PR = period;
;----------------------------------------------------------------------
MOV AL,*-SP[3] ; |113|
CMP AL,#46974 ; |113|
B L4,HI ; |113|
; branch occurs ; |113|
CMP AL,#46774 ; |113|
B L5,HIS ; |113|
; branch occurs ; |113|
L4:
MOVW DP,#_period$1
MOV AL,@_period$1 ; |113|
MOVW DP,#_EvaRegs+7
MOV @_EvaRegs+7,AL ; |113|
L5:
.line 15
;----------------------------------------------------------------------
; 114 | return period;
;----------------------------------------------------------------------
MOVW DP,#_period$1
MOV AL,@_period$1 ; |114|
.line 16
SUBB SP,#3 ; |114|
LRETR
; return occurs
.endfunc 115,000000000h,3
.sect ".text"
.global _CC_INT
.sym _CC_INT,_CC_INT, 36, 2, 0
.func 117
;----------------------------------------------------------------------
; 117 | int CC_INT(int AA,int BB) /** max error is 0.17% **/
;----------------------------------------------------------------------
;***************************************************************
;* FNAME: _CC_INT FR SIZE: 14 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 2 Parameter, 9 Auto, 2 SOE *
;***************************************************************
_CC_INT:
.line 2
;* AL assigned to _AA
.sym _AA,0, 4, 17, 16
;* AH assigned to _BB
.sym _BB,1, 4, 17, 16
.sym _AA,-3, 4, 1, 16
.sym _BB,-4, 4, 1, 16
.sym _aa,-5, 4, 1, 16
.sym _ab,-6, 4, 1, 16
.sym _L,-7, 4, 1, 16
.sym _S,-8, 4, 1, 16
.sym _temp,-10, 6, 1, 32
.sym _CC,-11, 4, 1, 16
MOVL *SP++,XAR1
ADDB SP,#12
;----------------------------------------------------------------------
; 119 | int aa,ab;
; 120 | int L,S;
; 121 | float temp;
; 122 | int CC;
;----------------------------------------------------------------------
MOV *-SP[4],AH ; |118|
MOV *-SP[3],AL ; |118|
.line 7
;----------------------------------------------------------------------
; 123 | aa = (AA>0) ? AA : -AA;
;----------------------------------------------------------------------
CMPB AL,#0 ; |123|
B L6,GT ; |123|
; branch occurs ; |123|
NEG AL ; |123|
L6:
MOV *-SP[5],AL ; |123|
.line 8
;----------------------------------------------------------------------
; 124 | ab = (BB>0) ? BB : -BB;
;----------------------------------------------------------------------
MOV AL,*-SP[4] ; |124|
B L7,GT ; |124|
; branch occurs ; |124|
NEG AL ; |124|
L7:
MOV *-SP[6],AL ; |124|
.line 9
;----------------------------------------------------------------------
; 125 | L = (aa>ab) ? aa : ab;
;----------------------------------------------------------------------
CMP AL,*-SP[5] ; |125|
B L8,GEQ ; |125|
; branch occurs ; |125|
MOV AL,*-SP[5] ; |125|
L8:
MOV *-SP[7],AL ; |125|
.line 10
;----------------------------------------------------------------------
; 126 | S = (aa<ab) ? aa : ab;
;----------------------------------------------------------------------
MOV AL,*-SP[6] ; |126|
CMP AL,*-SP[5] ; |126|
B L9,LEQ ; |126|
; branch occurs ; |126|
MOV AL,*-SP[5] ; |126|
L9:
MOV *-SP[8],AL ; |126|
.line 11
;----------------------------------------------------------------------
; 127 | temp = (float)((long)5*S*S)/(float)((long)3*(3*L+S));
;----------------------------------------------------------------------
MOV T,*-SP[8] ; |127|
MPY P,T,*-SP[8] ; |127|
MOVL ACC,P ; |127|
LSL ACC,2 ; |127|
ADDL ACC,P
LCR #L$$TOFS ; |127|
; call occurs [#L$$TOFS] ; |127|
MOVL XAR1,ACC ; |127|
MOV T,*-SP[7] ; |127|
MPYB ACC,T,#3 ; |127|
ADD AL,*-SP[8] ; |127|
MOV T,AL ; |127|
MPYB ACC,T,#3 ; |127|
LCR #L$$TOFS ; |127|
; call occurs [#L$$TOFS] ; |127|
MOVL *-SP[2],ACC ; |127|
MOVL ACC,XAR1 ; |127|
LCR #FS$$DIV ; |127|
; call occurs [#FS$$DIV] ; |127|
MOVL *-SP[10],ACC ; |127|
.line 12
;----------------------------------------------------------------------
; 128 | CC = L + (int)temp;
;----------------------------------------------------------------------
MOVL ACC,*-SP[10] ; |128|
LCR #FS$$TOI ; |128|
; call occurs [#FS$$TOI] ; |128|
MOV AH,*-SP[7] ; |128|
ADD AH,AL ; |128|
MOV *-SP[11],AH ; |128|
.line 13
;----------------------------------------------------------------------
; 129 | return CC;
;----------------------------------------------------------------------
MOV AL,*-SP[11] ; |129|
.line 14
SUBB SP,#12 ; |129|
MOVL XAR1,*--SP ; |129|
LRETR
; return occurs
.endfunc 130,0000000c0h,14
.sect ".text"
.global _SQRT_INT
.sym _SQRT_INT,_SQRT_INT, 36, 2, 0
.func 132
;----------------------------------------------------------------------
; 132 | int SQRT_INT(long int M)
;----------------------------------------------------------------------
;***************************************************************
;* FNAME: _SQRT_INT FR SIZE: 10 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 2 Parameter, 8 Auto, 0 SOE *
;***************************************************************
_SQRT_INT:
.line 2
;* AL assigned to _M
.sym _M,0, 5, 17, 32
.sym _M,-4, 5, 1, 32
.sym _temp1,-6, 5, 1, 32
.sym _temp2,-8, 5, 1, 32
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -