Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Московский институт электроники и математики Департамент Прикладной математики Программа дисциплины Язык ассемблера по специальности 10.05.01. "Компьютерная безопасность" подготовки специалиста Авторы программы: Внуков А.А., к.т.н., avnukov@hse.ru Одобрена на заседании Департамента Прикладной математики «_____» ____________ 2015 г. Руководитель департамента Белов А.В. ________ [подпись] Рекомендована Академическим советом образовательной программы «______» ____________ 2015 г., № протокола_________________ Утверждена «___» ____________ 2015 г. Академический руководитель образовательной программы Лось А.Б. _________________ [подпись] Москва, 2015 Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 1 Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности. Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки по специальности 10.05.01. "Компьютерная безопасность", изучающих дисциплину Язык ассемблера. Программа разработана в соответствии с: ФГОС по направлению подготовки специалиста 10.05.01. "Компьютерная безопасность", уровень подготовки - специалист; Образовательной программой 10.05.01. "Компьютерная безопасность" подготовки специалиста. Рабочим учебным планом университета по направлению 10.05.01. "Компьютерная безопасность" подготовки специалиста, утвержденным в 2015 г. 2 Цели освоения дисциплины 3 Целями освоения дисциплины Язык ассемблера являются Формирование навыков низкоуровнего программирования на языке Ассемблер; Использование совместимости систем программирования. Встраивание программных секций на языке Ассемблер низкого уровня в программу на языке высокого уровня; Формирование представления об этапах реализации алгоритмов при проектировании, разработке, создании и отладке компьютерных программ на языке Ассемблер; Формирование практических навыков разработки прикладных программ на языке программирования Ассемблер и C++. Компетенции обучающегося, формируемые в результате освоения дисциплины В результате освоения дисциплины студент должен: Знать парадигмы и методологии программирования, особенности языка Ассемблер, концепции синтаксической и семантической организации, методы его использования; теоретические и методические основы, понимать функциональные возможности в области разработки информационных систем и систем безопасности; Уметь применять в профессиональной деятельности язык низкого уровня Ассемблер и объектно-ориентированный язык программирования высокого уровня C++; профессионально решать задачи на всех этапах, включая: разработку алгоритмических и программных решений в области системного и прикладного программирования; вести разработку математических, информационных и имитационных моделей в области компьютерной безопасности; Владеть базовыми математическими знаниями и информационными технологиями, эффективно применять позиционные системы счисления, встраивание и сегментацию модулей для решения научно-технических и прикладных задач, связанных с развитием и использованием математических и информационных технологий в области компьютерной безопасности; Иметь навыки (приобрести опыт) разработки технического задания по проектированию модулей программного обеспечения, разработки программного кода на языке Ассемблер, отладки и тестирования одного или нескольких исполняемых модулей программного обеспечения. Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Иметь навыки (приобрести опыт) разработки технического задания по проектированию модулей совместимого программного обеспечения, разработки программного кода на языках Ассемблер и C++, встраивания программных секций на языке Ассемблер в программу на языке C++, отладки и тестирования исполняемых модулей программного обеспечения, созданного с применением разных систем программирования. В результате освоения дисциплины студент осваивает следующие компетенции: Компетенция Способен работать с информацией: находить, оценивать и использовать информацию из различных источников, необходимую для решения научных и профессиональных задач (в том числе на основе системного подхода) Способен анализировать, верифицировать, оценивать полноту информации в ходе профессиональной деятельности, при необходимости восполнять и синтезировать недостающую информацию и работать в условиях неопределенности Способен работать с программными средствами общего и специального назначения, учитывая современные тенденции развития вычислительной техники и информационных технологий Способен разрабатывать программные средства для решения профессиональных, исследовательских и прикладных задач Способен самостоятельно строить алгоритмы, анализировать и реализовывать их в современных программных комплексах 4 Код по ФГОС/ НИУ Дескрипторы – основные признаки освоения (показатели достижения результата) Формы и методы обучения, способствующие формированию и развитию компетенции УК-7 Применяет современные стандартные среды разработки (IDE) при создании и отладке программных продуктов Лекции, практические занятия, самостоятельная работа УК-8 Понимает стадии и этапы разработки программного обеспечения. Демонстрирует знание современных языков программирования низкого и высокого уровня Лекции, практические занятия, самостоятельная работа ПК-10 Разрабатывает техническое задание на разработку программных компонент автоматизированных систем. Лекции, практические занятия, самостоятельная работа ПК-11 Демонстрирует знание современных языков программирования Лекции, практические занятия, самостоятельная работа ПК-12 Применяет современные стандартные среды разработки (IDE) при создании и отладке программных продуктов Лекции, практические занятия, самостоятельная работа Место дисциплины в структуре образовательной программы Дисциплина относится к блоку «Проектная и исследовательская работа» базовой части дисциплин, обеспечивающих профессиональную подготовку. Изучение данной дисциплины базируется на следующих дисциплинах: Информатика (1 курс); Языки программирования (1 курс); 3 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Аппаратные средства вычислительной техники (1 курс); Языки программирования (2 курс); Аппаратные средства вычислительной техники (2 курс). Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями: Владеть основами программирования на языке С. Знать методы и базовые алгоритмы обработки информационных структур, методы анализа сложности алгоритмов; Уметь применять основы компьютерной математики. Основные положения дисциплины должны быть использованы в дальнейшем при изучении следующих дисциплин: Модели безопасности компьютерных систем (4 курс); Сети и системы передачи информации (4 курс); Программирование алгоритмов защиты информации (4курс); Курсовая работа по дисциплине "Программирование алгоритмов защиты информации (4 курс); Учебная практика (4курс); Параллельные вычисления (5 курс); Анализ программных реализаций алгоритмов защиты (5 курс); Защита программ и данных (5 курс); Компьютерные сети (5 курс); Квантовые вычисления (5 курс); Производственная практика (5 курс). 5 Тематический план учебной дисциплины № Всего часов Название раздела 3. Позиционные системы счисления и программная модель микропроцессора Структура программы, операнды, операторы и данные на языке ассемблер Команды языка Ассемблер 4. Макросредства Ассемблера 5. Технологические приемы создания программ на языке Ассемблер Всего: 1. 2. 6. 6 Аудиторные часы Самостоя Практиче тельная Лекци Семин ские работа и ары занятия 16 4 - 4 8 25 6 - 7 12 29 6 - 8 15 20 6 - 4 10 18 4 - 4 10 108 26 0 27 55 Формы контроля знаний студентов Тип контроля Форма контроля Текущий Домашнее (неделя) задание 1 Промежуточный Экзамен 1 3 год 2 3 1 * Параметры ** 4 Создание программы в IDE и защита её текста и/или выполнения, 80 минут Ответы по вопросам билета, создание 4 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Итоговый Домашнее задание 2 1 программы в IDE и защита её текста и/или выполнения, 80 минут Создание программы в IDE и защита её текста и/или выполнения, 80 минут [Удалите соответствующие строки, если какой-либо контроль не предусмотрен в РУП. Удалите колонку "2 год", если дисциплина преподается в течение 1 года или удалите колонки с лишними номерами модулей/ семестров. Удалите колонку "Кафедра", если это НЕ межкафедральная дисциплина. * - Для текущего контроля указывается неделя модуля/ семестра, на которой проводится контроль, для промежуточного и итогового - отметка, в каком модуле/ семестре проводится. ** В графе Параметры указывается регламент (cвод постоянных или временных правил, регулирующих внутреннюю организацию и формы деятельности) проведения контроля (заполняется для каждого контроля соответственно): формат работы (письменная, устная, тест, тест в компьютерной программе и другое), время, отведенное на аудиторные работы, количество дней проведения контроля, количество дней оценки результатов контроля (только для итогового контроля), объем письменных работ для домашних работ, сроки сдачи письменных работ (число), время на самостоятельную подготовку письменных работ и другая информация, носящая регламентирующий характер.] Критерии оценки знаний, навыков В результате освоения дисциплины текущий и итоговый контроль знаний студентов должен подтверждать осваивание следующих компетенций: УК-7, УК-8, ПК-10, ПК-11, ПК-12. Критерии оценки знаний, навыков студентов учитывать эти компетенции. Домашнее задание 1: Студент должен разработать по вариантам программные модули на языке Ассемблер, грамотно вставить их в главный программный модуль на языке C++ с интерфейсом пользователя и продемонстрировать способность: 1. Перевода данных из одной позиционной системы счисления в другую, 2. Вычисления дробного выражения с целочисленными значениями констант в формате байта и слова, 3. Преобразования строк по заданному алгоритму, 4. Проводить создание, изменения и вычисления числовых массивов знаковых и беззнаковых данных, заданных в байтовом формате или формате слова, 5. Разработать программу на языке Ассемблер по заранее выданному заданию преподавателя по всем 4-м задачам (п. 1-4) или только по 3-м задачам (п. 2-4), 6. Защитить задания 1, 2, 3, 4 при опросе на практических занятиях, 7. Оформления всех заданий в форме домашнего задания. При этом студент должен продемонстрировать умение создавать компьютерные программы и отвечать на вопросы на основе тем разделов 1 – 3 на практических занятиях при выполнении и сдаче задания преподавателю. Компетенции: УК-7, УК-8, ПК-10, ПК-11, ПК-12. Экзамен: Студент должен продемонстрировать умение отвечать на вопросы и создавать компьютерные программы на языке Ассемблер на основе тем разделов 1 – 3 на экзамене. Компетенции: УК-7, УК-8, ПК-10, ПК-11, ПК-12. Домашнее задание 2: Студент должен разработать и исследовать программный модуль на языке Ассемблер, грамотно вставить его в главный программный модуль на языке C++ с графическим интерфейсом пользователя, провести сравнительный анализ вариантов реализаций и продемонстрировать способность: 1. Реализации блоков с операциями умножения и сложения на языке C++ и на ассемблере (можно по вариантам использовать другие операции), 2. Проведения замеров времени при выполнении операций умножения и сложения и определения производительности ПК на этих операциях на языке высокого и низкого уровня, 6.1 5 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 3. Построения таблиц, графиков зависимости времени выполнения, производительности от размеров вычислительного блока и числа повторений замеров времени в цикле выполнения. 4. Провести исследования с использованием созданного программного обеспечения и сделать выводы по замерам времени программных модулей и машинных команд, дать интерпретацию полученных результатов с учетом выполнения компьютером других процессов и прерыванием прикладной (более длиной) программы системными процессами. 5. Привести исходный код программы в отчете о выполнении домашнего задания. При этом студент должен продемонстрировать умение создавать компьютерные программы и отвечать на вопросы на основе тем разделов 2 - 5 на практических занятиях при выполнении и сдаче задания преподавателю. Компетенции: УК-7, УК-8, ПК-10, ПК-11, ПК-12. Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале. Проведение контроля должно осуществляться в компьютерном классе с установленным программным обеспечением современной стандартной среды разработки (IDE) для создания и отладки программных продуктов. 6.2 Система аттестации и оценки Существуют следующие формы контроля: • Выполнение домашних заданий; • Текущий контроль на практических занятиях; • Экзамен в конце модуля (промежуточный или итоговый). Промежуточная оценка (3-й модуль) состоит из: • Промежуточного экзамена в конце модуля 3 (50%); • Выполнения домашнего задания 1, текущего контроля 3-го модуля (50%). Накопленная и итоговая оценка в результирующей оценке состоят из: • Промежуточной оценки на экзамене (40%) в конце модуля 3; • Промежуточной оценки по выполнению домашнего задания 1 и текущего контроля 3го модуля (10%); • Оценки выполнения финального домашнего задания 2 и текущего контроля 4-го модулей (50%). 1. Позиционные системы счисления и программная модель микропроцессора Содержание раздела Позиционные системы счисления. Системы счисления (десятичная, двоичная, восьмеричная, шестнадцатеричная). Преобразование данных из одной системы счисления в другую. Форматы представления данных (символы, целые числа, вещественные числа). Знаковые и беззнаковые данные. Кодирование графических и звуковых данных. Нормализованная запись числа. 6 8 8 Литература к разделу № Наименование раздела дисциплины Самостоятельная работа Содержание дисциплины Аудиторная работа 7 [111], [1419] Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 2. Структура программы, операнды, операторы и данные на языке ассемблер Преобразование дробной части в двоичную форму. Представление вещественных чисел в памяти компьютера. Числа с фиксированной и с плавающей точкой. Программная модель микропроцессора. Пользовательские регистры: 8 регистров общего назначения (РОН), 6 регистров сегментов, 2 регистра состояния и управления (регистр флагов и указателя команды). Флаги состояния. Системные флаги. Системные регистры (4 регистра управления, 4 регистра системных адресов, 8 регистры отладки). Способы адресации. Регистровая адресация. Непосредственная. Прямая адресация памяти. Базовая и индексная адресация памяти. Базовая и индексная адресация памяти со смещением. Базовоиндексная адресация памяти. Базово-индексная адресация памяти со смещением. Совместимость систем программирования. Встраивание программных секций на ассемблере в программу на языке высокого уровня. Поддержка технологии сегментации трансляторами MASM и TASM, компилятором Visual С++ 2010. Общая структура программы на языке ассемблер. Предложения ассемблера (команды, макрокоманды, директивы, строки комментариев). Синтаксис ассемблера (операнды и операторы). Синтаксические диаграммы и расширенные формы Бэкуса—Наура. Формат (предложений, директив, команд и макрокоманд) ассемблера. Допустимые символы текста программ. Лексемы (идентификаторы, цепочки символов, целые числа). Операнды (постоянные / непосредственные, адресные, перемещаемые, счетчик адреса, регистровый, базовые, индексные, структурные, записи). Операторы (синтаксис, приоритет). Типы операторов ассемблера и синтаксические правила формирования выражений ассемблера (арифметические, сдвига, сравнения, логические, индексные, переопределения типа, переопределения сегмента, именования типа структуры, получения сегментной составляющей адреса выражения, получения смещения выражения). Типы данных. Непосредственные данные. Данные простого типа (байт, слово, двойное слово, учетверенное слово). Логическая интерпретация простых типов (целый со знаком и без знака, указатель ближний и дальний на память, цепочка, битовое поле, неупакованное и упакованное двоично-десятичное представление без знака). Директивы резервирования и 7 13 12 [1-7], [11] Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 3. 4. Команды языка Ассемблер Макросредства Ассемблера инициализации данных простых типов. Данные сложного типа. (массивы; структуры; объединения; записи). Описание и инициализация массива в программе (перечисление, оператор повторения dup, директивы label и rept, использование цикла). Адрес элемента массива = база + (индекс*размер элемента). Доступ к элементам массива (индексная адресация со смещением, базовая индексная адресация со смещением). Задание структуры (описание шаблона, экземпляра, обращения к элементам структуры). Описание объединений (шаблон перечисления имен и типов полей). Задание шаблона записи (битовые поля), экземпляра (инициализация конкретной переменной), обращения к элементам записи. Средства для работы с записями (числовое значение сдвигов вправо, команда сдвига вправо shr, оператор width размера элемента записи в битах, оператор mask локализации битов элемента записи). Стандартные директивы сегментации. Модульное программирование. 6 сегментных регистров. Одновременная работа с сегментами кода, стека, данных (основной и 3 дополнительных). Компоновщик программного кода. Синтаксис описания сегмента. Объединение программ на разных языках (директивы SEGMENT, ENDS, ASSUME). Атрибуты (операнды SEGMENT) выравнивания сегмента (BYTE, WORD, DWORD, PARA, PAGE, MEMPAG). Атрибуты комбинирования сегмента (PRIVATE, PUBLIC, . COMMON, AT, STACK). Атрибут класса сегмента. Атрибут размера сегмента. Упрощенные директивы сегментации. Синтаксис директивы модели памяти MODEL. Упрощенные директивы определения сегмента. Идентификаторы, создаваемые директивой MODEL. Модели и модификаторы модели памяти. Команды Ассемблера. Формат команд и макрокоманд. Набор команд (версия процессора 119 команд). Описание команд (название, синтаксис команды, состояние флагов, применение команды). Макросредства Ассемблера. Псевдооператоры equ и =. Синтаксис псевдооператоров equ и =. Директивы работы с текстовыми макросами (директива слияния строк catstr, директива выделения подстроки в строке substr, директива определения вхождения одной строки в другую instr, директива определения длины строки в текстовом макросе sizestr). 8 14 15 [1-7], [11] 10 10 [1-7], [11] Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 5. 6. Технологические приемы создания программ и обработки данных на языке Ассемблер Макрокоманды. Параметры. Макроопределение (шаблон-описание). Синтаксис макроопределения. Расположение макроопределения (в начале исходного текста программы, в отдельном файле, в макробиблиотеке). Список фактических и формальных аргументов. Макрогенерация. Макрорасширение. Макродирективы. Различия трансляторов MASM и TASM. Директивы повторения WHILE, REPT, IRP и IRPC. Директивы управления процессом генерации макрорасширения EXITM и GOTO. Директивы компиляции по условию. Директивы IF и IFE — условная трансляция по результату вычисления логического выражения. Директивы IFDEF и IFNDEF — условная трансляция по факту определения символического имени. Директивы IFB и IFNB — условная трансляция по факту определения фактического аргумента при вызове макрокоманды. Директивы IFIDN, IFIDNI, IFDIF и IFDIFI — условная трансляция по результату сравнения строк символов. Директивы генерации ошибок. Безусловная директива генерации пользовательской ошибки ERR (.ERR). Условная генерация пользовательской ошибки (ERRB (ERRIFB) и .ERRNB (ERRIFNB) и др. Выражения и константой условий. Операторы отношений. Дополнительное управление трансляцией. Ошибки трансляции. Сообщения об ошибках. Сообщения о фатальных ошибках. Критерии эффективности выполнения программ. Абсолютное время выполнения. Ускорение выполнения. Объем занимаемой памяти. Пропускная способность каналов передачи данных. Интегрированная характеристика качества выполнения программы. Компиляторы. MASM, TASM, Visual С++. Компиляция и вычисления в режиме оптимизации. Дисассемблирование. Таблица релиза команд. Замеры времени выполнения. Методики исключения времени выполнения отдельных блоков и команд в исследуемом вычислительном модуле, усреднения времени выполнения кратного количества команд и операций (в том числе одинаковых). Отображение диаграмм time C, time ASM и time C / time ASM. Получение данных о времени выполнения на фоне выполнения системных и прикладных процессов. Интерпретация результатов. Всего: 9 8 10 53 55 [12, 13] Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Занятия проводятся в компьютерном классе в интерактивной форме, включают в себя дискуссии по текущим заданиям и решение задач на ЭВМ. 8 Образовательные технологии При преподавании дисциплины предполагается сочетание аудиторной формы работы в виде проведения лабораторных занятий с внеаудиторной самостоятельной работой, что способствует формированию и развитию как универсальных, так и профессиональных компетенций, приведенных в разделе 3 настоящей программы курса УК-7, УК-8, ПК-10, ПК-11, ПК-12. Практические аудиторные занятия должны проводиться в компьютерных классах оснащенных необходимым программным обеспечением (средствами разработки программ) и включать в себя дискуссии по текущим заданиям и решение задач на ЭВМ. Студентам выдаются разные типовые варианты заданий лабораторных работ по разделам 1-4. Для раздела 1 Позиционные системы счисления и программная модель микропроцессора предусмотрено выполнение задания 1. В нём требуется в задании 1 выполнить перевод из одной позиционной системы счисления в другую 2-х заданных целых чисел. Под формат выполнения такого задания больше всего подходит форма самостоятельной работы в виде домашнего задания с проверкой во время аудиторных практических занятий. Одной из образовательных технологий, применяемых в лабораторных работах по разделам 1-4, является встраивание программных секций на ассемблере в программу на языке высокого уровня. Трансляторы с ассемблера MASM и TASM, а также компилятор Visual С++ 2010 поддерживают технологию сегментации при разработке программ. Для разделов 2 и 3 соответственно Структура программы, операнды, операторы и данные на языке ассемблер и Команды языка Ассемблер предусмотрено выполнение заданий 2, 3 и 4. В заданиях 2, 3 и 4 требуется написать 3 программы, реализующих вычисления дробного выражения, обработку строковых данных и работу с массивом данных с использованием ассемблерных вставок в программу на языке C++так, чтобы описания библиотек, данных, функций, подпрограмм, ввод и вывод были выполнены в программной секции на языке C++. При выполнении этих 3-х заданий необходимо использовать лабораторную базу компьютерного класса. Допускается, что при выполнении этих заданий студентами может быть использована личная вычислительная техника в домашних условиях самостоятельной работы. В качестве типового варианта заданий лабораторных работ приводится один вариант. Вариант 1. A1. а) 8209 б) D4h 70h (3 x )z 7y 1 y 4 А2. ; x = –4h, y = –3h, z = 2h, v = 12h; x = 7Fh, y = –15ACh, z = 5Fh, v = – v Ah; x,z – байты, y, – слова. v A3. Дана строка из трех десятичных цифр. Если первая и третья цифры совпадают, а вторая от них отлична, то заменить крайние цифры их дополнениями до 9 , иначе — проделать это со второй цифрой. A4. Даны массивы A и B из 16 байтов. Составить из элементов с одинаковыми номерами слово (элемент из B — старший байт). Если это слово не делится на 3, то поместить адрес (смещение) этого элемента в массив C и сосчитать количество таких элементов (числа беззнаковые). 10 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Помимо получения правильных решений всех 4 заданий студенты обязаны давать правильные ответы на вопросы, связанные с позиционными системами счисления и объяснением исходного текста созданных ими программ. Для разделов 1-4 предусмотрено выполнение домашнего задания 1, представляющего собой объединение всех 4-х задач в один отчетный материал по общей теме Позиционные системы счисления. Структура программы, операнды, операторы и данные на языке ассемблер. Для разделов 2-5 предусмотрено выполнение домашнего задания 2 по общей теме Технологические приемы создания программ на языке Ассемблер. В качестве типового варианта заданий домашнего задания 2 приводится типовой вариант постановки задачи. Выполнить операции умножения и сложения на языке C++ и на ассемблере, провести замеры времени выполнения операции умножения и сложения и определить производительность ПК на этих операциях, построить графики зависимости времени выполнения производительность от числа повторений замеров времени выполнения. Привести исходный код программы. Необходимо сделать следующее: 1. Блок-схемы алгоритмов замеров времени на языках C++ и Ассемблер, 2. Исходный текст программы на языке C++, 3. Применить методику дисассемблирования исполняемого кода программы на языке C++, 4. Создать список использованных команд ASM, 5. Использовать методики исключения времени выполнения отдельных блоков и команд в исследуемом вычислительном модуле, усреднения времени выполнения кратного количества команд и операций (в том числе одинаковых), реализовать диаграммы time C, time ASM и time C / time ASM. 6. Дать интерпретацию полученных результатов с учетом выполнения компьютером других системных и прикладных процессов, прерыванием более длиной программы системными процессами, выполнением на фоне более длинной прикладной программы архива. При защите домашних заданий студенты обязаны давать правильные ответы на вопросы, связанные с технологическими приемами создания программ на языке Ассемблер и объяснением исходного текста созданных ими программ. 8.1. Методические рекомендации преподавателю Не предусмотрены. 8.2. Методические указания студентам Методические указания к лабораторным работам в модуле 3. Позиционные системы счисления. Структура программы, операнды, операторы и данные на языке ассемблер. Методические указания к лабораторным работам в модуле 4. Технологические приемы создания программ на языке Ассемблер. 8.3. Методы обучения Программа курса состоит из: • практических аудиторных занятий в форме проведения лабораторных работ , • регулярных домашних заданий (составление и защита программного решения для данной проблемы). 11 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 9 Оценочные средства для текущего контроля и аттестации студента 9.1 Тематика заданий текущего контроля Примерные вопросы/ задания для [Укажите название текущего контроля, проводимого в письменной форме - контрольной работы, коллоквиума, домашнего задания]: Не предусмотрены при выполнении лабораторных работ по языку программирования Ассемблер. 9.2 Вопросы для оценки качества освоения дисциплины Примерный перечень вопросов к зачету (экзамену) по всему курсу или к каждому промежуточному и итоговому контролю для самопроверки студентов. Позиционные системы счисления (двоичная, восьмеричная, шестнадцатеричная система счисления). Преобразование данных из одной системы счисления в другую. Форматы представления данных (символы, целые, вещественные, знаковые и беззнаковые числа). Кодирование графических и звуковых данных. Нормализованная запись числа. Преобразование дробной части в двоичную форму. Представление вещественных чисел в памяти компьютера. Числа с фиксированной точкой. Числа с плавающей точкой. Программная модель микропроцессора. Пользовательские регистры: 8 регистров общего назначения (РОН), 6 регистров сегментов, 2 регистра состояния и управления (регистр флагов и указателя команды). Флаги состояния. Системные флаги. Системные регистры (4 регистра управления, 4 регистра системных адресов, 8 регистры отладки). Способы адресации (регистровая, непосредственная, прямая адресация, базовая и индексная адресация, базовая и индексная адресация памяти со смещением, базовоиндексная адресация памяти, базово-индексная адресация памяти со смещением. Совместимость систем программирования. Встраивание программных секций на ассемблере в программу на языке высокого уровня. Различия трансляторов MASM и TASM. Предложения ассемблера (команды, макрокоманды, директивы, строки комментариев). Синтаксические диаграммы и расширенные формы Бэкуса—Наура. Формат (предложений, директив, команд и макрокоманд) ассемблера. Операнды (постоянные / непосредственные, адресные, перемещаемые, счетчик адреса, регистровый, базовые, индексные, структурные, записи). Типы операторов ассемблера и синтаксические правила формирования выражений ассемблера (арифметические, сдвига, сравнения, логические, индексные, переопределения типа, переопределения сегмента, именования типа структуры, получения сегментной составляющей адреса выражения, получения смещения выражения). Непосредственные данные. Данные простого типа (байт, слово, двойное слово, учетверенное слово). Логическая интерпретация простых типов. Данные сложного типа. Доступ к элементам массива. Задание структуры. Описание объединений. Задание шаблона записи. 12 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Стандартные директивы сегментации. Модульное программирование. Одновременная работа с сегментами кода, стека, данных (основной и 3 дополнительных). Атрибуты (операнды SEGMENT) выравнивания сегмента (BYTE, WORD, DWORD, PARA, PAGE, MEMPAG). Атрибуты комбинирования сегмента (PRIVATE, PUBLIC, . COMMON, AT, STACK). Атрибут класса сегмента. Атрибут размера сегмента. Упрощенные директивы сегментации. Упрощенные директивы определения сегмента. Идентификаторы, создаваемые директивой MODEL. Модели и модификаторы модели памяти. Формат команд и макрокоманд. Набор команд (версия процессора 119 команд). Описание команд (название, синтаксис команды, состояние флагов, применение команды). Макросредства Ассемблера .Псевдооператоры equ и =. Макрокоманды. Параметры. Макроопределение (шаблон-описание). Синтаксис макроопределения. Расположение макроопределения (в начале исходного текста программы, в отдельном файле, в макробиблиотеке). Макродирективы. Трансляторы MASM и TASM. Директивы повторения WHILE, REPT, IRP и IRPC. Директивы управления процессом генерации макрорасширения EXITM и GOTO. Директивы компиляции по условию. Директивы IF и IFE — условная трансляция по результату вычисления логического выражения. Директивы IFDEF и IFNDEF — условная трансляция по факту определения символического имени. Директивы IFB и IFNB — условная трансляция по факту определения фактического аргумента при вызове макрокоманды. Директивы IFIDN, IFIDNI, IFDIF и IFDIFI — условная трансляция по результату сравнения строк символов. Директивы генерации ошибок. Безусловная директива генерации пользовательской ошибки ERR (.ERR). Условная генерация пользовательской ошибки (ERRB (ERRIFB) и .ERRNB (ERRIFNB) и др. Выражения и константой условий. Операторы отношений. Дополнительное управление трансляцией. Сообщения об ошибках. Сообщения о фатальных ошибках. 9. 3 Примеры заданий промежуточного /итогового контроля По желанию автора программы, приводятся примеры билетов с вопросами и задачами, заданий для зачета или экзамена, тренировочные тесты по дисциплине. Не предусмотрены при выполнении лабораторных работ по языку программирования Ассемблер. 10 Порядок формирования оценок по дисциплине (подробные методические рекомендации по формированию оценок по дисциплине могут быть приведены в приложении) 13 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов Преподаватель оценивает работу студентов на семинарах и практических занятиях: оценивается активность студента в дискуссиях, скорость и правильность решения задач. Оценки за работу на семинарских и практических занятиях преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за работу на семинарских и практических занятиях определяется перед промежуточным или итоговым контролем Оаудиторная. Преподаватель оценивает самостоятельную работу студентов: оценивается полнота и правильность выполнения домашних работ, степень владения необходимыми для выполнения работы навыками. Оценки за самостоятельную работу студента преподаватель выставляет в рабочую ведомость. Накопленная оценка по 10-ти балльной шкале за самостоятельную работу определяется перед промежуточным или итоговым контролем – Од/з. Накопленная оценка за текущий контроль учитывает результаты студента по текущему контролю следующим образом: Онакопленная= 0.4* Отекущий + 0.6* Оаудиторная; где Отекущий рассчитывается как взвешенная сумма всех форм текущего контроля, предусмотренных в РУП: Отекущий = Од/з; Результирующая оценка за дисциплину рассчитывается следующим образом: Опромежуточная i = 0.5·Онакопленная i этапа + 0.5·Опромежуточный зачет/экзамен Где Онакопленная i этапа рассчитывается по приведенной выше формуле. Онакопленная Итоговая= 0.5·Опромежуточная 1+ 0.5·Онакопленная 2 Способ округления накопленной оценки промежуточного (итогового) контроля в форме экзамена: арифметический. [Сумма удельных весов должна быть равна единице: ∑mi = 1, при этом, 0,2 ≤ m1 ≤ 0,8 (согласно Положению об организации контроля знаний, утвержденному УС НИУ ВШЭ от 24. 06.2011,протокол №26)] На пересдаче студенту не предоставляется возможность получить дополнительный балл для компенсации оценки за текущий контроль. На зачете студент может получить дополнительный вопрос (дополнительную практическую задачу, решить к пересдаче домашнее задание), ответ, на который оценивается в 1 балл. На экзамене студент может получить дополнительный вопрос (дополнительную практическую задачу, решить к пересдаче домашнее задание), ответ на который оценивается в 1 балл. [Оставьте те оценки, которые учитываются при выставлении результирующей оценки за промежуточный или итоговый контроль. Сумма удельных весов должна быть равна единице: ∑ki = 1, при этом, 0,2 ≤ k1 ≤ 0,8 После всех формул в обязательном порядке приводится способ округления полученного результата.] В диплом выставляет результирующая оценка по учебной дисциплине, которая формируется по следующей формуле: Орезульт = 0.5·Онакопл + 0.5·Оитоговый Способ округления результирующей оценки по учебной дисциплине: арифметический. 14 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 11 Учебно-методическое и информационное обеспечение дисциплины 11.1. Базовый учебник 1. Магда Ю.С. Ассемблер для процессоров Intel Pentium. –СПб.: Питер, 2006.-410с., ISBN 5-469-00662-X 11.2. Основная литература 2. Пирогов В.Ю. ASSEMBLER. Учебный курс. - М.: Издатель Молгачева С.В., Издательство Нолидж, 2001. - 848 с., ил., ISBN 5-89251-101-4 3. Голубь Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения. -2 изд., испр. и доп. –СПб.: ООО «ДиаСофтЮП». 2002.-656 с. ISBN 5-93772-056-3 4. Рудаков П.И., Финогенов К.Г. Язык ассемблера: уроки программирования. – ДИАЛОГМИФИ, 2001. -640 с. ISBN 5-86404-160-2 5. Шубников В.Г., Беляев В.С, Беляев С.Ю. Информатика. Программирование на языке ассемблера: Учеб.пособие. СПб.: Изд-во Политехн. ун-та, 2007. 101 с. 6. Пильщиков В.Н. Программирование на языке ассемблера IBM PC Программирование на языке ассемблера IBM PC, – ДИАЛОГ-МИФИ, 2014. -288 с. ISBN: 5-86404-051-7 7. Ирвин К. Язык ассемблера для процессоров Intel. 3-е изд. / Пер. с анг. – М:. Издательский дом «Вильямс», 2005 -ISBN: 5-8459-0779-9 8. Внуков А.А., Раев А.П., Можаитин Р.В. Организация ЭВМ, комплексов и систем. Учебное пособие — М.: Московский государственный институт электроники и математики, 2001. — 112 с. ISBN 5-230-16343-7; 9. Внуков А.А. Лекции в электронной форме по курсу Архитектура ЭВМ и систем – файл: МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ -03.doc, лекции, 4 семестр 2012. -134 с. 10. Внуков А.А. Лекции в электронной форме по курсу Архитектура ЭВМ и систем – файл: Архитектура_ЭВМ+система_команд 2009.doc, лекции, 4 семестр 2009. -128 с. 11. Внуков А.А. Методические указания к лабораторным работам в модуле 3 в электронной форме. Позиционные системы счисления. Структура программы, операнды, операторы и данные на языке ассемблер, 2015. – 5 с. 12. Внуков А.А. Методические указания к лабораторным работам в модуле 4 в электронной форме. Технологические приемы создания программ на языке Ассемблер, 2015. – 5 с. 13. Внуков А.А. Задания по ТОИ в электронной форме. Исследование замеров времени выполнения команд. Операции с матрицами. Только Задания 1, 2 и 3 для МС41 -11+. 2014, 15 с. 14. Ivor Horton, Beginning Visual C++ 2010, Indianapolis : Wiley Publishing, Inc., 2011, 15. P.J. Deitel, H.M. Deitel, C++ How to Program, 7th Pearson Education, 2010, 11.3. Дополнительная литература 16. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2C: Instruction Set Reference, Intel Corporation, December 2015, 17. IA-32 Intel® Architecture Software Developer’s Manual Volume 1: Basic Architecture, Intel Corporation, 2003, 18. IA-32 Intel Architecture Software Developer’s Manual, Intel® Corp. 2001 19. IA-32 Intel Architecture Optimization, Intel® Corp. 2001 11.4.Справочники, словари, энциклопедии Не предусмотрены. 15 Национальный исследовательский университет «Высшая школа экономики» Программа дисциплины «Язык ассемблера» для направления 10.05.01 «Компьютерная безопасность» подготовки специалистов 11.5. Программные средства Для успешного освоения дисциплины, студент использует следующие программные средства: Visual С++ 2014 11.6. Дистанционная поддержка дисциплины Не предусмотрены. 12 Материально-техническое обеспечение дисциплины Для проведения лекций необходима аудитория, оснащенная компьютером и проекционным оборудованием. Для проведения практических занятий необходим компьютерный класс, оснащенный современным программным обеспечением, IDE для разработки программ: Visual С++ 2010. 16