TEMP EQU 50H ;临时变量
SGM_H EQU 51H ;求和的高8位,以及平均值
SGM_L EQU 52H ;求和的低8位,以及平均值的余数
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
LCALL MM ;排序子程序
LCALL AVG ;平均值子程序
SJMP $
MM:
MOV R0,#40H
LP_1:
MOV A,R0
MOV R1,A
MOV TEMP,@R0
LP_2:
INC R1
MOV A,@R1
CJNE A,TEMP,NEXT1
NEXT1:
JNC NEXT2
MOV @R0,A
MOV @R1,TEMP
MOV TEMP,@R0
NEXT2:
CJNE R1,#4FH,LP_2
INC R0
CJNE R0,#4FH,LP_1
RET
AVG:
MOV R0,#41H
MOV A,@R0
MOV SGM_H,#00H
LP_3:
CLR C
INC R0
ADD A,@R0
JNC NEXT3
INC SGM_H
NEXT3:
CJNE R0,#4EH,LP_3
MOV SGM_L,A
;以上部分是求和
SWAP A
ANL A,#0FH
MOV R1,A
MOV A,SGM_H
SWAP A
ADD A,R1
MOV B,#14D
DIV AB
SWAP A
MOV SGM_H,A
MOV A,B
SWAP A
MOV R1,A
MOV A,SGM_L
ANL A,#0FH
ADD A,R1
MOV B,#14D
DIV AB
ADD A,SGM_H
MOV SGM_H,A
MOV SGM_L,B
;以上部分是16位除以8位的除法
RET
解题思路是先排序,得到最大值与最小值,然后求平均值。
以上供参考。
TEMP EQU 50H;临时变量
SGM_H EQU 51H;求和8,平均
SGM_L EQU 52H;求和的低8位,将其平均值的其余
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
LCALL MM排序子程序
LCALL AVG平均子程序
SJMP元的 BR /> MM:
MOV R0,#40H
LP_1:
MOV A,R0
MOV R1,A
MOV TEMP,@ R0 LP_2 :
INC R1 MOV A,@ R1
CJNE A,温度,NEXT1
NEXT1:
捷讯NEXT2
MOV @ R0,A
> MOV @ R1,TEMP
MOV TEMP,@ R0
NEXT2:
CJNE R1,#4FH,
INC R0
CJNE R0,#4FH,LP_1 BR /> RET
AVG:
MOV R0,#41H
MOV A,@ R0
MOV SGM_H,#00H
LP_3:
> CLR C
INC R0
地址A,@ R0
JNC NEXT3
INC SGM_H
NEXT3:
CJNE R0,#4EH,LP_3
> MOV SGM_L
上述的一些求和
交换
ANL A,#0FH
MOV R1,A
MOV A,SGM_H
SWAP“
地址A,R1
MOV B,#14D
DIV AB
SWAP”
MOV SGM_H,A
> MOV A,B
SWAPá
MOV R1,一个
MOV A,SGM_L
ANL A,#0FH
ADD A,R1
MOV乙,#14D
DIV AB
地址,SGM_H
MOV SGM_H,A
MOV SGM_L乙
以上16除以8师 RET
解决问题的思路,然后进行排序,得到的最高和最低值的平均值。
以上仅供参考。
;结果存于50H
CPU.INI EQU 00HERROR EQU 00H
ORG 0000H
LJMP L0081H
L0003H:
CJNE R4, #00H, L0011H
CJNE R6, #00H, L0032H
MOV A, R7
MOV 0F0H, R5
DIV AB
MOV R7, A
MOV R5, 0F0H
RET
L0011H:
CLR A
XCH A, R4
MOV R0, A
MOV 0F0H, #08H
L0017H:
MOV A, R7
ADD A, R7
MOV R7, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R6
SUBB A, R5
MOV A, R4
SUBB A, R0
JC L002BH
MOV R4, A
MOV A, R6
SUBB A, R5
MOV R6, A
INC R7
L002BH:
DJNZ 0F0H, L0017H
CLR A
XCH A, R6
MOV R5, A
RET
L0032H:
MOV A, R5
MOV R0, A
MOV 0F0H, A
MOV A, R6
DIV AB
JB 0D0H.2, L0057H
MOV R6, A
MOV R5, 0F0H
MOV 0F0H, #08H
L0041H:
MOV A, R7
ADD A, R7
MOV R7, A
MOV A, R5
RLC A
MOV R5, A
JC L0050H
SUBB A, R0
JNC L0052H
DJNZ 0F0H, L0041H
RET
L0050H:
CLR C
SUBB A, R0
L0052H:
MOV R5, A
INC R7
DJNZ 0F0H, L0041H
L0057H:
RET
L0058H:
CLR A
MOV R7, A
MOV R6, A
MOV R5, A
L005CH:
MOV A, #40H
ADD A, R5
MOV R0, A
MOV A, @R0
MOV R4, A
XRL A, #0FEH ;Max
JZ L0071H
MOV A, R4
XRL A, #01H ;Min
JZ L0071H
MOV A, R4
ADD A, R7
MOV R7, A
CLR A
ADDC A, R6
MOV R6, A
L0071H:
INC R5
CJNE R5, #10H, L005CH
MOV R4, #00H
MOV R5, #0EH
LCALL L0003H
MOV 50H, R7
L007EH:
SJMP L007EH
RET
L0081H:
MOV R0, #7FH
CLR A
L0084H:
MOV @R0, A
DJNZ R0, L0084H
MOV 81H, #50H
LJMP L0058H
MOV R0, #7FH
END
1、置结果为0
2、逐个查找,如果不是已知的max/min则累加
3、累加和除次数即为结果