2013-03-12 3 views
-1

현재 AVR 어셈블리 언어의 문자열 값을 변경하려고합니다. 나는 그것이 가능한지 확실하지 않다. 나중에 "주파수 = 2 kHz에서" 어떤 생각이 어떻게 할 수있는 코드에서 메시지에 저장된 값을 변경하려고어셈블리 언어의 문자열 값 변경

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

: 나는 같은 문자열을 선언? 전체 문자열을 바꾸고 싶지만 여전히 메시지에 저장하십시오.

AVR 어셈블리 언어를 사용하고 있습니다.

나는 일을 시도 : 내 프로그램에서 나중에에서

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

,하지만 그것은 나를 변수를 다시 초기화시키지 않을 것임을 깨달았다.

+2

입니다. 많은 아이디어가 있습니다. 어떤 어셈블리 언어? 너 뭐 해봤 니? –

+1

대체 할 문자의 위치를 ​​이미 알고있는 문자열의 문자를 대체할지 여부 또는 새 문자를 배치 할 위치/위치에 대한 문자열을 검색해야하는지 여부를 지정하지 않았습니다 (에스). – Michael

답변

0

레이블 "message :"는 변수가 아닙니다. 프로그램에서 다른 곳에서 참조 할 수있는 주소와 같은 역할을합니다. manual에서 : 프로그램 메모리 또는 EEPROM 메모리에

DB를 지시 보유 메모리 자원. 예약 된 위치를 참조하려면 DB 지시문 앞에 레이블이 있어야합니다.

그래서 변수가있는 SRAM에는 없습니다.

첫 번째로 주소를 포함하도록 설정 한 후 문자열에서 값을로드하는 데 LPM 명령을 사용할 수 있습니다. [LPM : 프로그램 메모리로드 : R0 ← (Z)]

두 개의 문자열을 가지고 필요할 때 문자를 삽입 할 수있는 것처럼 들릴 수도 있습니다.

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

첫 번째 문자열의 null 바이트가 전송되지 않도록해야합니다.

val = 1 또는 2의 문자는 단지 0x30 + val