МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕ- ДЕРАЦИИ высшего профессионального образования

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Алтайский государственный университет»
Рубцовский институт (филиал)
УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ НИЗКОГО УРОВНЯ
Специальность – 230101.65 Вычислительные машины, комплексы, системы и сети
Форма обучения – очная
Кафедра – математики и прикладной информатики
Рубцовск - 2011
При разработке учебно-методического комплекса дисциплины в основу
положены:
1) ГОС ВПО по специальности 230101.65 Вычислительные машины, комплексы, системы и сети, утвержденный Министерством образования РФ
«27» марта 2000 г., 224 ТЕХ/ДС
2) Учебный план по специальности 230101.65 Вычислительные машины,
комплексы, системы и сети, утвержденный решением Ученого совета РИ
(филиала) АлтГУ от «23» мая 2011г., протокол № 12
Учебно-методический комплекс одобрен на заседании кафедры математики и прикладной информатики от «27» июня 2011 г., протокол №15
СОДЕРЖАНИЕ
1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА .....................................................................4
2. ТЕМАТИЧЕСКИЙ ПЛАН ................................................................................7
3. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ ..................................................................9
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ОСВОЕНИЮ УЧЕБНОЙ
ДИСЦИПЛИНЫ .............................................................................................14
4.1 Самостоятельная работа студентов .....................................................14
4.2 Оценочные средства для текущего контроля успеваемости,
промежуточной .............................................................................................15
5. МАТЕРИАЛЫ К ПРОМЕЖУТОЧНОМУ И ИТОГОВОМУ КОНТРОЛЮ
..........................................................................................................................17
5.1. Примерный перечень тестовых заданий ................................................17
5.2. Примерный перечень вопросов для проведения зачёта ........................21
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ24
7. СПИСОК ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ,
ДРУГИЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ ......................................26
1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Одной из факультативных дисциплин по специальности 230101.65 является дисциплина «Программирование на языке низкого уровня».
Язык ассемблера (машинно-ориентированный язык низкого уровня) появился вместе с появлением процессоров и тесно связан с их архитектурой, позволяя напрямую обращаться к аппаратным ресурсам компьютера. Часто у студентов возникает вопрос: а зачем вообще нужно изучать язык ассемблера, когда
имеются развитые средства программирования на языках высокого уровня, такие, например, как Visual С++ .NET фирмы Microsoft или Borland Delphi 2009?
Тем более что помимо этих средств есть еще целый спектр специализированных
программных продуктов для разработки офисных приложений, баз данных,
электронных таблиц и т. д. Подобные программы называются средствами быстрой разработки и позволяют в считанные недели создавать самые сложные приложения.
Тем не менее значение языка ассемблера трудно переоценить. Все без исключения средства разработки программ в той или иной степени используют
ассемблер. К примеру, большинство библиотечных функций языков С++ и Pascal, на основе которых построены такие мощные инструменты разработки, как
Visual С++ и Delphi, написаны на ассемблере. Мультимедийные приложения,
программы обработки сигналов и многие другие используют высокопроизводительные библиотеки функций, разработанные с помощью ассемблерных команд
технологии SIMD. Наконец, если требуется, чтобы приложение работало максимально быстро и занимало меньше памяти (а это нужно для встроенных и мобильных систем в различных отраслях промышленности), то применение ассемблера является едва ли не единственным способом достижения цели.
В соответствии с Государственным образовательным стандартом высшего
профессионального образования, объектами профессиональной деятельности
инженеров по специальности 230101.65 «Вычислительные машины, комплексы,
системы и сети» являются «способы и методы проектирования, производства и
эксплуатации аппаратных и программных средств вычислительной техники,
применяемых в различных областях».
Именно поэтому для профессиональной деятельности будущего специалиста так важно изучение дисциплины «Программирование на языке низкого
уровня».
Перечень дисциплин, усвоение которых студентам необходимо для
изучения курса:
4
«Информатика», «Архитектура ЭВМ», «Операционные системы», «Программирование на языке высокого уровня».
Знания и навыки, полученные в результате изучения «Программирование на языке низкого уровня» могут быть использованы в дисциплинах:
«Микропроцессорные системы»; «Системное программное обеспечение»,
«Схемотехника ЭВМ».
Целями данного курса являются:
- изучение основных ресурсов вычислительной машины и правил их использования;
- изучение принципов низкоуровневого программирования;
- изучение команд и директив языка.
Задачами данного курса являются:
- формирование навыков программирования на языке ассемблера;
- изложение основ архитектур Intel совместимых процессоров;
- показать неразрывную связь архитектуры процессора с его машинным языком;
- представить систему машинных команд в виде функциональных групп с
тем, чтобы объяснить цели, которые преследовали разработчики процессора
при введении той или иной команды в систему машинных команд;
- научить использовать инструментальные средства разработки ассемблерных
- программ;
- научить осмысленному подходу к выбору средств ассемблера для реализации практических задач средней сложности.
В результате изучения дисциплины студенты должны:
иметь представление:
- об архитектуре центрального процессора, режимах работы процессора, моделях организации памяти; методах программирования устройств, принципах организации ввода-вывода в программах на ассемблере.
знать:
- основные понятия и синтаксис языка;
- типы данных, и внутренне представление;
- основные команды и директивы языка программирования;
- программирование сложных типов данных;
- вычисления с использованием сопроцессора;
- программирование операций ввода-вывода.
приобрести навыки и уметь:
- разрабатывать одномодульные программы на языке;
- проводить отладку программ с использованием отладчика;
5
-
программировать отдельные операции с устройствами компьютера;
создавать многомодульные программы.
Основными видами занятий являются лекции и лабораторные занятия.
Основной вид текущего контроля – тестирование.
Основной вид рубежного контроля – зачёт по дисциплине.
6
2. ТЕМАТИЧЕСКИЙ ПЛАН
(распределение часов курса по разделам и видам работ)
2
1. Введение в язык ассемблера.
2. Компиляция и компоновка
приложений на языке ассемблера.
3. Базовая архитектура процессоров Intel x86
4. Первичные элементы языка
ассемблера.
5. Программная модель Intel
Pentium.
6. Адресация.
7. Организация сегментов.
Промежуточный контроль
ДЕ 2
8. Логические структуры.
Ветвления
9. Организация циклов.
и циклы
(13 балл.)
Промежуточный контроль
10. Организация стека.
11. Принципы организации
подпрограмм.
12. Параметры процедур и возвращаемые значения.
13. Использование общих пе-
ДЕ 3
Подпрограммы
(21 балл)
ДЕ 1
Основы создания приложений на языке ассемблера
(30 баллов)
1
7
3
6
4
2
5
Лабораторные работы
Самостоятельная работа студентов, час.
Семинары
Наименование тем
Количество
аудиторных часов при очной
форме обучения
Лекции
Максимальная нагрузка студентов, час.
Дидактические единицы (ДЕ)
Очная форма обучения
6
6
6
10
4
12
4
8
4
12
6
7
4
6
4
4
4
4
4
2
Тестирование
4
4
14
4
6
4
12
2
6
4
Тестирование
4
2
4
10
10
4
16
2
6
2
6
8
6
4
ДЕ 4
Арифметические и
логические операции
(36 баллов)
ременных в процедурах.
Промежуточный контроль
14. Логические команды.
15. Команды сканирования битов.
16. Команды сдвига и циклического сдвига.
17. Обработка целых чисел.
Сложение и вычитание.
18. Обработка целых чисел.
Умножение и деление.
Итоговый контроль
Итого часов
8
16
Тестирование
4
4
8
14
2
4
8
14
2
4
8
14
2
4
8
14
2
4
8
200
50
50
100
Зачёт
3. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ
(дидактические единицы)
ДЕ I «Основы создания приложений на языке ассемблера»
Тема 1. Введение в язык ассемблера.
Аудиторное изучение: История возникновения языка ассемблера. Преимущества и недостатки языка ассемблера .
Тема 2. Компиляция и компоновка приложений на языке ассемблера.
Самостоятельное изучение: Ассемблирование исходного текста. Компоновка программы.
Тема 3. Базовая архитектура процессоров Intel x86.
Аудиторное изучение: Эволюция процессоров фирмы Intel. Архитектура
процессора Intel Pentium.
Самостоятельное изучение: Архитектура процессора Intel Pentium Pro.
Архитектура процессора Intel Pentium II. Архитектура процессора Intel Pentium
III. Архитектура процессора Intel Pentium IV
Тема 4 Первичные элементы языка ассемблера.
Аудиторное изучение: Алфавит языка ассемблера. Метки, символьные
имена и константы. Типы данных и распределение памяти.
Самостоятельное изучение: Способы представления различных типов
данных. Указатель текущей позиции.
Тема 5. Программная модель Intel Pentium.
Аудиторное изучение: Базовые регистры. Сегментные регистры. Регистр
управления и контроля EFLAGS. Регистр-указатель EIP выполняемой инструкции процессора.
Самостоятельное изучение: 64-х разрядные регистры процессоров архитектуры x86-64 (поздние версии процессоров Intel Pentium IV, Pentium D и т.д.).
Тема 6. Адресация.
Аудиторное изучение: Критерии выбора сегментного регистра. Эффективный адрес операнда. Прямая адресация. Косвенная адресация. Адресация
«база + смещение»
9
Самостоятельное изучение: Адресация «индекс + смещение». Адресация
«индекс * множитель + смещение». Адресация «база + индекс + смещение». Адресация «база + (индекс * множитель) + смещение».
Тема 7. Организация сегментов.
Аудиторное изучение: Логические и физические сегменты. Директивы
определения сегментов. Модели памяти.
Самостоятельное изучение: Модель памяти Flat. Соглашения о вызовах.
ДЕ II «Ветвления и циклы»
Тема 8. Логические структуры.
Аудиторное изучение: Типы логических структур. Организация логических структур в ассемблере. Организация логических структур в ассемблере.
Условные переходы и ветвления. Знаковые и беззнаковые сравнения. Команды
условных переходов.
Самостоятельное изучение: Команда безусловного перехода. Ассемблерный аналог конструкции CASE.
Тема 9. Организация циклов.
Аудиторное изучение: Организация циклов в языке ассемблера. Команды
loop и jcxz.
Самостоятельное изучение: Команды loope/loopz, loopne/loopnz. Команда loopd.
ДЕ III «Подпрограммы»
Тема 10. Организация стека.
Аудиторное изучение: Понятие стека. Помещение данных в стек. Извлечение данных из стека.
Самостоятельное изучение: Обмен данными с помощью стека. Правила
использования стека.
Тема 11. Принципы организации подпрограмм.
Аудиторное изучение: Понятие подпрограммы и процедуры. Размещение
подпрограмм. Оформление подпрограмм. Команда call. Команда ret.
Самостоятельное изучение: Неявное определение подпрограммы. Ближние и дальние подпрограммы.
10
Тема 12. Параметры процедур и возвращаемые значения.
Аудиторное изучение: Передача параметров через регистры. Передача
параметров через стек. Восстановление стека.
Самостоятельное изучение: Возвращаемое процедурой значение. Команда ret n.
Тема 13. Использование общих переменных в процедурах.
Аудиторное изучение: Проблемы при использовании параметров. Общие
(глобальные) переменные.
Самостоятельное изучение: Директивы public и extern.
ДЕ VI «Арифметические и логические операции»
Тема 14. Логические команды.
Аудиторное изучение: побитовое отрицание, побитовое И, побитовое
ИЛИ, сложение по модулю 2.
Самостоятельное изучение: Команда and. Команда or. Команда xor.
Тема 15. Команды сканирования битов.
Аудиторное изучение: Команда bsf. Команда bsr. Команда bt.
Самостоятельное изучение: Команда btc.
Тема 16. Команды сдвига и циклического сдвига.
Аудиторное изучение: Виды логических и циклических сдвигов. Команды shr и sar. Команды shl и sal.
Самостоятельное изучение: Команды циклического сдвига. Команды rcr
и rcl.
Тема 17. Обработка целых чисел.
Аудиторное изучение: Два формата целочисленных данных. Двоичнодесятичные числа. Особенности работы со знаковыми и беззнаковыми числами.
Команда сложения. Команда вычитания.
Самостоятельное изучение: Неупакованные двоично-десятичные числа.
Упакованные двоично-десятичные числа. Контроль состояния флагов. Переполнение. Увеличение размерности операндов.
Тема 18. Сложение, вычитание, умножение и деление.
Аудиторное изучение: Команды умножения (mul, imul). Установка флагов. Умножение чисел разной размерности. Умножение знаковых чисел.
11
Самостоятельное изучение: Операции деления (div, idiv). Алгоритм деления 64-х разрядного числа на байт.
12
Содержание лабораторных занятий
Лабораторная работа №1. Тема: «Первая программа на языке ассемблера: трансляция, компоновка, отладка».
Лабораторная работа №2. Тема: «Разделение программы на несколько
ветвей».
Лабораторная работа №3. Тема: «Обработка массива данных: поиск
символа в строке».
Лабораторная работа №4 Тема: «Обработка массива данных: позиция
символа в строке»
Лабораторная работа №5 Тема: «Обработка массива данных: позиция
числа в массиве двойных слов».
Лабораторная работа №6 Тема: «Обработка массива данных: сумма элементов массива».
Лабораторная работа №7 Тема: «Обработка массива данных: поиск максимального и минимального элементов массива».
Лабораторная работа №8 Тема: «Обработка символьной информации:
преобразование символов строки к верхнему регистру»
Лабораторная работа №9 Тема: «Подпрограммы: разработка процедуры
для преобразование символов строки к верхнему регистру»
Лабораторная работа №10 Тема: «Передача параметров через стек: разработка процедуры с параметрами для преобразование символов строки к верхнему регистру»
Лабораторная работа №11 Тема: «Разработка многомодульной программы».
Лабораторная работа №12. Тема: «Строковые команды: разработка процедуры копирования строк».
Лабораторная работа №13. Тема: «Строковые команды: разработка процедуры конкатенации строк».
Лабораторная работа №14. Тема: «Строковые команды: разработка процедуры сравнения строк»
Лабораторная работа №15. Тема: «Арифметические операции: разработка процедуры поиска среднего-арифметического элементов массива».
Лабораторная работа №16. Тема: «Сканирование данных: выбор одинаковых элементов из двух целочисленных массивов».
Лабораторная работа №17. Тема: «Сканирование данных: поиск и замена чисел в массива»
Лабораторная работа №18-25. Тема: «Сканирование данных: поиск и замена символов в строке»
13
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ОСВОЕНИЮ
УЧЕБНОЙ ДИСЦИПЛИНЫ
Образовательная технология
В преподавании дисциплины используются преимущественно традиционные образовательные технологии:
 лекции сопровождающиеся демонстрацией презентации с помощью мультимедийного проектора;
 использование выдач (печатного варианта слайдов) в качестве раздаточных
материалов;
 лабораторный практикум в компьютерном классе;
 самостоятельная работа студентов.
Цель лекции – сообщение новых знаний, систематизация и обобщение
накопленных, развитие познавательных и профессиональных интересов.
Лабораторный практикум – как обязательный элемент образовательного
процесса по данной дисциплине, призван закрепить полученные теоретические
знания и обеспечить формирование навыков программирования на языке ассемблера. Они проводятся по мере изучения теоретического материала и выполняются как индивидуально каждым студентом, так и аудиторией в целом. Лабораторный практикум является интерактивной формой проведения занятий, поскольку во время таких занятий происходит постоянное взаимодействие по каналам педагогических коммуникаций преподаватель <=> студент и студент <=>
студент.
4.1 Самостоятельная работа студентов
Самостоятельная работа является обязательной для каждого студента и
определяется учебным планом. Цель самостоятельной работы студентов – овладение фундаментальными знаниями, профессиональными умениями и навыками, опытом творческой, исследовательской деятельности. Самостоятельная работа студентов обеспечивает формирование профессиональной компетенции,
воспитывает потребность в самообразовании, способствует развитию активности, ответственности и организованности, творческого подхода к решению проблем учебного и профессионального уровня.
Лекции и практические занятия способны лишь более конкретно ориентировать студента, научить осмысленному подходу к выбору средств ассемблера
14
для реализации практических задач, научить использовать инструментальные
средства разработки ассемблерных программ.
В образовательном процессе по дисциплине выделяется два вида самостоятельной работы:
 аудиторная;
 внеаудиторная.
Аудиторная самостоятельная работа по дисциплине выполняется на учебных занятиях под непосредственным руководством преподавателя и по его заданию. Формами аудиторной самостоятельной работы являются:
 работа в малых группах при проведении лабораторных занятий – мозговой
штурм для выполнения задания;
 поиск информации в системе документации для выполнения задания.
Внеаудиторная самостоятельная работа выполняется студентом по заданию преподавателя, но без его непосредственного участия, но под его контролем и с последующей оценкой.
Целью внеаудиторной самостоятельной работы является овладение профессиональными знаниями, умениями и навыками по профилю изучаемой дисциплины, закрепление и систематизация знаний, формирование умений и навыков и овладение опытом творческой, исследовательской деятельности. Этот вид
самостоятельной работы способствует развитию самостоятельности, ответственности и организованности, творческого подхода к решению проблем учебного и профессионального уровней.
Формами внеаудиторной самостоятельной работы является: чтение текста
(учебника, первоисточника, дополнительной литературы); конспектирование
текста; выписки из текста; работа с конспектом лекции; самостоятельное выполнение заданий на лабораторных и практических занятиях; выполнение домашних заданий;
4.2 Оценочные средства для текущего контроля успеваемости,
промежуточной
аттестации по итогам освоения дисциплины.
Виды контроля самостоятельной работы: самоконтроль, проведение блицопроса в начале лекции, проверка правильности выполнения домашних заданий.
Внутрисеместровый контроль знаний проводится в форме проверки выполнения практических и самостоятельных заданий, тестирования, итоговый
15
контроль в форме зачета. Промежуточный контроль осуществляется в письменной форме. Видом промежуточного контроля являются тестирование, проводимое по окончании работы над дидактической единицей на занятиях.



К зачету допускаются студенты, которые:
прослушали лекции; в случае пропуска лекции предоставили конспект;
посетили лабораторные занятия и выполнили на них все практические задания;
при необходимости – «отработали» пропуски.
Зачет является итоговой формой контроля по дисциплине. На зачете студенты должны показать умение использовать знания, полученные на аудиторных занятиях и в ходе самостоятельной подготовки, продемонстрировать навыки решения практических задач.
Студентам предложены примерные вопросы и задания для подготовки к
зачету. Подготовка студентов к зачету основывается на знаниях, умениях и
навыках, полученных ими на лекциях, и лабораторно-практических занятиях, а
также внимательного изучения предложенной литературы.


Зачет проводится по следующему плану.
Студенты:
отвечают на один теоретический вопроса из списка вопросов к зачету;
выполняют практическое задание, аналогичное аудиторным заданиям.
16
5. МАТЕРИАЛЫ К ПРОМЕЖУТОЧНОМУ И ИТОГОВОМУ КОНТРОЛЮ
5.1. Примерный перечень тестовых заданий
1. Выберите неверно составленные инструкции
 out
dx,ax
 mov
ebx, [esp+4]
 mov
ebx, cr0
 jz
0008:0000h
2. Какие утверждения верны для модели памяти compact?
 Адресация данных ближняя, адресация кода дальняя
 Адресация данных ближняя, адресация кода ближняя
 Адресация данных дальняя, адресация кода ближняя
 Ничего из приведённого
3. Что делает следующая инструкция
 lea eax, [eax*8][eax]
 Умножение eax на 16
 Загрузка содержимого памяти по адресу ds:[8*eax] в eax
 Умножение eax на 9
4. В начале процедуры регистры были занесены в стек в таком порядке: eax,
ebx, ecx, edx. В каком порядке их нужно восстанавливать в конце процедуры?
 edx, ecx, eax, ebx
 eax, ebx, ecx, edx
 ebx, ecx, edx, eax
 eax, ecx, ebx, edx
 edx, ecx, ebx, eax
5. Можно ли работать с 32-х битными регистрами в реальном (16-ти битном)
режиме процессора i386
 Да
 Нет
17
6. Какой флаг будет проверяться при выполнении инструкции условного перехода je?
 af
 cf
 bf
 ef
 zf
7. Какой модели организации памяти из перечисленных не существует?
 Сплошная модель защищённого режима
 Сплошная модель памяти реального режима
 Сегментированная модель памяти защищённого режима
 Сегментированная модель памяти реального режима
8. Какой флаг устанавливается в 1 если результат арифметической команды
требует коррекции?
 cf
 pf
 af
 df
 sf
9. Что называется физическим адресом?
 Адрес памяти хранящийся в сегментном регистре
 Адрес памяти используемый
10. Почему дополнительный код используется для представления целых отрицательных чисел практически во всех микропроцессорах и микроконтроллерах? Укажите все подходящие варианты
 Дополнительный код легко читабелен и поэтому удобен для отладки
 Используя дополнительный код представления отрицательных чисел
операцию вычитания можно заменить на операцию сложения и таким
образом реализовать эти две операции на одном сумматоре.
 Дополнительный код не является распространённым представлением
отрицательных чисел. В большинстве случаев используется обратный
код
18
11. В чём различия инструкций ret и retf
 ret использует дальний адрес (селектор/смещение и смещение) из стека
 Эти инструкции идентичны
 retf восстанавливает регистр флагов из стека
 retf использует дальний адрес (сегмент/селектор и смещение) из стека
12. В чём заключается разница (если она есть) между двумя следующими инструкциями? Выберите все верные утверждения.
and eax, 0FFh
и
test eax, 0FFh
 Разница отсутствует
 Первая не изменяет состояния флагов, вторая изменяет
 Первая выполняет операцию «побитовое И», вторая «Логическое И».
 Первая сохраняет результат операции, вторая нет.
13. Что произойдёт в результате выполнения команды
Jmp $
 Переход в защищённый режим
 Данный код вызовёт ошибку трансляции
 Перезагрузка компьютера
 Зацикливание программы
14. Одно ли и то же выполняют два следующих куска кода
1)
mov
ax, 1020h
mov
dx, 0377h
out
dx, ax
2)
mov
ax, 1020h
mov
dx, 0377h
out
dx, al
inc
dx
out
dx, ah
 Да
 Нет
 Зависит от устройства
19
15. Возможна ли прямая передача данных между ячейками памяти средствами
набора команд 8086?
 Да
 Нет
16. Какое семейство процессоров первым стало поддерживать полноценный 32x битный защищенный режим?
 80486
 Pentium (80586)
 80286
 80386
 8086/8088
17. Какой способ адресации имеет наиболее компактный код?
 Регистровый
 Непосредственный
 Прямой
 регистровый относительный
18. Регистр ax = 0, какое значение будет содержать ax после выполнения инструкции "dec al"?
 0x0
 0xf0f0
 0xffff
 0xff00
 Процессор выведет ошибку на экран
 0x00ff
 0x0f0f
19. Какой размер адресной шины в 8086?
 36 бит
 64 бита
 16 бит
 32 бита
 20 бит
20. Какое значение будет находится в регистре ax после выполнения следующих команд?
20
clc
mov ax, ff00h
mov cl,4
rcl ax,cl
 f000h
 f00fh
 f007h
 700fh
21. Выберите правильные утверждения:
 ESI - индекс источника, EDI - индекс приемника
 ESP, EBP - сегментные адресные регистры
 EAX, EBX, ECX, EDX - регистры общего назначения
 CS, DS - сегментные адресные регистры
 EDI - индекс источника, ESI - индекс приемника
22. Удастся ли в 32-х битном защищённом режиме получить доступ к памяти
выше 4 ГиБ, если создать сегмент с базой большей нуля и пределом в 4
ГиБ?
 Да, но только при включенном PAE.
 Да, это сработает всегда.
 Да, но только при выключенном PAE.
 Нет, даже при включенной 36-битной адресации (PAE) все процессы по
прежнему смогут адресовать только 4 ГиБ.
5.2. Примерный перечень вопросов для проведения зачёта
Теоретическая часть
1)
2)
3)
4)
5)
6)
7)
8)
9)
Архитектура процессора Intel Pentium.
Сегменты, принцип сегментации памяти.
Использование стека.
Идентификаторы, переменные, метки, имена, ключевые слова.
Типы данных.
Директивы определения данных.
Структура программы на языке ассемблера.
Директива ASSUME и INCLUDE.
Сегментные регистры по умолчанию. Адресация.
21
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
Команды для работы со стеком.
Команды арифметического сложения ADD и ADC.
Команды арифметического вычитания SUB и SBB.
Команды умножения MUL и IMUL.
Команды деления DIV и IDIV.
Команды выполняющие логические операции.
Команды выполняющие операции сдвигов.
Команды сравнения и передачи управления.
Команды организации циклов.
Организация подпрограмм.
Практическая часть
1) Разработать программу преобразования строки в верхний регистр, вывести
строку на экран.
2) Разработать программу преобразования числа в двоичную форму представления, вывести число на экран.
3) Разработать подпрограмму вычисления факториала числа. Вывести результат на экран.
4) Разработать программу удаления во введённой строке пробелов, результат
вывести на экран.
5) Разработать программу определения чётности числа, результат вывести на
экран.
6) Разработать программу копирования символьных строк, заканчивающихся
нулём.
7) Разработать программу сцепления символьных строк, заканчивающихся нулём.
8) Разработать программу объединения целочисленных массивов.
9) Разработать программу сравнения двух символьных строк, заканчивающихся нулём. Программа должна выдавать один из следующих вариантов: равны, не равны, меньше, больше.
10) Разработать программу замены во введённой строке первых строчных букв
слов на прописные.
11) Разработать программу которая используя подпрограмму производит реверсирование элементов массива. Адрес массива и количество элементов в нём
передаётся в подпрограмму через стек.
12) Написать программу которая позволяет возводить целое число в целую степень и выводить результат на экран. Операцию возведения числа в степень
оформить в виде процедуры.
22
13) Разработать программу, которая используя подпрограмму находит количество чётных элементов в массиве чисел (двойных слов). Адрес первого элемента массива и количество элементов в нём передаётся в качестве параметров в подпрограмму через стек.
14) Разработать программу, которая используя подпрограмму находит
наибольший элемент в массиве чисел (двойных слов). Адрес первого элемента массива и количество элементов в нём передаётся в качестве параметров в подпрограмму через стек.
15) Разработать программу, которая используя подпрограмму находит количество чётных элементов массива чисел (двойных слов). Адрес первого элемента массива и количество элементов в нём передаётся в качестве параметров в подпрограмму через стек.
16) Разработать программу, которая используя подпрограмму находит количество слов в строке. Адрес первого символа строки передаётся в качестве параметров в подпрограмму через стек. Строка заканчивается нулевым байтом.
17) Разработать программу, которая заменяет в массиве чисел (двойных слов)
числа меньшие 100 на 0.
18) Разработать программу, которая заменяет в массиве чисел (двойных слов)
числа меньшие 100 на 0.
19) Разработать программу, которая осуществляет реверсирование строки, выводит результат на экран.
20) Разработать программу, которая осуществляет сложение двух однобайтовых
чисел в ASCII представлении.
21) Разработать программу, которая осуществляет деление двух чисел в ASCII
представлении.
22) Разработать программу, которая осуществляет сравнение массивов, содержащих числа с плавающей точкой.
23
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
Для обеспечения лекционных занятий по данной дисциплине требуется аудитория (желательно компьютерный класс) оборудованный современным мультимедийным оборудованием: видеопроектором (или интерактивной доской) подключенной к персональному компьютеру с установленным программным обеспечением представленным в таблице 1.
Для обеспечения лабораторно-практических занятий по данной дисциплине
необходимы компьютерный класс с выходом в Интернет и установленным программным обеспечением представленным в таблице 1.
Таблица 1. Необходимое программное обеспечение
Программное обеспечение
Описание
Системное программное обеспечение
Windows XP Professional
Операционная система семейства Windows NT
либо более поздней версии
корпорации Microsoft
(32-х битная)
Лицензионное прикладное программное обеспечение
Microsoft Office 2003 либо
Офисный пакет приложений для операционных
более поздней версии
систем Microsoft Windows. Обязательно наличие
в составе пакета Microsoft Word, Microsoft Excel,
Microsoft PowerPoint и Microsoft Visio.
Бесплатное прикладное программное обеспечение
Macro Assembler (MASM)
Ассемблер для процессоров семейства x86 для
версии не ниже 8.0 (32-х
написания программ для Windows
битный)
(http://www.masm32.com).
OllyDbg
Бесплатный проприетарный 32-битный отладчик
уровня ассемблера для операционных систем
Windows, предназначенный для анализа и модификации откомпилированных исполняемых файлов и библиотек, работающиx в режиме пользователя (http://www.ollydbg.de/).
24
RadASM
Бесплатная среда разработки программного
обеспечения для ОС Windows и не только, изначально предназначенная для написания программ
на языке ассемблера (http://radasm.cherrytree.at/,
http://www.oby.ro/rad_asm/ ).
25
7. СПИСОК ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ,
ДРУГИЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ
Основная литература
1. Крупник А. Б. Изучаем Ассемблер. – СПб.: Питер, 2005. – 249 с.
2. Магда Ю. С. Ассемблер для процессоров Intel Pentium. – СПб.: Питер.
2006. – 410 с.
3. Финогенов К. Г. Использование языка Ассемблера. Учебное пособие –
М.: Горячая Линия – Телеком, 2004. – 440 с.
4. Юров В. И. Ассемблер: учебник для вузов. 2-е изд. – СПб.: Питер, 2003. –
637 с.
5. Юров В. И. Ассемблер: практикум – СПб.: Питер, 2004. – 400 с.
Дополнительная литература
6. Галисеев Г. В. Ассемблер для Win 32. Самоучитель. – М.: Вильямс, 2007.
– 368 с.
7. Иванов В. Б. Программирование микроконтроллеров для начинающих.
Визуальное проектирование, язык C, ассемблер. – М: МК-Пресс, 2010. –
176 с.
8. Марек Р. Ассемблер на примерах – М.: Наука и техника, 2005. – 240 с.
9. Пильщиков В.Н. Assembler. Программирование на языке ассемблера IBM
PC.– М: Диалог-МИФИ, 2005. – 288 с.
10. Пирогов В. Е. Ассемблер для Windows. – СПб.: БХВ - Петербург., 2007.
— 896 с.
11. Пирогов В. Е. Ассемблер на примерах. – СПб.: БХВ - Петербург., 2005. —
416 с.
Базы данных, интернет-ресурсы,
информационно-справочные и поисковые системы
12. Википедия. Свободная энциклопедия. [Электронный ресурс]: Ассемблер
– Режим доступа: http://ru.wikipedia.org/wiki/ Assembler, свободный.
13. Касперски К. Сравнение ассемблерных трансляторов [Электронный ресурс] – Режим доступа: http://www.insidepro.com/kk/108/108r.shtml, свободный.
14. Официальный сайт MASM32 [Электронный ресурс] : [офиц. сайт] – Режим доступа: http://www.masm32.com/, свободный.
26
Download