Lalka 0 16 августа, 2009 Опубликовано 16 августа, 2009 · Жалоба Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 17 августа, 2009 Опубликовано 17 августа, 2009 · Жалоба ...помогите!... Куда помогать? (в смысле e-mail)... Да, и еще - не про ARM это. Надо бы во "Все остальные ...". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 17 августа, 2009 Опубликовано 17 августа, 2009 · Жалоба Всем привет. Никогда раньше не работала с ассемблером. Чайник еще тот)) А тут надо писать в Keil uVision3 на ассемблере. Микроконтроллер - XC167Cl 16 разрядный. Нигде нет даже примера на ассемблере,везде все по С. Помогите пожалуйста, люди добрые, кто чем может. Не имею никакого понятия что это и с чем едят. Пока пишу всякую ерунду. Может посоветуете какую-нибудь литературу. Желательно на русском, но на худой конец можно и на английском. Или пришлет кто-нибудь на почту шаблон программы. Я даже вступления не знаю. Вобщем я ничего не знаю,помогите! :-D А зачем с ассемблером? Чужой код разгребать? Вообще-то обычная практика - писать всё на Си и переделывать на ассемблере только те куски, которые на Си не получаются (обычно если не хватает скорости). Кстати, для программирования на ассемблере Keil рекомендует скомпилировать исходник на Си с каркасами функций и переменными, получив на выходе компилятора файл на языке ассемблера. Потом править этот файл. Ну а что касается литературы, то первоисточники - это C166S V2 Core User's Manual от Infineon и руководства от Keil. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 18 августа, 2009 Опубликовано 18 августа, 2009 · Жалоба Потому что надо на ассемблере. Еще, что такое [Rw]? Не могу понять как работает. Все время в памяти С0FA и новое число записать невозможно.И как записывать в память адресов большие числа? Больше FFFF не помещается,причем записывать в адрес можно только из регистра.Так задумано? Как задать переменной конкретный адрес? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shandy 0 18 августа, 2009 Опубликовано 18 августа, 2009 · Жалоба Rw = это значит, что регистр 16-битный (word) Чтобы разобраться с обозначениями, прочитайте описание системы команд (см. прикрепленный файл) Возьмите за основу файл template.a66 из папки Keil\c166\asm. Он специально написан, чтобы использовать его как образец. C166_Instruction_Set.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 18 августа, 2009 Опубликовано 18 августа, 2009 · Жалоба ...как записывать в память адресов большие числа? Почитайте про режимы адресации... ...Как задать переменной конкретный адрес? В сегменте данных директива "ORG". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 10 сентября, 2009 Опубликовано 10 сентября, 2009 · Жалоба А как работать с массивами? Я задаю массив: ?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... и инкрементировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 6 октября, 2009 Опубликовано 6 октября, 2009 · Жалоба ...сдалась и перешла на Си... Правильно ли я поняла, что для работы с файлами нужен файл AR166.h? Что-то его у меня нету. Может у кого-нибудь есть? :unsure: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 10 октября, 2009 Опубликовано 10 октября, 2009 · Жалоба Люди! Кричу о помощи! Мне действительно нужно работать с массивами в ассемблере и с файлами на Си в uVision-е! С меня требуют, а я понятия не имею почему компилятор не распознает FILE. Да еще это оценочная версия, всего 8К, 98% процентов я уже заполнила. Не подскажете, где и как можно приобрести полную версию, где заодно будет и библиотека AR166.h ? Ооошинама надеюсь на помош!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
тау 31 10 октября, 2009 Опубликовано 10 октября, 2009 · Жалоба http://www.keil.com/c166/ может в C166 Evaluation Software найдется https://www.keil.com/c166/demo/eval/c166.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prgjz 0 13 октября, 2009 Опубликовано 13 октября, 2009 · Жалоба Я обычно пишу на Си потом рассматриваю листинг ассемлера и если есть необходимость оптимирую в ассемблере. Для XC16x нужно с сегментами быть внимательным и, как и для любого другого проца, знать адресацию и регистры (или хотя бы знать где читать:). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Определите пожалуйста, что есть "файл" в Вашем случае (например в смысле определения из Википедии). Может тогда ситуация станет понятнее... А файл "AR166.H" - это из кейловой операционки ARTX-166. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 16 октября, 2009 Опубликовано 16 октября, 2009 · Жалоба файл - всмысле обычный файл #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. Не могли бы вы немного пояснить или посоветовать литературу? И неужели никто никогда не работал с массивами в ассемблере? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prgjz 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба могу посоветовать прикреплённый файл где очень хорошо описана структкра 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lalka 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба Спасибо огромное! Не могу поверить, что кто-то ответил :) Только сейчас увидела. Надеюсь, теперь разобраться будет легче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться