ми перейшли з асемблера до С в мікропроцесорному програмуванні. У мене є сумніви, що це гарна ідея
Не бійтеся, більше ніхто не розробляє нові програми в 100% асемблері. На сьогоднішній день C можна використовувати навіть для найдрібніших, найсміливіших 8-бітових архітектур. Однак знання деяких асемблерів робить вас значно кращим програмістом на C. Крім того, у програмі завжди є якась невелика деталь чи дві деталі, які потрібно записати в асемблері.
Я можу сказати, що синтаксис C набагато простіше засвоїти, ніж синтаксис Assembler.
Так, звичайно, синтаксис простіше. Однак вивчення всієї мови С з усіма прикрими деталями набагато складніше, ніж вивчення всіх деталей конкретного асемблера. С - набагато більша і ширша мова. Але знову ж таки, можливо, вам не потрібно буде вивчати всі деталі.
C легше використовувати для створення складніших програм.
Дійсно, C забезпечує механізми модульного проектування програми, такі як інкапсуляція та локальні області застосування / локальні змінні. А C має стандартну бібліотеку, плюс величезну кількість ресурсів, написаних протягом останніх 30 років. І найголовніше, що C портативний.
Навчання C якимось чином продуктивніше, ніж навчання асемблеру, тому що навколо C є більше розвиваючих речей, ніж Assembler.
C має безліч заздалегідь виготовлених функціональних можливостей, бібліотек та ресурсів, тому буде менше переосмислення колеса. Але крім цього, ваше твердження є суб'єктивним. Я вважаю, що це питання особистої переваги.
Наприклад, я досвідчений програміст на C, періодично програмуючи C ++. Я вважаю себе набагато менш продуктивним в C ++, тому що я не знаю цієї мови так добре, як я знаю C. Але тільки тому, що я відчуваю це таким чином, це не обов'язково означає, що програмування на C є більш продуктивним, ніж програмування на C ++. Досвідчений програміст на C ++, безумовно, матиме протилежну думку.
І до "продуктивних" є багато аспектів. Дуже важливим аспектом є час обслуговування, а особливо час, який потрібно на виправлення помилок, викликаних технічним обслуговуванням. C набагато простіше в обслуговуванні, ніж асемблер.
Assembler є мовою програмування нижчого рівня, ніж C, тому це робить його корисним для програмування безпосередньо на апаратне забезпечення.
Програмування апаратних засобів може здійснюватися безпосередньо на будь-якій мові. Єдине, що ви не можете зробити на C - це доступ до покажчиків стеків та регістрів стану тощо, самого ядра процесора. Тож якщо під апаратним програмуванням ви маєте на увазі розмову з власним процесором, то так, асемблер дозволяє трохи більше C. Якщо ви маєте на увазі доступ до зовнішнього обладнання, то асемблер не має ніякої користі над C. Але, можливо, недоліки, оскільки це важче написати загальний код асемблера для певного зовнішнього пристрою, ніж загальний код C.
Набагато гнучкіше натякає на роботу з пам'яттю, перериваннями, мікрорегістрами тощо.
Це неправильно. C дозволяє вам зробити все це теж, хоча вам, можливо, доведеться покладатися на специфічний для компілятора код C, такий як ключове слово переривання.
Зрештою, вам потрібно знати обидві мови для програмування MCU з акцентом на C.