0

我目前正在尝试更改 AVR 汇编语言中字符串的值。我不确定这是否可能。我将字符串声明为:

message: .db "Frequency = 1 kHz",0x00

我正在尝试将代码中稍后存储在消息中的值更改为“频率= 2 kHz”知道如何做到这一点吗?我想替换整个字符串,但仍将其存储在消息中。

我正在使用 AVR 汇编语言。

我试着做:

message: .db "Frequency = 2 kHz",0x00 

稍后在我的程序中,但我意识到它不会让我重新初始化变量。

4

1 回答 1

1

标签“消息:”不是变量。它就像一个地址,您可以在程序的其他地方引用它。从手册

DB 指令在程序存储器或 EEPROM 存储器中保留存储器资源。为了能够引用保留位置,DB 指令前面应该有一个标签。

所以它不在 SRAM 中,变量所在的位置。

在首先设置 Z 以包含地址后,您可以使用 LPM 指令从字符串中加载值。[LPM:加载程序存储器:R0 ← (Z)]

听起来您可能想做一些事情,比如有两个字符串,并在需要时将数字作为字符插入。

message1: .db "Frequency = ",0x00
message2: .db " kHz",0x00

您必须做一些事情来确保第一个字符串中的空字节不被传输。

val = 1 或 2 的字符只是0x30 + val

于 2013-03-13T04:33:22.057 回答