Каждый современный человек, живущий в 21-ом веке, имеет возможность взаимодействовать с электронно-вычислительными машинами (ЭВМ) четвёртого поколения. На сегодняшний день, электроника добилась значительных результатов и продолжает двигаться в направлении совершенствования изделий и технологических процессов их изготовления. Однако существует ряд неразрешённых проблем, в число которых входит физический предел уменьшения размеров и увеличение плотности упаковки элементов интегральных схем, которые не позволяют перейти к ЭВМ пятого поколения. Но даже ЭВМ четвёртого поколения, базирующиеся на принципах фон Неймана, которые были заложены им в учение об архитектуре вычислительных машин в 1944 году, позволяют решать огромный спектр задач. Важной задачей в обучении является рассмотрение архитектуры ЭВМ и принципов работы микропроцессора.
В своём учебнике по информатике А.В. Могилев, Н.И. Пак и Е.К. Хеннер упоминают учебную модель ЭВМ «Е97», созданную Е.А. Ерёминым. Эта модель версий 1.1 и 1.2 разработана для MS DOS, а версия 2.1 для Windows в стадии разработки. Так как большая часть современных компьютеров работают под управлением операционной системы Windows, по нашему мнению, в процессе обучения удобнее использовать учебную модель ЭВМ «ЛамПанель» К.Ю. Полякова [3]. Данная программа моделирует виртуальную ЭВМ, которая имеет процессор, оперативную память (ОЗУ), постоянную память (ПЗУ) и устройство вывода — панель лампочек размером 8×16. Работу всех виртуальных элементов можно отследить в соответствующих областях окна программы, так, например, в окне данной программы отображается семь регистров, из которых четыре (R1, R2, R3, R4) можно использовать для обработки данных, и область с пронумерованными ячейками памяти ОЗУ.
Фон Нейман в 1945 году сформулировал основные принципы логической архитектуры в документе «Первый проект отчёта о EDVAC»: принцип однородности памяти, принцип адресности, принцип программного управления, принцип двоичного кодирования. Один из важных принципов — принцип однородности памяти, который заключается в том, что команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы. Распознать их можно только по способу использования; то есть одно и то же значение в ячейке памяти может использоваться и как данные, и как команда, и как адрес в зависимости лишь от способа обращения к нему. Это позволяет производить над командами те же операции, что и над числами [1]. Для рассмотрения принципа однородности памяти воспользуемся программой-тренажёром «ЛамПанель» и покажем способы размещения данных в памяти ЭВМ.
В ходе работы ЭВМ процессор обменивается информацией с памятью, обращаясь к ячейкам ОЗУ по их номерам (адресам). «Способы задания требуемых адресов в командах ЭВМ принято называть методами адресации» [2]. От выбора метода адресации и его вида зависит эффективность работы программы с данными, особенно если данные организованы в определённые структуры. Таким образом, если команда содержит в себе адрес, то мы имеем дело с прямой адресацией. Если команда содержит не сам адрес, а ссылается на регистр, в котором этот адрес храниться, то данный метод называется косвенной адресацией.
Разберём наиболее распространённые варианты ссылок на исходную информацию:
1. Данные находятся в одном из регистров микропроцессора (пример прямой адресации).
Занести данные в регистры процессора можно вручную до исполнения программы, открыв соответствующий регистр на редактирование данных, выбрав вкладку «Регистры» и указав его номер. А также разместить данные в регистрах можно в ходе исполнения программы, что представляется возможным благодаря специальным командам. За запись данных отвечает команда «mov», которая присваивает указанному значение заданному регистру, так, например, команда «mov 25, R0» записывает в регистр R0 число 25 в 16-ой системе счисления. Кроме записи числа в регистр, возможна запись данных из одного регистра в другой. Команда «mov R1, R0» присваивает регистру R0 данные, хранящиеся в регистре R1. «in» — команда, позволяющая прочитать значение одного из 8 портов ламповой панели в регистр. Пример: «in P1, R2» присваивает регистру R2 прочитанное из первого порта Р1 ламповой панели значение. И обратная «in» команда «out», отвечающая за вывод значения из указанного регистра в указанный порт («out R0, P3»).
2. Данные входят непосредственно в состав команды, т.е. размещаются после кода операции (пример непосредственная адресации).
Согласно принципу однородности памяти фон Неймана, данные размещаются в той же области памяти, что и программа (обычно сразу после команды «stop»). В тренажере «ЛамПанель» данные — это 16-битные слова (вводятся как числа в шестнадцатеричной системе счисления) или символьные строки, заключенные в двойные кавычки. Для размещения данных в памяти применяется команда «data» [3] (см. табл.1).
… | ; программа |
stop | ; стоп |
ddd: | ; метка начала блока данных |
data 1234 | ; слово 123416 |
data «ассемблер» | ; строка |
3. Данные находятся в ячейке ОЗУ, адрес которой содержится в одном из регистров микропроцессора (пример косвенной адресации).
Для того, чтобы работать с данными, хранящимися в памяти, нужно к ним обратиться. Для этого используется косвенная адресация — в регистре находятся не сами данные, а их адрес в памяти. Предположим, что в ячейке памяти с адресом 0050 находятся данные, чтобы к ним обратиться, поместим этот адрес в регистр R0 командой «mov 0050, R0» и запишем данные, хранящиеся по этому адресу в регистр R1 командой «mov (R0), R1», где «()» позволяют обратиться к содержимому регистра R0 не как к данным, а как к адресу памяти.
Ассемблер | Псевдокод |
mov @ddd, R0 swapb (R0) add 2, R0 swapb (R0) stop ddd: data 1234 data 5678 | R0 присвоить адрес метки ddd переставить байты слова по адресу ddd увеличить адрес на 2 (байта) переставить байты слова по адресу ddd + 2 стоп начало блока данных здесь будет 341216 здесь будет 785616 |
4. Данные находятся в ячейке ОЗУ, адрес которой вычисляется по формуле: «адрес = базовый адрес + смещение» (пример относительной адресации).
Рассмотрим пример программы, в котором происходит смещение базового адреса, хранящегося в регистре R0, на 2 (см. табл. 2).
Увеличивать адрес ячейки памяти с данными можно не только командой «add 2, (R0)» (добавить 2 к данным, хранящимся в по адресу, расположенному в регистре R0), но и следующим образом: «swapb (R0)+», где «+» — символ, позволяющий после перестановки байтов слова по адресу ddd добавить к адресу 2 автоматически, что сокращает объём программы.
Так, циклически изменяя адресную часть команды, можно обеспечить обращение к последовательным элементам массива данных. Более полезным является другое следствие принципа однородности, когда команды одной программы могут быть получены как результат исполнения другой программы. Эта возможность лежит в основе трансляции — перевода текста программы с языка высокого уровня на язык конкретной вычислительной машины.

Для проверки работоспособности учебной модели ЭВМ на различных алгоритмах были использованы задачи лабораторного практикума по информатике, разработанного коллективом авторов [1,2, 4-8]. В результате было установлено, что условия перехода, предлагаемые К.Ю. Поляковым, следует применять в следующих случаях (см. рис.1). Для подтверждения данного вывода был проведен эксперимент по определению значений младших битов регистра состояния процессора PS (см. рис.2), который позволил еще раз уточнить условия выполнения команды сравнения CMP [11-17, 22-26].

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

Таким образом, в ходе проведенных исследований было установлено, что учебная модель К.Ю. Полякова «ЛамПанель» в целом соответствует принципам фон Неймана, и применение ее позволяет наиболее эффективную организацию и проведение лабораторных работ (см. Практикум по информатике, Могилев А.В. и др.) при изучении дисциплины «Архитектура персонального компьютера» в педагогическом ВУЗе, создает условия успешного и творческого использования ее на занятиях в школах учителями информатики, а также способствует организации и проведению олимпиад по программированию на языке «Ассемблер» [2, 4, 27-31].