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

	mov		r20, r2

	clr		r3
	clr		r4
	clr		r5

	cpi		r20, 0
	brge	ProcLoop

	neg		r20
	com		r3

	cpi		r20, 0
	breq	ExitLoop

	add		r4, r2
	adc		r5, r3

	dec		r20
	rjmp	ProcLoop

	asr		r5
	ror		r4

;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 .

9 Years
Discussion Span
Last Post by mayafree2002

thank you Salem, I figured out what was wrong, the program had a small mistype that why I could not see the result make sense.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.