Формулировка и план сдачи заданий по курсу "Основы системного программирования" 9 сентября 2005 года Лектор: Богоявленский Юрий Анатольевич Эл. почта: ybgv@cs.karelia.ru Инструктор: Богоявленская Ольга Юрьевна Эл. почта: olbgvl@cs.karelia.ru Инструктор: Бородина Александра Валентиновна Эл. почта: musen@cs.karelia.ru Инструктор: Бородин Александр Владимирович Эл. почта: aborod@cs.karelia.ru Инструктор: Крышень Михаил Александрович Эл. почта kryshen@cs.karelia.ru Инструктор: Чуйко Юлия Васильевна Эл. почта: chuiko@cs.karelia.ru Задания оцениваются по пятибалльной шкале. В том случае, если студент сдал задание по истечении срока, он получает 0 (ноль) баллов. Если хотя бы одно задание не сдано (даже на ноль), то студент не допускается к сдаче зачета. Задача должна быть сдана на занятии *до* срока, указанного в графике. Критериями оценки являются следующие факторы: 1) соответствие выполненного задания требованиям; 2) структурирование текста программы; 3) наличие комментариев; 4) демонстрация культуры и грамотности при написании комментариев; 5) уникальность программы (отличие от программ коллег). Распределение времени выполнения заданий по занятиям и дополнительные требования при сдаче: 1. Изучить распечатку 1 (посмотреть как работает: что делает, как делает). Дата сдачи: 2.10 (9.10, если до 2.10 было только одно практическое занятие) 2. Изучить распечатку 2. Сделать выход из программы по примеру программы 1. Найти ошибку и исправить ее. /умение работать с системой Turbo Debugger/ Дата сдачи: 30.10 3. Изучить распечатку 3. Написать недостающие комментарии. Дата сдачи: 13.11 4. Изучить распечатку 4. Сделать контроль переполнения элементов массива. Уметь работать с окнами Inspect, Watches, Variables. Объяснить отличие символа "0" от значения 0. /знание справочных систем Norton Guides, TechHelp, TurboHelp/ Дата сдачи: 27.11 5. С использованием программ 3 и 4 разработать программу, которая суммирует произвольное количество одноцифровых чисел. При получении символа "@" суммирование прекращается и сумма выводится на экран. Сумма должна накапливаться в машинном слове. Сделать контроль переполнения. Дата сдачи: 11.12 Влияние баллов на получение отметки "зачтено": меньше 15 баллов - студент не допускается к сдаче зачета, 15-20 баллов - обычный режим, 20-25 баллов - студент получает привилегии при сдаче зачета, которые определяются лектором. II семестр 6. На основе программы 5 сделать программу суммирования многоцифровых чисел. Контроль слагаемых и переполнения. В случае возникновения переполнения необходимо сообщить о нем, вывести слагаемое, которое привело к переполнению, вернуться к сумме, которая была до переполнения и продолжить работу программы, то есть выход должен быть только по команде выхода. Дата сдачи: 11.03 7. Выполнить 6-е задание в технике подпрограмм (как минимум - две). Многоцифровые числа могут быть отрицательными. В подпрограммах должны быть реализованы передача параметров и возвращение значений в стиле соглашений о совместной трансляции языков Си и Ассемблер. Примечание: это задание можно выполнять только после сдачи программы, приведенной на лекции (передача параметров через стек с использованием соглашений о связях в стиле Си) или на примере своей 7-й, использующей ту же технику. Необходимо рассказать, как работают со стеком команды PUSH, POP CALL, RET. Что означает [BP+4], что хранится по адресам [BP+0], [BP+2] в подпрограммах. Показать данные в стеке в окне CPU Turbo Debugger'а. Только после этого можно перейти к Заданию 7. Дата сдачи: 22.04 8. Выполнить 7-е задание с помощью техники раздельной компиляции (PUBLIC/EXTRN или GLOBAL). Необходимо реализовать раздельную трансляцию кода и данных. Минимальное количество файлов для модулей - 3 (три). Для компиляции предпочтительна технология make, допустимо использование командных файлов. Дата сдачи: 20.05 Дополнительные задания. С раздельной компиляцией, несколькими процедурами. /Выполняются при досрочной сдаче обязательных 8 заданий/ 9. Заданы три массива чисел, каждое из которых хранится в машинном слове (спросить их размер и ввести ли значения с клавиатуры или сгенерировать их псевдо-случайно). Для каждого найти наибольшее и наименьшее значения в знаковой и беззнаковой интерпретациях. Вывести массивы на экран, чтобы можно было увидеть найденные числа. Размер массива ограничить количеством чисел, помещающихся в экран. 10. Стыковка модулей, написанных на языке Ассемблера, с модулями на языке Си. Задачу согласовать с преподавателем. Влияние баллов на получение отметки "зачтено": меньше 9 баллов - студент не допускается к сдаче зачета, 9-14 баллов - обычный режим, 14-15 баллов - студент получает привилегии при сдаче зачета, которые определяются лектором. Литература 1. Богоявленский Ю. А., Печников А. А., Дьяконов М. В. Центральные процессоры персональных ЭВМ 2. Богоявленский Ю. А., Печников А. А., Дьяконов М. В. Язык ассемблера 3. Пильщиков В. Н. Программирование на языке ассемблера для IBM PC 4. Белецкий Я. Турбо Ассемблер. Версия 2.0 PS Команды для получения из текста программы на языке Ассемблер (pr.asm) выполняемого файла (pr.exe), для студентов не имеющих учетной записи на студенческом сервере (команды актуальны для 341 дисплейного класса) компиляция (asm -> obj) D:\bc\bin\tasm.exe -zi pr сборка (obj -> exe) D:\bc\bin\tlink.exe -v pr запуск отладчика D:\bc\bin\td.exe pr