RosettaCodeData/Task/Averages-Arithmetic-mean/6502-Assembly/averages-arithmetic-mean.6502
2013-04-10 14:58:50 -07:00

40 lines
677 B
Text

ArithmeticMean: PHA
TYA
PHA ;push accumulator and Y register onto stack
LDA #0
STA Temp
STA Temp+1 ;temporary 16-bit storage for total
LDY NumberInts
BEQ Done ;if NumberInts = 0 then return an average of zero
DEY ;start with NumberInts-1
AddLoop: LDA (ArrayPtr),Y
CLC
ADC Temp
STA Temp
LDA Temp+1
ADC #0
STA Temp+1
DEY
CPY #255
BNE AddLoop
LDY #-1
DivideLoop: LDA Temp
SEC
SBC NumberInts
STA Temp
LDA Temp+1
SBC #0
STA Temp+1
INY
BCS DivideLoop
Done: STY ArithMean ;store result here
PLA ;restore accumulator and Y register from stack
TAY
PLA
RTS ;return from routine