|
Помогите с подготовкой примеров для студентов, (для процессора Intel 8086) |
|
|
|
Oct 27 2005, 07:31
|

инженер
   
Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701

|
Уважаемые форумчане! Мне необходимо показать студентам некоторые задачи и пути их решения на ассемблере и Си, для того чтобы сравнить, и в конечном счете продемонстрировать, что большую часть из них можно оптимально реализовать на Си. Требования к задачам - несколько строк текста (чтобы показать только приемы) в любом представлении - либо описание задачи, либо на asm, либо на Си. "Гадостей" не пишите  , тему открыла не для "Си vs Asm", а для подготовке к практическому занятию со студентами (через неделю). Книги по Embedded С, разумеется, посмотрю. Так как многие форумчане сталкивались раньше в своих проектах с Intel 8086/8088/80C188/80C186, я думаю, что для них не составит труда вспомнить подобные примеры из своей практики. Мои студенты, к сожалению, знают пока только PC-ный ассемблер. С уважением ко всем, Vic1 как преподаватель вуза.
|
|
|
|
|
Oct 27 2005, 08:56
|
Знающий
   
Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063

|
В начале писалось на СИ , но потом потребовалось на ASM. Об оптимальности вопрос не стоял.Была проблема в быстродействии.
Прикрепленные файлы
uart.rar ( 20.29 килобайт )
Кол-во скачиваний: 38
|
|
|
|
|
Oct 27 2005, 09:49
|

Участник

Группа: Свой
Сообщений: 44
Регистрация: 7-07-05
Из: МОСКВА
Пользователь №: 6 604

|
Цитата(Vic1 @ Oct 27 2005, 11:31) Уважаемые форумчане! Мне необходимо показать студентам некоторые задачи и пути их решения на ассемблере и Си, для того чтобы сравнить, и в конечном счете продемонстрировать, что большую часть из них можно оптимально реализовать на Си. Требования к задачам - несколько строк текста (чтобы показать только приемы) в любом представлении - либо описание задачи, либо на asm, либо на Си. "Гадостей" не пишите  , тему открыла не для "Си vs Asm", а для подготовке к практическому занятию со студентами (через неделю). Книги по Embedded С, разумеется, посмотрю. Так как многие форумчане сталкивались раньше в своих проектах с Intel 8086/8088/80C188/80C186, я думаю, что для них не составит труда вспомнить подобные примеры из своей практики. Мои студенты, к сожалению, знают пока только PC-ный ассемблер. С уважением ко всем, Vic1 как преподаватель вуза. В постперестроечное время издавалась книга, автор Джордейн, к сожалению у меня её нет, но я видел её в Inete, так что через поисковик найдёте. Там были примеры на языке высокого уровня (на C или Basic) и на ассемблере.
|
|
|
|
|
Oct 27 2005, 11:19
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(Vic1 @ Oct 27 2005, 15:23) И еще, кто-нибудь может подскажет, какая из книг по Embedded C самая достойная? (по теме ветки) Кхм, думаю самая достойная это та которая идет в комплекте с компилятором "C" для применяемого контроллера. Т.к. все компиляторы для embedded МК имеют свои "тонкие" места, от которых зачастую все и зависит. Цитата(Vic1 @ Oct 27 2005, 15:23) ... может быть найдутся желающие привести примеры для других микроконтроллеров. Как вариант - http://www.fme.gsdc.de/pdf/an-900092-10-compileropt.pdf
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Oct 27 2005, 12:32
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064

|
Как делаю я: прежде всего, по-моему, сам подход "а можно и на С" - некорректный, плодит ваххабитов, которые потом с пеной у рта будут доказывать, что код асм оптимальнее и т.п, (потому что для конкретных задач это действительно так). 1. предполагается, что студенты уже знакомы с асм, вызовом ф-ий, обработкой прерываний и т.п. 2. Задание - написать на асм ф-ю с параметрами, которая возвращает значение. типа: int add (int, int) и т.п. список составьте сами. 3. Рассмотреть используемость (usability) такой функции в реальном проекте: какие регистры использует, как сохраняет/восстанавливает эти регистры, как передает параметры, как возвращает значение, как используется стек, сколько используется стеков и т.п. может передача параметров через системные переменные, программная реализация стека и т.п. 4. Сформулировать необходимость принятия единых правил написания функций и их вызова для асм. 5. Задание - сформулировать эти правила. 6. Задание - на основе этих правил написать по две функции - одну, использующую ф-ю товарища, другую, используемую ф-ей другого товарища. 7. Сформулировать необходимость принятия единых правил использования глобальных переменных в ОЗУ для асм. 8. Задание - сформулировать эти правила. 9. Задание - написать функции, использующие глобальные переменные, можно тоже по две. 10. Показать, что эти правила, в общем, не оптимальны. 11. Теперь можно и к С переходить  или к Forth хорошая книжка: "How the Pros Develop Embedded Software", из нее ясно, на что действительно стоит обращать внимание при обучении студентов
|
|
|
|
|
Oct 27 2005, 13:02
|

инженер
   
Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701

|
Цитата(TMX @ Oct 27 2005, 17:32) Как делаю я: прежде всего, по-моему, сам подход "а можно и на С" - некорректный, плодит ваххабитов, которые потом с пеной у рта будут доказывать, что код асм оптимальнее и т.п, (потому что для конкретных задач это действительно так). 1. предполагается, что студенты уже знакомы с асм, вызовом ф-ий, обработкой прерываний и т.п. 2. Задание - написать на асм ф-ю с параметрами, которая возвращает значение. типа: int add (int, int) и т.п. список составьте сами. 3. Рассмотреть используемость (usability) такой функции в реальном проекте: какие регистры использует, как сохраняет/восстанавливает эти регистры, как передает параметры, как возвращает значение, как используется стек, сколько используется стеков и т.п. может передача параметров через системные переменные, программная реализация стека и т.п. 4. Сформулировать необходимость принятия единых правил написания функций и их вызова для асм. 5. Задание - сформулировать эти правила. 6. Задание - на основе этих правил написать по две функции - одну, использующую ф-ю товарища, другую, используемую ф-ей другого товарища. 7. Сформулировать необходимость принятия единых правил использования глобальных переменных в ОЗУ для асм. 8. Задание - сформулировать эти правила. 9. Задание - написать функции, использующие глобальные переменные, можно тоже по две. 10. Показать, что эти правила, в общем, не оптимальны. 11. Теперь можно и к С переходить  Спасибо, хороший у Вас подход. Нечто подобное, но в отношении использования ОС РВ я тоже пытаюсь также показать. В общем идея хорошая, надо работать над собой.
|
|
|
|
|
Oct 27 2005, 13:52
|

инженер
   
Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701

|
Цитата(TMX @ Oct 27 2005, 17:32) хорошая книжка: "How the Pros Develop Embedded Software", из нее ясно, на что действительно стоит обращать внимание при обучении студентов Спасибо  , благо эта книга у меня есть. Цитата Самое лучшее, на мой взгляд, - дать всей группе задание на разработку какого-либо устройства. Типа модуля сбора данных с передачей по УАРТ в текстовом виде. с простой индикацией и управлением от пары кнопок. Нечто подобное уже провела (ПО целевой системы в виде измерительного прибора с семисегментной индикацией, клавиатурой). УАРТ забыла включить, но к тому же у меня и студентов мало (9 всего). Целью такого занятия было знакомство со спецификой программирования встроенных систем. Совсем не ожидала реакции студентов, что "на ассемблере лучше". Оказывается это надо было предусмотреть Известны всем еще и другие проблемы обучения - базовая подготовка слабовата, часов мало, а хочется донести до них побольше и как-то задеть (чтобы обратили внимание на предмет обсуждения и запомнили). В общем то - это была одна из причин создания темы.
|
|
|
|
|
Oct 28 2005, 12:10
|

инженер
   
Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701

|
To TMX Цитата так это довольно много - и подготовка вполне себе ничего. И то что группа небольшая - тоже хорошо. Просто надо дать конкретное задание - лучше всего, разработка новой лабораторной работы или оборудования для нее Так ведь из этих часов половина - это лекции. А рассказать - и ПО для МПС, и ОС РВ, и веяния новых технологий (типа SCADA, PLC). С заданием - сложности. Студенты с 3-го курса распределены по научным руководителем для выполнения УИРС по конкретной теме (перерастающей в ДП). Такой уж у нашей кафедры подход. И у меня таких с каждого курса по 1-2, их то я могу хоть чем озадачить (себе на голову  ), но донести специфику курса нужно до всех. Это, наверно, длинный разговор (и постепенный уход от темы). Если интересно продолжить, обращайтесь лично.
|
|
|
|
|
Nov 28 2005, 09:16
|

Помогу, чем смогу
     
Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25

|
Уважаемая Vic1! Посылаю архив примеров для всех контроллеров Терн, они разложены по папкам с именами самих контроллеров. Там может быть очень много ненужных Вам, но предлагаю самой разобраться, что нужно, а что нет  Контроллеры Терн не имеют OS и BIOS, думаю это то, что Вам нужно. Все тонкости аппаратной части контроллеров описываются в библиотеках, если они нужны, могу тоже выложить. Компилировать можно с помощью Борланд С 3.1 - 5.0 или Парадигм 5.0. Последний заточен под встраиваемые приложения. Кроме того, если нужны схемы, готов выложить, но они усечены, МК на них нет, есть только его шина и вся периферия. Контроллеры можно заказать в Москве в ОАО "Родник Софт" (095)113-7001, возможно и в Вашем регионе есть дилеры. С этими контроллерами работаю много лет, готов помочь чем смогу  Удачи!
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|