GCC(AVR)程序集:减去标签地址

GCC(AVR)程序集:减去标签地址,gcc,assembly,avr,avr-gcc,Gcc,Assembly,Avr,Avr Gcc,我正在努力实现: LABEL: .... subi r18, LABEL 我需要从寄存器中减去标签的地址。如何做到这一点?注意:我对AVR汇编程序不太熟悉,这正是我通过阅读一些网页所能了解到的。我还假设你的地址是16位 ; Address you wish to subtract the label from in R16 (low):R17 (high) SUBI R16, LOW(LABEL) SBCI R17, HIGH(LABEL) ; Omit this part if you h

我正在努力实现:

LABEL:
....
subi r18, LABEL

我需要从寄存器中减去标签的地址。如何做到这一点?

注意:我对AVR汇编程序不太熟悉,这正是我通过阅读一些网页所能了解到的。我还假设你的地址是16位

; Address you wish to subtract the label from in R16 (low):R17 (high)

SUBI R16, LOW(LABEL)
SBCI R17, HIGH(LABEL) ; Omit this part if you have < 256 Bytes of ram
;您希望从R16(低)中减去标签的地址:R17(高)
SUBI R16,低(标签)
SBCI R17,高(标签);如果ram小于256字节,则省略此部分

注意:我对AVR汇编程序不太熟悉,这正是我通过阅读一些网页所能了解到的。我还假设你的地址是16位

; Address you wish to subtract the label from in R16 (low):R17 (high)

SUBI R16, LOW(LABEL)
SBCI R17, HIGH(LABEL) ; Omit this part if you have < 256 Bytes of ram
;您希望从R16(低)中减去标签的地址:R17(高)
SUBI R16,低(标签)
SBCI R17,高(标签);如果ram小于256字节,则省略此部分
正如在avrfreaks上回答的那样:

参考文件:

正如在avrfreaks上回答的那样:

参考文件: