Файл: Поваренкин Н. В. должность, уч степень, звание подпись, дата инициалы, фамилия контрольная работа по дисциплине (Микропроцессоры, устройства и программирование).docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 28

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ


КАФЕДРА (22)


ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

канд. техн. наук, доцент










Поваренкин Н. В.

должность, уч. степень, звание




подпись, дата




инициалы, фамилия




КОНТРОЛЬНАЯ РАБОТА





по дисциплине: (Микропроцессоры, устройства и программирование)

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №


















номер группы




подпись, дата




инициалы, фамилия

Студенческий билет №














Шифр ИНДО

11.03.01


Санкт-Петербург 2023

Л1.1. Укажите достоинств и недостатки языка Ассемблер. Используется ли язык Ассемблера при написании программ для микроконтроллера на языке С?

Достоинства языка Ассемблер:

1. Высокая скорость работы программы. Программы на языке Ассемблер написаны на языке машинного кода, что позволяет достичь максимальной скорости выполнения кода.


2. Максимальный контроль над железом. Язык Ассемблер позволяет программисту полностью контролировать работу железа и производить манипуляции с памятью, регистрами, портами ввода-вывода и другими устройствами.

3. Оптимизация программ. Программист на языке Ассемблер может оптимизировать программу до мелочей и достичь максимально возможной скорости выполнения при минимальном потреблении ресурсов.

Недостатки языка Ассемблер:

1. Сложность и трудоемкость написания программ. Язык Ассемблер требует от программиста глубоких знаний железа и алгоритмов, что делает написание программы на нем крайне сложным и трудоемким процессом.

2. Низкая читаемость кода. Код на языке Ассемблер крайне сложен для чтения и понимания, что затрудняет сопровождение программы и ее дальнейшее развитие.

3. Не переносимость программ. Программы на языке Ассемблер зависят от конкретных процессоров и архитектуры железа, что делает их не переносимыми на другие платформы.

Относительно второй части вопроса: да, язык Ассемблер может использоваться при написании программ для микроконтроллера на языке С. Однако, в большинстве случаев программисты предпочитают использовать язык C для написания программ для микроконтроллеров, так как это делает код более читаемым, переносимым и упрощает процесс создания сложных алгоритмов.

Л1.2. Укажите назначение идентификаторов. Перечислите ограничения, накладываемые на идентификаторы. Могут ли идентификаторы использоваться для обозначения констант?

Идентификаторы в программировании используются для обозначения переменных, функций, классов, структур и других объектов программы. Их назначение - обеспечивать удобочитаемость кода и возможность работы с переменными и объектами программы.

Ограничения, накладываемые на идентификаторы:

1. Идентификаторы не могут начинаться с цифр.

2. Идентификаторы должны состоять только из букв, цифр или знака подчеркивания.

3. Идентификаторы не могут содержать пробелы или специальные символы, кроме знака подчеркивания.

4. Идентификаторы чувствительны к регистру: myVariable и myvariable — это разные идентификаторы.

Идентификаторы могут использоваться для обозначения констант, однако, в этом случае обычно используются специальные правила именования, чтобы отличать константы от переменных и других объектов программы. Например, может использоваться префикс const или CONST_, или писать идентификаторы констант полностью заглавными буквами.



Л1.3. Укажите какие формы записи целых чисел используются для их представления в микроконтроллере. Могут ли для обмена данными между узлами контроллера использоваться числа, представленные в шестнадцатеричной системе счисления? Для чего нужен спецификатор числа?

Целые числа в микроконтроллерах могут быть представлены с использованием разных форм записи. Например, наиболее распространенными формами являются:

1. Десятичная система счисления. Целые числа записываются в виде десятичных чисел, например, 123, -45 и т.д.

2. Двоичная система счисления. Целые числа записываются в виде двоичных чисел, например, 0b1010, 0b111000 и т.д.

3. Шестнадцатеричная система счисления. Целые числа записываются в виде шестнадцатеричных чисел, например, 0x1A, 0xFF и т.д.

Для обмена данными между узлами контроллера можно использовать числа, представленные в любой системе счисления, включая шестнадцатеричную. Однако в каждом случае необходимо знать, в какой системе счисления были представлены числа для правильного их чтения и интерпретации.

Спецификатор числа используется для указания типа данных переменной или константы. Он определяет размер и формат памяти, который будет использоваться для хранения числа. Например, спецификатор int обозначает целое число, занимающее 2 или 4 байта в зависимости от платформы. Спецификаторы также могут содержать модификаторы, которые указывают на знаковость числа, его диапазон и другие свойства.

Л1.4. Запишите формат команды, используемой при написании программы на Ассемблере. Дайте пояснение каждому элементу команды. Укажите разрядность команды в микроконтроллере 1887ВE7T. Поясните порядок расположения элементов при записи команды в память программ контроллера.

Формат команды, используемой при написании программы на Ассемблере, может отличаться в зависимости от архитектуры процессора и специфики языка Ассемблер. Однако, в общем случае, формат команды включает следующие элементы:

Метка: Опциональный элемент, который обозначает определенный адрес в памяти программ. Используется для обращения к этому адресу из других частей программы.

Операция: Код операции, выполняемой процессором, такие как перемещение данных, арифметические или логические операции и т.д.

Операнды: Данные, над которыми выполняется операция, такие как регистры процессора, адреса памяти, константы и т.д.


Разрядность команды в микроконтроллере 1887ВE7T составляет 16 бит.

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

Л1.5. Дайте понятие метке. Укажите возможную длину метки. Перечислите признак метки. Поясните каким образом метка записывается в память программ. Перечислите запреты, которые накладываются на написание меток в программном коде. Зависит ли количество занимаемых меткой ячеек памяти в памяти программ от ее длины? Возможно ли применение в программном коде меток без одновременного наличия команд возврата к этим меткам?

Метка в программировании — это идентификатор, который используется для обозначения определенного адреса в памяти программы. Она обычно используется для создания точек перехода в программе, к которым можно обращаться из других частей кода. Метки могут иметь фиксированную длину, которая зависит от архитектуры процессора и специфики языка Ассемблер.

Признаки метки:

1. Начинается с буквы или символа подчеркивания.

2. Может содержать буквы, цифры и знак подчеркивания.

3. Должна быть уникальной в пределах программы.

4. Чувствительна к регистру.

Метка записывается в память программ в виде ее символьного имени, которое затем связывается с соответствующим адресом в памяти. Обычно при написании меток используется специальный оператор (например, в языке Ассемблер это может быть двоеточие), который указывает на начало метки.

Запреты, которые накладываются на написание меток в программном коде:

1. Нельзя использовать зарезервированные слова языка в качестве метки.

2. Нельзя начинать метку с цифры.

3. Нельзя использовать специальные символы, кроме знака подчеркивания.

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

Количество занимаемых меткой ячеек памяти зависит от размерности адреса, заданной на аппаратном уровне. Например, если адресация осуществляется 16-битными словами, то метка будет занимать две ячейки памяти.


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

Л1.6. Дайте понятие оператору языка Ассемблер. В чем состоит особенность применения операторов. Дайте пояснение по применению каждого оператора. При этом поясните назначение аргумента оператора и конечный результат, получаемый после его выполнения.

Оператор в языке Ассемблер — это инструкция, которая указывает на определенное действие для выполнения процессором. Операторы выполняются последовательно, по одному за раз, и обрабатывают данные, находящиеся в регистрах процессора или в памяти.

Особенность применения операторов в языке Ассемблер заключается в том, что каждый оператор выполняется с использованием низкоуровневых команд процессора. Это позволяет программисту получить максимальный контроль над процессором и оптимизировать код для лучшей производительности.

Некоторые из основных операторов языка Ассемблер и их применение:

1. MOV - копирует значение из одного регистра или ячейки памяти в другой регистр или ячейку памяти. Принимает два аргумента: исходное значение и место назначения.

2. ADD - выполняет сложение двух значений. Принимает два аргумента: первое слагаемое и второе слагаемое.

3. SUB - выполняет вычитание двух значений. Принимает два аргумента: уменьшаемое и вычитаемое.

4. MUL - выполняет умножение двух значений. Принимает два аргумента: множимое и множитель.

5. DIV - выполняет деление одного значения на другое с получением остатка. Принимает два аргумента: делимое и делитель.

6. CMP - сравнивает два значения и устанавливает флаги процессора в соответствии с результатом. Принимает два аргумента: первое сравниваемое значение и второе сравниваемое значение.

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

Л1.7. Дайте понятие встроенной функции, используемой в языке Ассемблер. Поясните в чем необходимость создания собственных функций.