Addi on the AVR micro

Denis Chertykov denisc@overta.ru
Sat May 12 00:55:00 GMT 2001


Jonathan Hunt <jhuntnz@users.sourceforge.net> writes:

> Hi,
> 
> The AVR has an instruction subi (subtract immediate) but no addi. So I use 
> subi reg, -(num) to add immediate. However this poses a problem when you try
> and do it with a memory address like this:
> 
>          .data
>          .org 0x00
>          __X_60:
>          mema:   ; Real address is 0x60, offset address is 0x00
> 
>          .text
>          subi    r16, -mema      ; Generates an error
>          subi    r16, 0x100 - mema ; Generates an error
>          subi    r16, !mema + 1  ; Uses the offset address of mema for the ! 
> which makes         
>                                  ; it incorrrect
>          ; The only work around I have found
>          subi    r16, lo8(__X_60_ + (0xff - 0x60) - mema)

Use "subi r16, lo8(-(mema))"

Denis.



More information about the Binutils mailing list