📄 数字滤波.asm.txt
字号:
;*****************************************
;标号:LB
;功能:平均值滤波
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:A:平均值
;*****************************************
LB: PUSH 1
PUSH 3
MOV R0,#80H ;数据区首地址
MOV R7,#10 ;数据区长度
ACALL ZJD ;找极大值
MOV R0,#80H ;数据区首地址
MOV R7,#10 ;数据区长度
ACALL ZJX ;找极小值
MOV R0,#80H ;数据区首地址
MOV R7,#10 ;数据区长度
ACALL QIUH ;求和
MOV R1,32H ;减去极大值
ACALL JIAN
MOV R1,33H ;减去极小值
ACALL JIAN
MOV R1,#8
ACALL BDIV ;求平均值
MOV A,R3
POP 3
POP 1
RET
;**********************************
;功能:找极大值
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:32H:极大值
;**********************************
ZJD: ;找极大值
PUSH 0
PUSH 7
PUSH ACC
MOV A,@R0 ;读第一个数
DEC R7 ;循环次数
LOP: INC R0
MOV 31H,@R0 ;读下一个数
CJNE A,31H,CHECK ;数值比较
SJMP LOP1
CHECK: JNC LOP1 ;A值大则转
MOV A,@R0 ;大数送A
LOP1: DJNZ R7,LOP ;继续比较
MOV 32H,A ;最大值存32H
POP ACC
POP 7
POP 0
RET
;**********************************
;功能:找极小值
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:33H:极小值
;**********************************
ZJX:
;找极小值
PUSH 0
PUSH 7
PUSH ACC
MOV A,@R0 ;读第一个数
DEC R7 ;循环次数
LPP: INC R0
MOV 31H,@R0 ;读下一个数
CJNE A,31H,CHK ;数值比较
SJMP LOOP1
CHK: JC LOOP1 ;A值小则转
MOV A,@R0 ;小数送A
LOOP1: DJNZ R7,LPP ;继续比较
MOV 33H,A ;最小值存33H
POP ACC
POP 7
POP 0
RET
;**********************************
;功能:求数据块之和
;入口参数:数据存储首地址R0,数据长度R7
;出口参数:R2R3
;**********************************
QIUH:
PUSH 0
PUSH 7
PUSH ACC
PUSH PSW
MOV R2,#00H ;累加和初始化
MOV R3,#00H
CLR C
JIA: MOV A,@R0 ;读第一个数
INC R0
ADD A,R3
MOV R3,A
JNC JX
INC R2
CLR C
JX: DJNZ R7, JIA
POP PSW
POP ACC
POP 7
POP 0
RET
;**********************************
;功能:双字节减去单字节
;入口参数:R2R3,R1
;出口参数:R2R3
;**********************************
JIAN: PUSH ACC ;R2R3-R1=>R2R3
MOV A,R3
CLR C
SUBB A,R1 ;减去减数
MOV R3,A
JNC FH
DEC R2
FH: POP ACC
RET
;**********************************
;功能:双字节除以单字节
;入口参数:R2R3,R1
;出口参数:R3:商 R2:余数
;**********************************
BDIV: PUSH 4
PUSH PSW
MOV R4,#8 ;R2R3/R1 = R3...R2
BDI: CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV PSW.5,C ;F0,C
CLR C
SUBB A,R1
JB PSW.5,BDIV1 ;F0,$+5
JC BDIV1+2 ;$+4
BDIV1: MOV R2,A
INC R3
DJNZ R4,BDI
POP PSW
POP 4
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -