What mathematical function do ASR and ROR perform?
For instance I have a two registers for storing a value of 2bytes (R5:R4)

then I use

``````SomeProcedure:
mov		r20, r2

clr		r3
clr		r4
clr		r5

cpi		r20, 0
brge	ProcLoop

neg		r20
com		r3

ProcLoop:
cpi		r20, 0
breq	ExitLoop

dec		r20
rjmp	ProcLoop

ExitLoop:
asr		r5
ror		r4
ret

;then write the result to the data memory R4:R5
rcall	SomeProcedure
st x+,r4
st x+,r5``````

The first part of program is to square the input value (input = r3)
I have chosen several values for R5:R4, but they do not make sense
For example (all in decimal)
choose R3=2, then result = 512 = 128*(2^2)
choose R3=3, then result = 1024 = 64*(3^2)
choose R3=4, then result = 2048 = 128*(4^2)
choose R3=5, then result = 3072 = ????

I know that in the hex value, whatever the program get after getting the square of input value into R5:R4, then the program does R5/2:R4/2 then change the position of R5 and R4 into new R4:R5 as the output .

2
Contributors
2
Replies
3
Views
9 Years
Discussion Span
Last Post by mayafree2002

> The first part of program is to square the input value (input = r3)