Навіщо це потрібно?
Це ефективний інструмент навчання для тих, хто хоче познайомитися з мовою програмування Assembler. Але не знає, з чого почати. Тут "все в одному флаконі."
Це цікава іграшка для "справжніх програмістів". До яких відносяться так-же "діти", кому зараз вже тільки за 60. Але які пам'ятають і LGP-30, і Altair 8800, і PDP-11. І кому, ми сподіваємося, ця іграшка принесе задоволення.
Це просто дуже корисна логічна іграшка - головоломка. З якої Ви не дарма витрачаєте Ваш час. Тут Ви вирішуєте реальні завдання, які у часи появи обчислювальної техніки реально вирішували "справжні програмісти". І які дуже часто були справжнім викликом професіоналізму. Попутно Ви придбаєте навички програмування на Assembler. І освіжаєте у Вашій пам'яті Ваші старі знання з області математики.
чи потрібно вивчати Assembler?
У мережі досі ведеться багато розмов на тему "чи потрібно вивчати Assembler"? Більшість авторів наводить такі аргументи на користь цієї ідеї:
Assembler досі використовується для програмування різних пристроїв на мікроконтролерах. Яких дуже багато. По-кільки саме Assembler дозволяє максимально ефективно розпоряджатися всіма апаратними ресурсами таких пристроїв.
Assembler досі використовується для оптимізації програм, які написані на мовах більш високого рівня.
Досвід роботи на Assembler дає розуміння того, як саме відбувається "магія". Яка "перетворює" в "живий" інтелектуальний комп'ютер "залізо", яке "вміє" працювати тільки з бінарними числами, нулями і одиницями.
ПридбатиНазад у минуле
На щастя, серед нас залишилося ще багато тих унікальних інженерів і програмістів, завдяки яким стали можливими і польоти на Місяць, і створення перших обчислювальних машин. А за тим і перших мікропроцесорів. Залишилися люди, які вирішували завдання за допомогою цієї техніки. Найперші обчислювальні машини мали обмежені ресурси. Тому рішення задач з їх допомогою не рідко ставало справжнім інженерним подвигом.
Часто від цих людей можна почути ще один аргумент. "Так, на рівні сучасного розвитку обчислювальної техніки, звичайно можна вирішувати дуже складні завдання. Але Ви спробуйте вирішити їх в умовах обмежених обмежених ресурсів. Як це робили ми". І ми ставимося з глибокою повагою до заслуг і безцінному досвіду цих інженерів.
У цій програмі ми постаралися поєднати атмосферу і особливий шарм перших обчислювальних машин з навчальним інструментом, завдяки якому Ви можете отримати навички роботи з мовою Assembler. При цьому Вам надається можливість працювати в жорстких умовах обмежених ресурсів, в яких і доводилося працювати "справжнім програмістам".
ENIAC (Електричний цифровий інтегратор і комп'ютер) був створений в 1946 році. Дідусь сучасних комп'ютерів був 5,50 метра у висоту і 25 метрів в довжину, важив близько 30 тонн і займав площу 180 м². Він складався з 70000 резисторів і приблизно 18000 вакуумних ламп. І споживав не менше 200 кВт. Комп'ютер був виготовлений на замовлення армії США для використання в лабораторії балістичних досліджень. ENIAC був менш потужним, ніж нинішні калькулятори.
Чому калькулятор?
Ми назвали цю програму "калькулятор". Тому що зовні вона нагадує старий програмований калькулятор. Але, Ви не побачите тут звичного табло з арабськими цифрами. Замість цього Ви бачите ряди індикаторів. Які відображають значення регістрів (регістр результату, регістр вхідних даних і регістр лічильника адреси). Точно так, як це було у перших комп'ютерах, на зорі обчислювальної техніки.
Калькулятор представляє собою віртуальну обчислювальну машину з архітектурою фон Неймана. У вашому розпорядженні перебувають такі ресурси:
8-розрядний процесор, який має 8-розрядний акумулятор, а так-же відображаються на пам'ять 8-розрядні регістри: лічильник команд; регістр вхідних даних; регістр вихідних даних; покажчик стека і регістр прапорів.
Обсяг пам'яті 256 байт (точно так-же, як це було в перших версіях Altair 8800).
Система команд, що досить добре розвинена, і складається з 73 команд. З командами можна познайомитися на окремій сторінці >>>
Можливості калькулятора
Встановлення
адреси елементу
пам'яті
Запис будь-якого байта
в будь-який елемент
пам'яті
Зчитування будь-якого байта
з будь-якого елементу
пам'яті
Виконання програми,
що написана на мові
Assembler
Пошагове виконання
програми у режимі
налагодження
Збереження або завантаження
програми, що написана на
мові Assembler
Насправді можливості калькулятора дещо ширше. Призначення кнопок і інструкція роботи з ним розміщені на окремій сторінці >>>
Деякі люди можуть сказати нам, що потрібно бути трохи божевільними, що б намагатися працювати з такими обмеженими ресурсами. Але в цьому божевіллі ми бачимо геніальність, - спробуйте перенестися в часи перших комп'ютерів і хоча б частково опинитися в умовах обмежень, в яких справжні програмісти примудрялися вирішувати досить складні завдання.
ПридбатиЧому наша віртуальна машина має 8-ми розрядний процесор? Так, в старі часи були обчислювальні машини, які працювали зі словами з різною кількістю кількістю розрядів. Але, в результаті еволюції, зараз мікроконтролери, і мікропроцесори мають розрядність, кратну 8. Крім того, в повсякденному житті Ви постійно зустрічаєте нащадків 8-ми розрядного Intel 8080. Який використовувався в "дідуся" сучасних PC - Altair 8800.
Чому ми вибрали обсяг пам'яті саме 256 байт? Це дозволило нам оперувати тільки байтами в адресації елементів пам'яті адресного простору. Це спрощує систему команд і знайомство з Assembler. І полегшує новачкові придбання навичок роботи з ним. По-кільки залишає "за кадром" особливості адресації пам'яті більшого об'єму. Наприклад таких, що реалізовані у 16-ти розрядному Intel 8086. Про які багато Chechako ризикують зламати зуби. І що може бути причиною того, що б частину новачків відмовилася від ідеї вивчати Assembler. І крім того. Не забувайте, що у багатьох перших машин не було такої "розкоші" як 256 байт пам'яті ОЗУ. Так що, в даному випадку, будемо вважати, що Вам ще дуже пощастило.
У 80-х роках обчислювальні машини займали окремі поверхи будівель. На зміну не надійним і споживають багато енергії лампам прийшли транзистори. Програмісти зберігали свої програми на перфокартах і перфострічках.
Демонстрація роботи процесора
Крім того. Значення, які містяться в 256 осередків пам'яті можна відобразити у вигляді матриці 16х16 або 8х32. Що дозволяє зробити калькулятор не тільки простим і доступним для вивчення, але "живим". І відстежувати, як саме змінюються значення елементів пам'яті в процесі виконання програми. Що дуже стане в нагоді, наприклад, у тому випадку, якщо Ви хочете наочно пояснити школяреві то, як працює мікропроцесор.
Відображення елементів пам'яті допомагають відслідковувати, як саме змінюються значення в них, в процесі виконання програми. Це стане в нагоді, наприклад, в тому випадку, якщо Ви хочете наочно пояснити школяреві те, як саме працює мікропроцесор.
Ми отримали дуже наочну демонстрацію того, як саме працює процесор. Користувачі можуть оперативно бачити вміст кожного елементу пам'яті. І змінити вміст елементу пам'яті. Ми можемо спостерігати, як змінюється вміст регістрів і пам'яті у процесі виконання команд. Крім того, користувачеві надано зручний інструмент для налагодження програм.
Користь обмежень
У кращі часи у "справжніх програмістів" не було такої розкоші як клавіатура та дисплей, на якому ви могли подивитися вміст елементів пам'яті. Що б краще відчути ті обмежені можливості пристроїв введення-виведення, з якими вони працювали, Ви спробуйте не використовувати вкладку "Display", а працювати безпосередньо з інформацією, яка відображається на лампочках індикаторів. "Display" - це розкіш, яка з'явилася набагато пізніше.
У багатьох сучасних комп'ютерах, включаючи серію PC, для запису чисел у бінарному вигляді прийнятий порядок запису розрядів (зліва на право) від старших бітів до молодших. З цього нам довелося змінити порядок проходження клавіш від 0 до 7 на клавіатурі нашого калькулятора. Для того, що б кожна з них була розташована безпосередньо під тим індикатором біта, значення якого вона змінює.
Відображення стану елементів пам'яті і регістрів в Assembler Trainer
Система команд
Система команд досить розвинена, і містить 74 команди. Які умовно розбиті на групи:
Детально з системою команд можна познайомитися на сторінці >>>
Так, система команд досить розвинена. Багатьом "справжнім програмістам" було доступна лише пару - трійку десятків найпростіших команд. Які "вміли" виконувати перші обчислювальні машини. Але, для повноти відчуттів, ніхто не забороняє користувачеві використовувати лише частину з цієї системи команд. Так набагато цікавіше.
Та й початківцю тут цілком достатньо знати лише частину команд, для того, що б почати писати свої перші програми на Assembler. Не обов'язково знати всі команди. Тим більше, що під рукою завжди є кнопка "Help View".
Крім того, в розділі "команди введення / виводу" ми реалізували команди роботи з клавіатурою. У "справжніх програмістів" цих можливостей не було. Але ми свідомо пішли на цей крок, для того, що б зробити наш калькулятор інтерактивним. І дати Вам більше можливостей в реалізації Ваших власних ідей.
Добра база для подальшого зростання
Ми навмисне пішли на надання користувачеві розширеної системи команд. По-кільки ці або схожі команди Ви зустрінете у всіх сучасних мікроконтролерах і мікропроцесорах. А одним із завдань нашої іграшки якраз і є навчання користувача з мовою Assembler, і придбання базового досвіду роботи на низькому апаратному рівні. На підставі якого Ви в майбутньому зможете освоїти будь-який сучасний мікроконтролер. Адже базові принципи їх роботи залишаються незмінними.
У реальному житті Ви зустрінете команди, які в описах різних мікроконтролерів будуть називатися по різному. Але вони будуть виконувати по-суті одні і ті ж операції. Ви напевно зустрінете команди роботи з внутрішніми регістрами процесора, а не тільки з акумулятором (як це реалізовано тут). Ви зустрінете більш складні схеми і команди адресації, далеко перевершують межа в 256 байт, що забезпечують 8 розрядів. Ви зустрінете багато команд роботи з апаратним ресурсами, яких багато в складі сучасних мікроконтролерів.
Але досвід роботи з нашою програмою дозволить Вам впевнено піти далі. І освоїти програмування будь-якого сучасного мікроконтролера. Цілком ймовірно, що програми, які Ви реалізували за допомогою нашого калькулятора, можуть бути адаптовані для реалізації Ваших завдань на інших контролерах. Чому б і ні? Адже вони вже налагоджені Вами і працюють для 8-ми розрядної віртуальної машини. І при цьому займають маленький обсяг пам'яті. Принцип роботи цифрових пристроїв залишається незмінним.
Працювати на Assembler
Відображення програми на мові Assembler в Assembler Trainer (версія для мобільних пристроїв)
Калькулятор дозволяє відображати послідовність команд на мові Assembler (в мобільній версії додатка за це відповідає спеціальна закладка "Asm").
Не забувайте, що це - розкіш. Справжні програмісти працювали з вмістом пам'яті за допомогою олівця, паперу, тумблерів і індикаторів. І в кращому випадку, мали роздруківки з кодами програм.
ПридбатиСпробуйте Assembler
Ми сподіваємось, що школярам і студентам наш калькулятор буде цікавий. І корисний для розуміння Assembler і придбання досвіду роботи на низькому рівні. Ми постаралися створити зручний інструмент, в якому "все під рукою", і який дозволяє зосередиться і поламати голову над виконанням реальних завдань в умовах обмежених ресурсів. І попутно освіжити в пам'яті деякі знання з області алгоритмів і математики. А "дітям" старшого віку ця іграшка просто принесе задоволення.
Написати на Assembler не тільки ігрову інтерактивну програму, програму вилучення квадратного кореня або тригонометричної функції - це справжній виклик. Чи не так? А "справжні програмісти" вирішували ці завдання в великій кількості. І завдяки їх інженерного подвигу люди побували на Місяці. Ви зможете повторити хоча б частину з цього?
Придбати калькулятор
Для того, щоб якомога більше охочих змогли використати наш Калькулятор, ми постаралися випустити його версії для різного виду пристроїв, від смартфонів і планшетів до PC. В найближчому часі вони будуть доступні для придбання на таких майданчиках:
Для того, щоб придбати калькулятор перейдіть на сайт одного з вказаних вище торгових майданчиків