Разбираюсь с ассемблером KEIL mVision5.
Создал проект. Cortex M0. stm32f030. В С модуле определил переменную
int Buf[200];
Создал ассемблерный файл. В нем определил ( вроде бы) переменную D. После чего просто пытаюсь записать r0 в переменную D и Buf всеми известными мне командами. Не срабатывает ни одна.
Привожу листинг ассемблерного файла. В комментариях - ошибки, возникающие при компиляции.
EXTERN Buf
EXPORT Fun
;задаю переменную D
area MyData, Data
D space 100
area MyCode, code
Fun
; пробую занести в регистры ссылки на переменные
MOVS r2, D ; Expected constant or register expression
MOVS r3, Buf ;Bad symbol, not defined or external
; еще пробую, теперь другой командой
ADR r2, D ;Expected register relative expression
ADR r3, Buf ;Target cannot be relocated. No suitable relocation exists for this instruction
; регистровая адресация со смещением (регистр считаю нулевым)
STR r0, [r1, D] ;Expected register relative expression
STR r0, [r1, Buf];Bad symbol, not defined or external
; просто регистровая адресация. На нее компилятор не ругается. А что толку, раз я не могу в регистры адрес загрузить
STR r0, [r2]
STR r0, [r3]
bx lr
END
Кто сможет пояснить, что где с чем не так, буду очень признателен. Кто будет писать про на фига тебе ассемблер, получит в глаз


