Калькулятор, программируемый на Ассемблере

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

Купить

Зачем это нужно?

0

Это эффективный инструмент обучения для тех, кто хочет познакомиться с языком программирования Assembler, но не знает, с чего начать. Здесь "все в одном флаконе".

1

Это занятная игрушка для "настоящих программистов" и для тех, кто еще помнит LPG-30, Altair 8800 и PDP-11. Мы надеемся, что эта игрушка доставит им удовольствие.

2

Это просто - полезная логическая головоломка, с которой вы не зря потратите время. Здесь вы можете решать реальные задачи, которые на заре вычислительной техники реально решали "настоящие программисты". Очень часто они были настоящим вызовом профессионализму. Попутно вы приобретаете навыки программирования на Assembler и освежаете в памяти ваши старые знания из области математики.

нужно ли изучать Assembler?

В cети до сих пор ведется много разговоров на тему "нужно ли изучать Assembler"? Большинство авторов приводит следующие аргументы в пользу этой идеи:

Assembler до сих пор используется для программирования множества устройств на микроконтроллерах. Поскольку именно Assembler позволяет максимально эффективно распоряжаться всеми аппаратными ресурсами таких устройств.

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

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

Купить

Назад в прошлое

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

Часто, от этих людей можно услышать еще один аргумент: "Да, на уровне современного развития вычислительной техники можно решать очень сложные задачи. Но вы попробуйте решить их в условиях ограниченных ресурсов, как тогда делали мы". И мы относимся с глубоким уважением к заслугам и бесценному опыту этих инженеров.

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

ENIAC

ENIAC (Электрический цифровой интегратор и компьютер) был создан в 1946 году. Дедушка современных компьютеров был 2,4 метра в высоту и 30 метров в длину, весил около 30 тонн и занимал площадь 167 м². Он состоял из 70000 резисторов и приблизительно 20000 вакуумных ламп, и потреблял не менее 150 кВт электроэнергии. Компьютер был изготовлен по заказу армии США для использования в лаборатории баллистических исследований. ENIAC был менее мощным, чем нынешние калькуляторы.

Почему калькулятор?

desktop

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

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

icon Архитектура

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

icon Память

Объем памяти 256 байт (столько же имели первые версии Altair 8800).

icon команды

Система команд, достаточно хорошо развита и состоит из 75 команд. С системой команд можно познакомиться на отдельной странице >>>

Возможности калькулятора

Установка
адреса ячейки
памяти

Запись любого байта
в любую ячейку
памяти

Чтение любого байта
из любой ячейки
памяти

Создание и выполнение
программы, написанной
на языке Assembler

Пошаговое выполнение
программы в режиме
отладчика

Сохранение или загрузка
программы, написанной на
языке Assembler

На самом деле возможности калькулятора несколько шире. Назначение кнопок и инструкция работы с ними содержаться на отдельной странице >>>

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

Купить

Почему наша виртуальная машина имеет 8-разрядный процессор? В прежние времена были вычислительные машины, которые работали со словами с разным количеством разрядов. Но, в результате эволюции, современные микроконтроллеры и микропроцессоры имеют разрядность, кратную 8. Кроме того, в повседневной жизни вы постоянно встречаете внуков и правнуков 8-разрядного Intel 8080, который использовался в "дедушке" современных PC - Altair 8800.

Почему мы выбрали объем памяти в 256 байт? Это позволило нам оперировать только байтами в адресации ячеек памяти адресного пространства. Это упрощает систему команд и знакомство с Assembler, а также облегчает для новичков приобретение навыков работы с ним. Мы оставили "за кадром" особенности адресации памяти большего объема. Например такие, которые реализованы в 16-разрядном Intel 8086. О которые многие Chechako рискуют сломать зубы и в итоге отказаться от идеи изучать Assembler. И, кроме того... Не забывайте, что у многих первых машин не было такой "роскоши" как 256 байт памяти ОЗУ.

ENIAC

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

Демонстрация работы процессора

ASTRA-256 дает наглядную демонстрацию того, как именно работает процессор. Мы можем оперативно видеть содержимое каждой ячейки памяти. Это позволяет сделать калькулятор не только простым и доступным для изучения, но и "живым".

Значения, которые содержаться в 256 ячейках памяти можно представить в виде матрицы 16х16 или 8х32. Отображение ячеек памяти помогает отслеживать, как именно изменяются их значения в процессе выполнения программы. Мы можем сами изменить содержимое ячейки памяти. Мы видим как изменяется содержимое регистров и ячеек памяти в процессе выполнения команд. Это очень пригодится, например, в том случае, если вы хотите наглядно объяснить школьнику, как работает микропроцессор.

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

Польза ограничений

В старые времена у "настоящих программистов" не было такой роскоши как клавиатура и дисплей, на котором вы могли бы видеть содержимое ячеек памяти. Чтобы лучше почувствовать ограниченные возможности устройств ввода-вывода, с которыми они работали, попробуйте не использовать вкладку "Display", а работать непосредственно с информацией, которая отображается на лампочках индикаторов.

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

desktop

Отображение состояния ячеек памяти и регистров в Astra-256

Купить

Система команд

Система команд достаточно развита, и содержит 75 команд, которые условно разбиты на группы:

Подробно с системой команд можно познакомиться на странице >>>

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

Начинающему программисту здесь вполне достаточно знать только часть команд для того, чтобы написать свои первые программы на Assembler. Тем более, что под рукой всегда есть кнопка "Help View".

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

хорошая база для дальнейшего роста

Мы решили предоставить пользователю расширенную систему команд, поскольку эти или похожие команды вы встретите во всех современных микроконтроллерах и микропроцессорах. ASTRA-256 позволяет приобрести навыки программирования и базовый опыт работы на низком аппаратном уровне. На этом основании в будущем вы легко сможете освоить любой современный микроконтроллер, ведь базовые принципы их работы остаются неизменными.

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

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

работа на assembler

desktop

Отображение программы на языке Assembler в ASTRA-256

Калькулятор позволяет отображать последовательность команд на языке Assembler (в мобильной версии приложения за это отвечает специальная закладка "Asm").

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

Купить

попробуйте assembler

Мы надеемся, что наш калькулятор будет интересен школьникам и студентам, и полезен для приобретения понимания Assembler. ASTRA-256 - удобный инструмент, в котором "все под рукой". Он позволяет поломать голову над выполнением реальных задач в условиях ограниченных ресурсов.

Напишите на Assembler игровую интерактивную программу, программу извлечения квадратного корня или тригонометрической функции - это настоящий вызов. И, кто знает? Возможно, вы станете следующим настоящим программистом, который отправит человека на Луну.

Купить калькулятор

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

steam
google play Скоро...
itch Скоро...
app-store Скоро...

Для покупки Калькулятора перейдите на сайт одной из торговых площадок