Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Малютка: ассемблер

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

Все же, нельзя не согласиться, что в написании программ для "Малютки" есть один неприятный и не слишком творческий момент: необходимо перед началом работы распределять память и постоянно помнить систему команд.

Работа, безусловно, рутинная. То есть, не требующая ни ума, ни фантазии. И древние Настоящие Программисты нашли способ ее механизировать. К сожалению, жили они в заморской стране, и привнесли в свою разработку национальный колорит, который мы сейчас будем вынуждены расхлебывать.

Итак, на плечи самой машины было решено взвалить распределение памяти. Кроме того, значительно приятнее вместо непонятных цифирок 00A написать слово "сложи" или "add". Стало быть, машину неплохо бы заставить понимать некоторые слова, обозначающие команды. Это называется мнемоническим сокращением команд.

Оценить мнемонические сокращения в полной мере вам вряд ли удастся. Во-первых, команд в "Малютке" не так много, и можно чудненько выучить их наизусть, а во-вторых, все мнемоники англоязычные (обещанный национальный колорит).

В больших машинах процессор имеет до двух сотен команд, англоязычные же мнемоники выучиваются ничуть не хуже русских. Добавьте ко всему этому возможность одним словом определить сразу нескольно команд (это называется макроопределением и подробно описывается в книжке "Основы Алгоритмизации"), и вы поймете, почему почти никто в мире не пишет в машинных кодах.

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

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

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

Давайте, для примера, рассмотрим Ассемблер СМ "Малютка".

Начнем, как обычно, с программы, умножающей 2 на 2.

 DVA: dw 02       ;  - назвали ячейку DVA и записали туда 2;
 ENT              ;  - начало программы;
      LDA   (DVA) ;  - загрузили DVA в сумматор (команда 0..);
      МULT  (DVA) ;  - умножили DVA на сумматор ( B .. );
      IPRT        ;  - печать ( C00 );
      HLT         ;  - останов машины ( F00 ).

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

Для того, чтобы эта программа заработала, необходимо запустить транслятор, который переведет ее в небезызвестные вам коды "Малютки", загрузить эти коды в "Малютку", а уж затем выполнять. Процедурка немного утомительная, но тоже вполне автоматизируемая.»

Продолжение


© А.И.Сенокосов, А.Г.Гейн, 1995
Цитируется по книге Сенокосов А.И., Гейн А.Г. "Информатика 8-9" с разрешения авторов
© Оформление Web-страницы Е.А.Еремин, 2010


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting