ВОЛГОГРАДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Институт МАТЕМАТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИИ

Кафедра ФУНДАМЕНТАЛЬНОЙ ИНФОРМАТИКИ И ОПТИМАЛЬНОГО УПРАВЛЕНИЯ

Рекомендовано

УТВЕРЖДЕНО Ученым Советом института Протокол № от

« » 201_ г.

Директор ИМИТ

Кафедрой ФИОУ Протокол № от

«____ »___________ 201_ г.

Зав. каф. ФИОУ АА. Воронин

Основная образовательная программа подготовки бакалавров по направлению 010400.62 "Прикладная математика и информатика"

ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ

«ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ»

3 зачетных единиц

(Профессиональный цикл, вариативная часть, курс по выбору)

Автор:

Профессор каф. ФИОУ, д. ф.-м. н.

Волгоград 201_

Рабочая программа составлена на основании ФГОС ВПО и учебного плана ООП по направлению 010400.62 “Прикладная математика и информатика”.

1.  Цель и задачи преподавания дисциплины

Преподавание дисциплины “Программирование на ассемблере” имеет целью научить студентов составлять короткие функции-модули на языке Ассемблера, предназначенные для оптимизации и ускорения вычислительных программ, написанных на языке С.

Для достижения поставленной цели в курсе решаются следующие задачи:

•  изучается архитектура центрального процессора и арифметического сопроцессора;

•  изучается In-line-ассемблер для компилятора GNU gcc под Linux;

•  изучаются система команд и форматы данных сопроцессора;

•  изучаются различия синтаксиса Intel-ассемблера и АТ&Т-ассемблера

•  изучаются способы организации связей между С-программой и Asm-функцией.

НЕ нашли? Не то? Что вы ищете?

Требования к уровню освоения содержания дисциплины

В результате освоения дисциплины обучающийся должен:

•  знать архитектуру процессоров семейства х86 и структуру используемой памяти;

•  знать основные команды для программирования арифметического сопроцессора;

•  иметь представление о форматах данных арифметического сопроцессора;

•  уметь использовать In-line-ассемблерные вставки в С-программах;

•  знать соглашения о связях между С-программой и Asm-функцией;

•  уметь генерировать и оптимизировать ассемблерные модули для С-программ.

Основная Образовательная Программа предполагает частичное формирование и (или) закрепление следующих общекультурных и профессиональных компетенций в рамках данной дисциплины:

■  (ОК11) способность владения навыками работы с компьютером как средством управления информацией.

■  (OKI2) способность работать с информацией в глобальных компьютерных сетях.

■  (OKI4) способность использовать в научной и познавательной деятельности профес­сиональные навыки работы с информационными и компьютерными технологиями.

■  (OKI5) способность работать с информацией из различных источников, включая сетевые ресурсы сети Интернет, для решения профессиональных и социальных задач.

■  (ПК9) способность решать задачи производственной и технологической деятельности на профессиональном уровне, включая разработку алгоритмических и программных решений в области системного и прикладного программирования.

■  (ПК 10) способность применять в профессиональной деятельности современные языки программирования и языки баз данных, операционные системы, электронные библиотеки и пакеты программ, сетевые технологии.

■  (ПК 12) способность составлять и контролировать план выполняемой работы, плани­ровать необходимые для работы ресурсы, оценивать результаты собственной работы.

Дисциплина изучается на 4 курсе (семестр 7).

Вид итогового контроля: - зачет.

Количество зачетных единиц

4

Общая трудоемкость дисциплины, час

108

Аудиторные занятия, час

51

Лекций, час

0

Практические (семинарские) занятия, час

34-

Лабораторные занятия, час

17

Самостоятельная работа, час

57

Выполнение домашних заданий, час

20

Подготовка к тестам, час

14

Выполнение индивидуальных заданий, час

23

п/п

Тематика лекций и практических занятий на ЭВМ

Кол-во часов

Лабор. зан.

Практ.

занятия

1.

Архитектура и программная модель арифметического сопроцессора. Стековые арифметические команды. Система команд сопроцессора

4

2

2.

In-line-ассемблер.

2

4

3.

Условные переходы и циклы

2

4

4.

Форматы данных и специальные значения сопроцессора

4

8

5.

Синтаксис Intel-ассемблера и АТ&Т-ассемблера

2

4

6.

Соглашения о связях С-программ и Ассемблер-функций

2

4

7.

Генерация ассемблерных модулей и их оптимизация

3

6

8.

Программирование вычислительных модулей

2

4

Всего часов:

17

34

3.  Краткое содержание тем

Тема 1. (6 часов). Сложности и возможности языков Ассемблера. Архитектура и программная модель центрального процессора на примере i386. Назначение регистров. Стек центрального процессора. Архитектура и программная модель арифметического сопроцессора. Взаимодействие и синхронизация центрального процессора и арифметического сопроцессора. Стек сопроцессора. Регистры управления и регистры состояния. Принцип действия команд сопроцессора. Система команд сопроцессора. Команды загрузки и записи. Арифметические команды. Трансцендентные команды. Команды сравнения. Команды управления.

Тема 2. (6 часов). Форматы операндов inline-ассемблерной вставки asm(a:b:c:d) в код С - программы. Взаимодействие inline-ассемблера с С-программой. Освоение inline-ассемблера на примере нахождения корней квадратного уравнения. Определение эффективности работы ассемблерной вставки по сравнения с С-кодом.

ТемаЗ. (4 часа). Команды сравнения в сопроцессоре. Передача результата в регистр флагов центрального процессора и организация условных переходов. Освоение переходов на примере решения квадратного уравнения. Организация циклов на примере суммирования массива.

Тема 4. (4 часа). Форматы данных сопроцессора. Нормализованное представление вещественных чисел, мантисса, порядок, смещение. Внутренний вещественный формат. Форматы данных аппаратно воспринимаемых сопроцессором: целые, вещественные,

упакованные десятичные. Денормализованные и ненормализованные вещественные числа. Специальные значения: нуль, бесконечность, неопределенность, не-числа. Арифметические операции со специальными значениями.

Тема 5. (4 часа). Основные различия в логике и синтаксисе Intel-ассемблера и АТ&Т - ассемблера. Расположение операндов. Суффиксы и префиксы команд. Запись констант и адресных выражений. Обозначения регистров. Опции компилятора GNU gcc для использования различных ассемблеров на примере программ сортировки вещественных массивов.

Тема 6. (4 часа). Соглашения о связях и передаче параметров между С-программой и ассемблерной подпрограммой. Использование стека центрального процессора для передачи параметров и сохранения адреса возврата. Резервирование области для локальных переменных. Соглашения о месте сохранения результата. Восстановление стека и возврат в вызывающую программу. Разбор на примере подпрограммы с тригонометрическими и логарифмическими функциями.

Тема 7. (8 часов). Использование опций компилятора GNU gcc для генерации ассемблерных модулей из С-модулей. Отладочная информация. Секции данных и текста. Правило записи комментариев. Практическое исследование случаев, в которых компилятор генерирует неоптимальный код: функции с трансцендентными командами, функции поиска экстремума и сортировки, функции работы с матрицами. Оптимизация ассемблерных модулей путем удаления избыточной части кода.

Тема 8. (8 часов). Новые ассемблерные команды для арифметического сопроцессора: команды условной пересылки, тригонометрические команды, команды блока ХММ. Программирование вычислительных модулей по индивидуальным заданиям с использованием трансцендентных и упомянутых выше команд.

4. Учебно-методическое обеспечение курса

В данном курсе используются интерактивные лекции и практические занятия в компьютерном классе с ОС Linux, используется компилятор GNU gcc.

5. Литература (базовая)

1.  Магда для процессоров Intel Pentium. - СПб.: Питер, 2006. - 410 с. (20 экз. в библиотеке ВолГУ)

Литература (основная)

2.  Таненбаум компьютера = Structured Computer Organization / пер. с англ. Ю. Гороховского, Д. Шинтякова. - 5-е изд. - СПб. : Питер, 2009. - 844 с. (20 экз. в библиотеке ВолГУ)

3.  Бройдо, ЭВМ и систем : учебник для студ. вузов. - 2-е изд. - СПб. : Питер, 2009. - 720 с. - (Учебник для вузов). - Сп. лит.: с. 717-720. - ISBN 978-5-388-00384-3 : 395-60. (15 экз)

Литература (дополнительная)

4.  Финогенов КГ. Основы языка Ассемблера: Учеб. курс. - М.: ГЛТ, 2001. - 288с. (10 экз. в библиотеке ВолГУ)

5.  Митницкий ВЯ. Архитектура IBM PC и язык Ассемблера: УчПособВуз. - М.: МФТИ, 2000. - 148 с. (5 экз. в библиотеке ВолГУ)

6. Метод формирования итоговой оценки

Вид контроля

Максимальное количество баллов

Посещения

20

Текущий контроль активности на занятиях

20

Теоретический тест-опрос

30

Отчетность по индивидуальным заданиям

30

Всего

100


Количество баллов формируют итоговую оценку по критериям действующей в ВолГУ бально-рейтинговой системы.