Перейти к содержанию
    

Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...помогите!...

 

Куда помогать? (в смысле e-mail)...

Да, и еще - не про ARM это. Надо бы во "Все остальные ...".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D

А зачем с ассемблером? Чужой код разгребать?

Вообще-то обычная практика - писать всё на Си и переделывать на ассемблере только те куски, которые на Си не получаются (обычно если не хватает скорости).

Кстати, для программирования на ассемблере Keil рекомендует скомпилировать исходник на Си с каркасами функций и переменными, получив на выходе компилятора файл на языке ассемблера. Потом править этот файл.

Ну а что касается литературы, то первоисточники - это C166S V2 Core User's Manual от Infineon и руководства от Keil.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потому что надо на ассемблере.

Еще, что такое [Rw]? Не могу понять как работает. Все время в памяти С0FA и новое число записать невозможно.И как записывать в память адресов большие числа? Больше FFFF не помещается,причем записывать в адрес можно только из регистра.Так задумано?

Как задать переменной конкретный адрес?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Rw = это значит, что регистр 16-битный (word)

Чтобы разобраться с обозначениями, прочитайте описание системы команд (см. прикрепленный файл)

Возьмите за основу файл template.a66 из папки Keil\c166\asm. Он специально написан, чтобы использовать его как образец.

C166_Instruction_Set.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...как записывать в память адресов большие числа?

 

Почитайте про режимы адресации...

 

...Как задать переменной конкретный адрес?

 

В сегменте данных директива "ORG".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как работать с массивами?

Я задаю массив:

?NC?HELLO SECTION DATA WORD 'NCONST'

MASS DW 11,22,33,44,...

?NC?HELLO ENDS

 

потом хочу брать эти числа по одному и записывать в регистр

 

MOV R1,MASS

MOV R2,MASS+2

MOV R3,MASS+4

...

 

Что можно взять вместо +2,+4... и инкрементировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...сдалась и перешла на Си...

Правильно ли я поняла, что для работы с файлами нужен файл AR166.h? Что-то его у меня нету. Может у кого-нибудь есть? :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди! Кричу о помощи! Мне действительно нужно работать с массивами в ассемблере и с файлами на Си в uVision-е! С меня требуют, а я понятия не имею почему компилятор не распознает FILE. Да еще это оценочная версия, всего 8К, 98% процентов я уже заполнила. Не подскажете, где и как можно приобрести полную версию, где заодно будет и библиотека AR166.h ? Ооошинама надеюсь на помош!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я обычно пишу на Си потом рассматриваю листинг ассемлера и если есть необходимость оптимирую в ассемблере.

Для XC16x нужно с сегментами быть внимательным и, как и для любого другого проца, знать адресацию и регистры

(или хотя бы знать где читать:).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Определите пожалуйста, что есть "файл" в Вашем случае (например в смысле определения из Википедии). Может тогда ситуация станет понятнее... А файл "AR166.H" - это из кейловой операционки ARTX-166.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

файл - всмысле обычный файл

 

#include<stdio.h>

FILE *fopen(),*f;

 

void main(void)

{

f=fopen("c:\my_file.txt","w");

printf("Enter the word: ");scanf("%s",&word);

fclose(f);

printf("File created!");

}

...

f=fopen("c:\my_file.txt","a");

...

f=fopen("c:\my_file.txt","r");

...

 

prgjz,я не очень понимаю для чего эти сегменты,что это такое вообще. Знаю только, что NCONST - это ROM, а NDATA - это RAM. Не могли бы вы немного пояснить или посоветовать литературу?

 

И неужели никто никогда не работал с массивами в ассемблере?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

могу посоветовать прикреплённый файл где очень хорошо описана структкра XC167. Если ваш массив должен находится во встроенной памяти то это будет намного просче. Через сегменты адрессуются встроенная флеш и/или память подключенная к наружней шине EBC.

Во встроенной памяти всё просто:

MOV R5, Value

MOV R6, Index

MOV R4,R6 ;

SHL R4,#01H ; если ваш массив 16бит #01h, для 32бит #02h, для 8бит эту и предидущюю строчку не надо

MOV [R4+MyArray],R5 ; собственно запись в массив

 

Для подключенной памяти тоже самое (почти:)

MOV R5, Value

MOV R6, Index

MOV R4,R6 ;

SHL R4,#01H ; если ваш массив 16бит #01h, для 32бит #02h, для 8бит эту и предидущюю строчку не надо

EXTS #SEG (MyArray),#01H ; указваем сегмент запрещаем до заключения следуещей

; 1ной операции прерывания иначе сегмент может измениться

MOV [R4+#SOF(MyArray)],R5 ;запись в массив с учётом сегмента

 

Желаю удачи!

 

 

Извеняюсь, что то не получается с загрузкой...

По этому линку вы найдёте C166S V2 Core User's Manual (c166sv2um.pdf):

http://www.infineon.com/cms/en/product/cha...112ab6b3ae30781

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо огромное! Не могу поверить, что кто-то ответил :) Только сейчас увидела. Надеюсь, теперь разобраться будет легче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...