AVR的数据段编译后存储的是废话

问题描述 投票:0回答:1

所以我试图更改存储在 sram 中的数组的第一个元素,并检查编译后的数据是否等于预初始化的值,但它不相等。这是我的代码:

.data
.org  0x0100
system_log: .space 20, 0x44
            .byte 10,13,0

.text
.org 0x4000

loop:
  rjmp loop

print_buff:
    
    LDI   XL, lo8(system_log)
    LDI   XH, hi8(system_log)         ;Z points to string message
    ld r0, X
    mov r18, r0
    rjmp print_msg

我正在打印数组中的第一个值,我希望它等于

D
,但它给了我一个
A

我不知道发生了什么,但我们开始吧,顺便说一句,我正在使用带有 Atmega328P 芯片的 Arduino

assembly arduino avr
1个回答
0
投票
.space / .data

不是原生 avr 关键字。我假设您正在使用其他汇编器来汇编您的代码。 在本机 AVR 中,您会执行以下操作:

.dseg
    .org  0x0100
system_log: .db 0x44,10,13,0

.cseg
    .org 0x4000

loop:
  rjmp loop

print_buff:
    
    LDI   XL, lo8(system_log)
    LDI   XH, hi8(system_log)         ;Z points to string message
    ld r0, X
    mov r18, r0
    rjmp print_msg
© www.soinside.com 2019 - 2024. All rights reserved.