我有堆栈初始化行的问题,因为 avr-gcc 返回



在线:

ldi r17, low(RAMEND)
ldi r17, high(RAMEND)

我很困惑。我已经定义了 RAMEND。我在这个命令中使用了 avr-gcc:



我的汇编代码:
.equ    SPL, 0x3d
.equ    SPH, 0x3e
.equ    RAMEND, 0x8ff

.equ    PORTB, 0x05
.equ    DDRB, 0x04
.org    0x000000
rjmp main
main:
    ldi r17, low(RAMEND)
    out SPL, r17
    ldi r17, high(RAMEND)
    out SPH, r17

    ldi r16, 0xff
    out DDRB, r16
    out PORTB, r16
loop:
    ldi r16, 32
    rcall outer_loop
    cbi PORTB, 5
    ldi r16, 32
    rcall outer_loop
    sbi PORTB, 5
    rjmp loop
outer_loop:
    clr r24
    clr r25
delay_loop:
    adiw r24, 1
    brne delay_loop
    dec r16
    brne outer_loop
    ret

最佳答案

lowhigh 对 AVR 的 GNU 汇编器没有任何意义,我认为您想分别使用 lo8hi8 来获取低字节和高字节。

关于gcc - AVR-GCC:错误:行尾垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34368602/

10-11 00:48