?? FSIN.cod
字號:
FSIN FSIN: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存自變量的符號
CLR ACC.7 ;統一按正數計算
MOV @R0,A
LCALL MVR0 ;將[R0]傳送到第一工作區
MOV R5,#0 ;系數0.636627(2/π)
MOV R6,#0A2H
MOV R7,#0FAH
CLR 1EH
LCALL MUL1 ;相乘,自變量按(π/2)規一化
MOV A,R2 ;將結果復制到第二區
MOV R5,A
MOV A,R3
MOV R6,A
MOV A,R4
MOV R7,A
LCALL INT ;第一區取整,獲得象限信息
MOV A,R2
JZ SIN2
SIN1: CLR C ;將浮點象限數轉換成定點象限數
LCALL RR1
CJNE R2,#10H,SIN1
MOV A,R4
JNB ACC.1,SIN2
CPL 1DH ;對于第三、四象限,結果取反
SIN2: JB ACC.0,SIN3
CPL 1FH ;對于第一、三象限,直接求規一化的小數
SJMP SIN4
SIN3: MOV A,R4 ;對于第二、四象限,準備求其補數
INC A
MOV R4,A
JNZ SIN4
INC R3
SIN4: LCALL RLN ;規格化
SETB F0
LCALL AS1 ;求自變量歸一化等效值
LCALL MOV0 ;回傳
LCALL FPLN ;用多項式計算正弦值
DB 7DH,93H,28H;0.07185
DB 41H,0,0 ;0
DB 80H,0A4H,64H;-0.64215
DB 41H,0,0 ;0
DB 1,0C9H,2;1.5704
DB 41H,0,0 ;0
DB 40H ;結束
MOV A,@R0 ;結果的絕對值超過1.00嗎?
JZ SIN5
JB ACC.6,SIN5
INC R0 ;絕對值按1.00封頂
MOV @R0,#80H
INC R0
MOV @R0,#0
DEC R0
DEC R0
MOV A,#1
SIN5: MOV C,1DH ;將數符拼入結果中
MOV ACC.7,C
MOV @R0,A
RET
入口條件:操作數在[R0]中。
出口信息:結果仍在[R0]中。
影響資源:DPTR、PSW、A、B、R2~R7、位1DH~1FH 堆棧需求: 6字節
功能:浮點正弦函數 運算子程序
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -