ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ 
ИНСТИТУТ ИНФОРМАТИЗАЦИИ ОБРАЗОВАНИЯ РАО
АДМИНИСТРАЦИЯ ГОРОДСКОГО ОКРУГА ТРОИЦК В ГОРОДЕ МОСКВЕ 
РЕГИОНАЛЬНЫЙ ОБЩЕСТВЕННЫЙ ФОНД НОВЫХ ТЕХНОЛОГИЙ В ОБРАЗОВАНИИ «БАЙТИК»
АНО «ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ В ОБРАЗОВАНИИ» 
 XXV МЕЖДУНАРОДНАЯ КОНФЕРЕНЦИЯ
 «ПРИМЕНЕНИЕ НОВЫХ ТЕХНОЛОГИЙ В ОБРАЗОВАНИИ»  
«ИТО-Троицк-2014»
25-26 июня 2014 года, г.Москва, г.о. Троицк

НЕКОТОРЫЕ АСПЕКТЫ ПРОФИЛЬНОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

Авторы: Герасименко Николай Иванович, Кандидат физико-математических наук, Доцент, Герасименко Лариса Алексеевна
ГАОУ Центр образования "Царицыно"
Обсуждается возможность создания свободно распространяемого учебного эмулятора процессора х86. Приводятся требования к подобному программному продукту.

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

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

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

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

Так для изучения принципов базовой архитектуры Фон Неймана нами в течение ряда лет использовалась утилита Debug, встроенная во все 16 и 32 битные версии Windows. Эта утилита представляет собой простейший отладчик, позволяющий контролировать состояние регистров процессора в процессе пошагового выполнения программы, ассемблировать и дизассемблировать небольшие программные модули, используя абсолютную адресацию, что значительно упрощает изучение тем «массивы» и «указатели». К сожалению, эта утилита исчезла из 64 битных версий Windows, как и положено принципиально 16 битной программе. Безусловно, остается возможность импортировать эту утилиту в современные версии Windows, используя, например, свободно распространяемую оболочку DosBox. Однако такие попытки неизбежно вступают в конфликт с лицензионной политикой Microsoft.

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

По-видимому, наиболее простым решением в сложившейся ситуации является создание специализированного учебного эмулятора процессоров 086 — 386. Такой эмулятор должен:

1.        Позволять набирать и пошагово интерпретировать команды соответствующих процессоров, как в бинарном представлении, так и с использованием мнемокодов в стиле МА;

2.     Иметь возможность вводить с клавиатуры и размещать по заданному числовому адресу, как отдельные числа, так и числовые или символьные массивы;

3.        Давать возможность выводить на экран дамп отдельных участков памяти  в шестнадцатеричном, десятичном или символьном формате. При этом должна быть предусмотрена интерпретация целых чисел и символов, знаковых или беззнаковых, по желанию пользователя;

4.        В процессе интерпретации выводить на экран (желательно в виде отдельного окна) состояние всех регистров общего назначения и сегментных регистров. Группы регистров должны визуально разделяться.

5.      Отдельно выводить содержимое регистра IP. Такой вывод позволяет учащимся неформально разобраться с основами архитектуры Фон Неймана и является неоценимым при изучении условных и циклических алгоритмов;

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

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

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

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

Список использованных источников
  1. 1. Дональд Э. Кнут Искусство программирования. Третье издание. — М.: Издательский дом «Вильямс», 2009
Вид представления доклада  Публикация
Уровень  Дополнительное образование детей
Ключевые слова  эмулятор, процессор х86, архитектура Фон Неймана,

В статусе «Черновик» Вы можете производить с тезисами любые действия.

В статусе «Отправлено в Оргкомитет» тезисы проходят проверку в Оргкомитете. Статус «Черновик» может быть возвращен тезисам либо если есть замечания рецензента, либо тезисы превышают требуемый объем, либо по запросу участника.

В статусе «Рекомендован к публикации» тезис публикуется на сайте. Статус «Черновик» может быть возвращен либо по запросу участника, либо при неоплате публикации, если она предусмотрена, либо если тезисы превышают требуемый объем.

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

Статус «Отклонен» означает, что по ряду причин, которые указаны в комментариях к тезису, Оргкомитет не может принять тезисы к публикации. Из отклоненных тезис в «Черновики» может вернуть только Председатель программного или председатель оргкомитета.