所以我试图更改存储在 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
.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