Assume the following code in C:
long int a = 262143;
which in binary will be 111111111111111111 (18 bits).
If an atmega328p register can hold 8 bits, how is the above represented in the register?
Compiled Assembly:
.file "a.c"
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
.text
.global main
.type main, @function
main:
push r28
push r29
rcall .
rcall .
in r28,__SP_L__
in r29,__SP_H__
/* prologue: function */
/* frame size = 4 */
/* stack size = 6 */
.L__stack_usage = 6
ldi r24,lo8(-1)
ldi r25,lo8(-1)
ldi r26,lo8(3)
ldi r27,0
std Y+1,r24
std Y+2,r25
std Y+3,r26
std Y+4,r27
ldi r24,0
ldi r25,0
/* epilogue start */
pop __tmp_reg__
pop __tmp_reg__
pop __tmp_reg__
pop __tmp_reg__
pop r29
pop r28
ret
.size main, .-main
.ident "GCC: (GNU) 8.2.0"