2013-03-12 143 views
-1

我正在尝试更改AVR汇编语言中字符串的值。我不确定这是否可能。我宣布字符串:以汇编语言更改字符串的值

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

我试图改变储存在消息后面的代码为“频率= 2千赫” 任何想法如何做到这一点的价值?我想替换整个字符串,但仍然将其存储在消息中。

我正在使用AVR汇编语言。

我试着这样做:

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

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

+2

很多想法。什么汇编语言?你有什么尝试? – 2013-03-12 18:22:08

+1

您还没有指定是否只想替换已知字符位置替换的字符串中的字符,或者是否还需要搜索字符串以查找放置新字符的位置(S)。 – Michael 2013-03-12 18:26:45

回答

0

标签“message:”不是变量。它的行为就像您可以在程序中的其他地方引用的地址。从manual

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

所以它不在变量驻留的SRAM中。

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

这听起来像你可能想做的事情就像有两个字符串,并在需要时插入数字作为字符。

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

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

用于VAL = 1或2所述的字符只是0x30 + val