📄 正弦函数宏汇编程序.asm
字号:
; 4.4 正弦函数子程序
;
FSIN: MOV @R1,#2
INC R1
MOV @R1,#0C9H
INC R1
MOV @R1,#10H
DEC R1
DEC R1
LCALL FDIV
MOV A,R0
PUSH ACC
INC SP
MOV A,SP
INC SP
INC SP
XCH A,R1
MOV R0,A
MOV A,R4
CLR ACC.7
MOV R4,A
JZ FSN1
JNB ACC.6,FSN3
FSN1: MOV R4,#40H
MOV R2,#0
MOV R3,#0
SJMP FSN4
FSN2: CLR C
MOV A,R2
RRC A
MOV R2,A
MOV A,R3
RRC A
MOV R3,A
INC R4
FSN3: CJNE R4,#16,FSN2
FSN4: MOV A,R3
MOV C,ACC.0
MOV 3BH,C
JNB 38H,FSN5
CPL 3BH
FSN5: MOV A,R4
MOV R6,A
SETB C
CLR PSW.5
LCALL FSDT
MOV A,R6
MOV C,38H
MOV ACC.7,C
MOV R4,A
LCALL FSTR
LCALL FMUL
MOV A,R0
XCH A,R1
DEC A
MOV SP,A
LCALL FSTR
POP ACC
PUSH ACC
MOV R0,A
LCALL FSUB
MOV A,R4
CLR ACC.7
MOV R4,A
LCALL FSTR
MOV A,R1
MOV R0,A
LCALL FPLN
DB 0F7H,0A8H,70H ;-1.2850635E-3
DB 7AH,0C6H,70H ;0.012111701
DB 0F9H,0C5H,68H ;-6.02441338E-3
DB 0FEH,0A5H,41H ;-0.161379884
DB 0FAH,26H,0A0H ;-2.357414E-3
DB 1,80H,0EH ;1.00042182
DB 0FBH,0,1CH ;-1.32048E-5
DB 40H
MOV A,@R1
MOV C,3BH ;SIGN of SIN X
MOV ACC.7,C
MOV @R1,A
POP ACC
MOV R0,A
RET
;
; 要调用的子程序FDIV
FDIV: LCALL FMLD
MOV A,R6
XRL A,R7
MOV C,ACC.7
MOV 38H,C
CLR A
MOV R6,A
MOV R7,A
CJNE R4,#0,FD1
CJNE R5,#0,FD1
SETB C
RET
FD1: MOV A,R3
SUBB A,R5
MOV A,R2
SUBB A,R4
JC FD2
CLR PSW.5
CLR 39H
LCALL FSDT
MOV A,R7
RRC A
MOV R7,A
CLR C
SJMP FD1
FD2: CLR A
XCH A,R6
PUSH ACC
LCALL WDDIV
POP ACC
ADD A,@R0
CLR C
SUBB A,@R1
MOV C,38H
MOV ACC.7,C
MOV R4,A
CLR C
RET
;
; 要调用的子程序FMLD
FMLD: MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A
DEC R0
DEC R0
MOV A,@R1
MOV R7,A
INC R1
MOV A,@R1
MOV R4,A
INC R1
MOV A,@R1
MOV R5,A
DEC R1
DEC R1
RET
;
; 要调用的子程序FSDT
FSDT: JC FS2
MOV C,39H
JB PSW.5,FS1
MOV A,R2
RRC A
MOV R2,A
MOV A,R3
RRC A
MOV R3,A
INC R6
RET
FS1: MOV A,R4
RRC A
MOV R4,A
MOV A,R5
RRC A
MOV R5,A
INC R7
RET
FS2: MOV A,R2
JNZ FS4
CJNE R3,#0,FS5
MOV R6,#41H
FS3: RET
FS4: JB ACC.7,FS3
FS5: MOV C,PSW.5
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
CLR PSW.5
DEC R6
SJMP FS2
;
; 要调用的子程序WDDIV
WDDIV: MOV A,R1
PUSH ACC
MOV B,#10H
DV1: CLR C
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV PSW.5,C
CLR C
SUBB A,R54
MOV R1,A
MOV A,R2
SUBB A,R4
JB PSW.5,DV2
JC DV3
DV2: MOV R2,A
MOV A,R1
MOV R3,A
INC R6
DV3: DJNZ B,DV1
POP ACC
MOV R1,A
MOV A,R7
MOV R2,A
MOV A,R6
MOV R3,A
RET
;
; 要调用的子程序FSTR
FSTR: MOV A,R4
MOV @R1,A
INC R1
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
DEC R1
DEC R1
RET
;
; 要调用的子程序FMUL
FMUL: LCALL FMLD
MOV A,R6
XRL A,R7
MOV C,ACC.7
MOV 38H,C
LCALL WDMUL
MOV A,R7
MOV C,ACC.7
MOV PSW.5,C
MOV A,@R0
ADD A,@R1
MOV R6,A
SETB C
LCALL FSDT
MOV A,R6
MOV C,38H
MOV ACC.7,C
MOV R4,A
RET
;
; 要调用的子程序WDMUL
WDMUL: MOV A,R3
MOV B,R5
MUL AB
MOV R7,B
MOV A,R3
MOV B,R4
MUL AB
ADD A,R7
MOV R7,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R5
MUL AB
ADD A,R7
MOV R7,A
MOV A,R3
ADDC A,B
MOV R3,A
MOV PSW.5,C
MOV A,R2
MOV B,R4
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
MOV C,PSW.5
ADDC A,#0
MOV R2,A
RET
;
; 要调用的子程序FSUB
FSUB: SETB 3AH
LCALL FMLD
LCALL FABP
RET
;
; 要调用的子程序FABP
FABP: MOV A,R6
MOV C,ACC.7
MOV 38H,C
XRL A,R7
JNB ACC.7,FA1
CPL 3AH
FA1: MOV A,R6
MOV C,ACC.6
MOV ACC.7,C
MOV R6,A
MOV A,R7
MOV C,ACC.6
MOV ACC.7,C
MOV R7,A
CLR C
MOV A,R6
SUBB A,R7
JZ FA2
CLR PSW.5
CLR 39H
JB ACC.7,FA5
CJNE R4,#0,FA6
CJNE R5,#0,FA6
FA2: JB 3AH,FA8
MOV A,R3
ADD A,R5
MOV R3,A
MOV A,R2
ADDC A,R4
MOV R2,A
JNC FA4
SETB 39H
CLR C
FA3: CLR PSW.5
LCALL FSDT
FA4: CJNE R2,#0,FAA
CJNE R3,#0,FAA
MOV R4,#41H
RET
FAA: MOV A,R6
MOV C,38H
MOV ACC.7,C
XCH A,R4
MOV R6,A
RET
FA5: CJNE R2,#0,FA7
CJNE R3,#0,FA7
MOV A,R7
MOV R6,A
SJMP FA2
FA6: CPL PSW.5
FA7: CLR C
LCALL FSDT
SJMP FA1
FA8: MOV A,R3
CLR C
SUBB A,R5
MOV R3,A
MOV A,R2
SUBB A,R4
MOV R2,A
JNC FA9
CLR A
CLR C
SUBB A,R3
MOV R3,A
CLR A
SUBB A,R2
MOV R2,A
CPL 38H
FA9: SETB C
SJMP FA3
;
; 要调用的子程序FPLN
FPLN: POP DPH
POP DPL
CLR A
MOVC A,@A+DPTR
MOV R6,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R2,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R3,A
INC DPTR
FP1: MOV A,@R0
XRL A,R6
MOV C,ACC.7
MOV 38H,C
INC R0
MOV A,@R0
MOV R4,A
INC R0
MOV A,@R0
MOV R5,A
DEC R0
DEC R0
LCALL WDMUL
MOV A,R2
JB ACC.7,FP2
MOV A,R7
RLC A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
DEC R6
FP2: MOV A,R6
ADD A,@R0
MOV C,38H
MOV ACC.7,C
MOV R6,A
CLR A
MOVC A,@A+DPTR
MOV R7,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R4,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R5,A
INC DPTR
CLR 3AH
LCALL FABP
MOV A,R4
MOV R6,A
CLR A
MOVC A,@A+DPTR
CJNE A,#40H,FP1
LCALL FSTR
INC DPTR
CLR A
JMP @A+DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -