Вставка кода Assembler-a

Рейтинг: 1Ответов: 1Опубликовано: 28.11.2014

Мне необходимо выставить значение 0xFFFE по адресу 0x80002040, я написал для этого такой код:

  __asm
    {
      mov r0, 0xFFFE        Строка 1
      mov #0x80002040, r0   Строка 2
      mov r0, 0xFFFE
    }

Всё это делается в Eclipse для микропроцессора NT2000.
Я получаю в ответ при компиляции:

warning #1267-D: Implicit physical register R0 should be defined as a variable

error #1093: Must be a modifiable lvalue

Предупреждение приходит на строку 1, а ошибка на строку 2.

Ответы

▲ 3Принят

Уже заработало, необходимо было сделать так:

  mov   r6, #0x80002040 
  mov   r7, #0xFFFE
  str r7,[r6]
  mov   r6, #0x80002040

Символ "#" значит, что это 16-ричное число, проблема была в том, что нельзя было переслать напрямую в память, необходимо было из регистра в регистр, который хранит память.

Обновление

И ещё кое-что забыл: необходимо было перед вставкой кода ассемблера объявить 2 переменные типа int, r6 и r7, т.к. ассемблер не поймёт названия этих регистров без их объявления, а на самом деле проц будет использовать какие-то свои регистры, у которых название может быть любое.