Еволюція засобів проектування програм протягом останніх десятиліть здатна здивувати будь-яку людину, програмного забезпечення, що займається розробкою. Особливо це стосується написання програм для операційних систем сімейства Windows. Сучасні інструментальні засоби настільки розвинені, що розробник програмного забезпечення може отримати готову програму за допомогою декількох клацань. Величезна кількість книг, статей і початкових текстів програмної коди присвячено проектуванню програм на Pascal, Basic і інших мовах програмування. Мова низького рівня — мова асемблера — після смерті" MS-DOS, здавалося, доживає останні дні. Але всупереч прогнозам він не зійшов з арени і продовжує вельми широко використовуватися при розробці програм. У чому ж секрет живучості цієї мови? Відповідь досить проста і може бути сформульований однією пропозицією: мова асемблера — це мова, на якій "говорить" процесор, і зникнути він може тільки разом із зникненням процесорів! З цієї ж причини асемблер має одну фундаментальну перевагу перед мовами високого рівня: він найшвидший. Більшість додатків, що працюють в режимі реального часу, або написані на асемблері, або використовують в критичних ділянках коди асемблерні модулі. Нерідко можна чути твердження про те, що процес розробки програм на мові асемблера дуже трудомісткий і віднімає масу часу. Ще однією перешкодою для роботи з асемблером рахують його складність. І, нарешті, як аргумент приводиться твердження, що розробка додатків на асемблері сильно утруднена через відсутність сучасних інструментальних засобів для проектування і відладки. Такі твердження, взагалі-то, не відповідають дійсності. Мова асемблера не складніше за інші мови програмування і досить легко освоюється як досвідченими, так і початкуючими програмістами. Крім того, останніми роками з'явилися дуже могутні інструментальні засоби розробки програм на асемблері, і це вимушує по-іншому поглянути на процес розробки програм на цій мові. Серед таких інструментальних засобів проектування можна назвати макроасемблер
Можна повністю покластися на компілятор ("все зроблено до нас"), який згенерує для вас оптимальний код, і взагалі не займатися поліпшенням якості програми. При цьому у цілому ряді випадків може і не знадобитися ніяких доопрацювань і поліпшень. Наприклад, при створенні невеликих офісних застосувань або утиліт тестування мережі оптимізація зазвичай не потрібна. Проте в більшості випадків обійтися без ручної оптимізації і покладатися тільки на стандартні можливості компіляторів не можна. З проблемою поліпшення продуктивності, хочете ви цього чи ні, вам неминуче доведеться зіткнутися при розробці більш менш серйозних застосувань, наприклад баз даних, будь-яких клієнт-серверних або мережевих застосувань, причому оптимізуючий компілятор того середовища, в якому ви працюєте, в більшості випадків значного виграшу вам не забезпечить. Якщо програміст розробляє програми, що працюють в реальному часі, такі як драйвери пристроїв, системні служби або промислові застосування, то без дуже серйозної роботи по ручному доведенню коди до оптимальної продуктивності завдання написання програми просто не буде виконано. І справа тут не в тому, що засоби розробки недосконалі і не забезпечують того рівня оптимізації, якою від них вимагається. Будь-яка більш менш серйозна програма має стільки взаємозв'язаних параметрів, що жоден засіб розробки не поліпшить її так, як це може зробити сам програміст. Процес оптимізації програм схожий швидше мистецтву, чим "чистому" програмуванню, і важко піддається алгоритмізації. Поліпшення продуктивності програм — процес зазвичай трудомісткий, такий, що займає значну частину часу. Хочеться відзначити, що не існує єдиного критерію оптимізації. Більш того, сам процес оптимізації досить суперечливий. Наприклад, якщо добитися зменшення об'єму пам'яті використовуваного програмою, то за це доведеться розплатитися втратою швидкодії роботи програми. Жодна програма не може бути одночасне надшвидкою, зверхмалою за розміром і повнофункціональною для користувача. До цього можна скільки завгодно наближатися, але ідеального застосування вам отримати ніколи не вдасться. Хороші програми зазвичай поєднують ті або інші якості в розумних пропорціях, залежно від того, що важливіше: швидкість виконання, розмір програми (як файлу додатку, так і об'єму пам'яті, займаного працюючим застосуванням) або зручність інтерфейсу користувача. Для багатьох офісних застосувань дуже важливим показником є зручність інтерфейсу користувача і якомога вища функціональність. Наприклад, для користувача програми електронного телефонного довідника той факт, що програма працює на 10% швидше або повільніше, особливого значення не має. Розмір такої програми, в принципі, не критичний і також не має особливого значення, оскільки об'єм сучасних жорстких дисків досить велика, щоб помістити десятки і навіть сотні таких електронних довідників. Профамме може бути необхідне десятки мегабайт оперативної пам'яті для роботи — це теж зараз не проблема. Але можливість зручної маніпуляції даними для користувача буде дуже важливою. Якщо додаток використовує клієнт-серверну модель обробки даних і взаємодії з користувачем, як, наприклад, більшість мережевих застосувань, то критерії оптимізації тут будуть декілька іншими. На перше місце можуть вийти проблеми використання пам'яті (особливо для серверної частини додатку) і оптимізації мережевої взаємодії з клієнтською частиною. Додатки, що працюють в режимі реального часу, критичні по синхронізації отримання, обробки і, можливо, передачі даних за прийнятні інтервали часу. Подібні програми вимагають, як правило, оптимізації по завантаженню процесора і синхронізації з системними службами операційної системи. Якщо ви — системний програміст і розробляєте драйвери або сервіси для роботи з операційною системою, наприклад з Windows SP - 3, то неефективний програмний код в кращому разі тільки уповільнить роботу всієї операційної системи, а про гірші наслідки можна тільки здогадуватися. Як видимий, підвищення продуктивності програм залежить від багатьох чинників і у кожному конкретному випадку визначається тим, що ця програма повинна робити. Розглянемо тепер детальніше, як можна виконати оптимізацію програм, і проведемо невеликий порівняльний аналіз різних методів підвищення продуктивності виконання додатків. простий спосіб змусити додатки працювати швидше — це підвищити обчислювальну потужність комп'ютера за рахунок установки продуктивнішого процесора або збільшення об'єму пам'яті, тобто зробити апгрейд апаратної частини. В цьому випадку проблема продуктивності буде вирішена сама собою. Якщо ви прихильник такого підходу, то найшвидше попадете в безвихідь, оскільки весь час залежатимете від апаратних рішень. Доречно зауважити, багато очікувань щодо продуктивності нових поколінь процесорів, нових типів пам'яті і архітектури системних шин виявляються явно перебільшеними. Їх продуктивність на практиці виявляється нижче задекларованою фірмами-виготовлювачами. Так, наприклад, нові мікросхеми пам'яті, як правило, перевершують своїх попередників даних, що за об'ємом зберігаються, але зовсім не по швидкодії. Продуктивність жорстких дисків також росте повільніше, ніж їх об'єм. Якщо ви розробляєте комерційне застосування, то повинні враховувати, що у користувача може не бути найостанніших моделей процесора і швидкодіючої пам'яті. До того ж, далеко не всі користувачі горять бажанням викласти гроші на новий комп'ютер, якщо їх цілком влаштовує те, що у них вже є. Тому навряд чи варто вважатися серйозно на рішення проблем з програмним забезпеченням за допомогою однієї тільки закупівлі нового устаткування. Програмування на мові Асемблера Чому вас могло б зацікавити програмування на мові асемблера? Можливо, ви вже знайомі з однією мовою високого рівня. Якщо ви постійно користуїтесь персональним комп'ютером , то ви знаєте, що інтерпрітатор Бейсика є частиною системи. Навіщо ж возитисяще з однією мовою програмування, тим більше з таким, який обіцяє певні труднощі? Очевидно, навіть розташовуючи сучасними могутніми мовами, ви все ще потребуєте асемблера із-за його ефективності і точності. Асемблерні програми можуть бути дуже ефективними. З програмістів, з рівними навиками і здібностями, що працює на мові асемблера створить програму компактнішу і бистродіючу, чим така ж програма, написана на мові високого рівня. Це так практично для всіх невеликих або середніх програм. На жаль, у міру зростання розмірів, програми на мові асемблера втрачають частину своїх переваг. Це відбувається із-за необхідної в асемблерній програмі уваги по деталям. Як ви побачите, мова асемблера вимагає від вас планування кожної дії комп'ютера. У невеликих програмах це дозволяє оптимізувати роботу програми з апаратними засобами. У великих же програмах величезна кількість деталей може перешкодити вам еффективно працювати над самою програмою, навіть якщо окремі компоненти програми виявляться дуже непоганими. Безумовно, програмування на мові асемблера відповідає потребам не кожної програми. Програми на мові асемблера дуже точні. Оскільки ця мова дозволяє програмістові безпосередньо працювати зі всім апаратним забезпеченням, асемблерна програма може робити те, що недоступно ніякий іншій програмі . Поза сумнівом, що в програмуванні пристроїв введення-виводу, де потрібний контроль над окремими розрядами регістрів пристроїв, програмування на мові асемблера - єдиний відповідний вибір. Ясно, що ефективність і точність мови асемблера дають певні переваги. Але його деталізованість створює і деякі проблеми. Чи ж варто обирати для програмування мову асемблера? Звичайно ви повинні користуватися програмами на мові асемблера, коли немає іншого способу написати програму. Наприклад програмісти фірми Майкрософт писали з використанням процедур асемблера всі програми управління пристроями введення-виводу для РС. Для управління пристроями введення-виводу і системою переривань було потрібно ту точність мови асемблера яку не може забезпечити жоден інша мова програмування. Аналогічно, на мові асемблера у фірмі Майкрософт писалися процедури діагностики які повинні перевіряти кожну деталь апаратури. Мова асемблера необхідна також і в тих випадках, коли головними є робочі характеристики програми. Це може бути час виконань або кінцевого розміру програми. Яка програма не підходить для мови асемблера? Звичайно, ви можете написати на нім будь-яку програму, проте з великою програмою краще працювати в мові високого рівня, такому як Бейсик або Паскаль. Ці мови дозволяють вам зосередитися на своїй проблемі. Вам не доводиться безпосередньо мати справи з тонкощами апаратного устаткування і процесора. Мови високого рівня дозволяють вам відступити назад і за деревами побачити ліс. Очевидно далі, що ви потребуєте з'єднання програм мови асемблера з програмами мов високого рівня. Тут ми обмежимось програмуванням на мові асемблера для тих завдань, для яких він добре підходить, таких як управління введенням-виводом. Також розглянемо проблемі з'єднання програм на мові асемблера з другмі мовами програмування. Ці методи надають вам все краще, що є в обох світах. Ви можете, коли необхідні точність і ефективність, використовувати процедури на мові асемблера - і процедури високого рівня для програми в цілому. Все що ви для цього повинні зробити - зчепити їх разом. І остання причина для вивчення програмування на мові асемблера. Тільки через написання програм на цьому рівні деталізації ви можете зрозуміти як працює машина на самому ніжнем рівні. Якщо ви хочете дізнатися про комп'ютер все, ви повинні бути знайомі з його мовою асемблера. Єдиний спосіб добитися цього писати програми на цій мові.
Основи комп'ютерних обчислень
У цьому розділі роз'яснюються властивості комп'ютерів. Вона розповість вам як комп'ютери працюють і чому вони роблять це саме так. Деякі положення можуть виявитися знайомими вам. Якщо у вас немає досвіду програмування на мові асемблера, то багато операцій будуть для вас новими.
Двійкова арифметика
Всі комп'ютери використовують для зберігання інформації двійкову систему. Це означає, що кожен елемент інформації, що зберігається, може мати тільки два стани. Ці стани позначаються як "включений" і "вимкнений", "істина" і "брехня", або "1" і "0". Комп'ютер зберігає ці значення у вигляді рівнів напруги. На щастя у нас немає потреби звязуватись з напругою. При написанні програм ми маємо справу тільки з числами. Використовуючи прості числа 0 і 1, можна виконувати дуже складні обчислення. Із-за двійкового уявлення даних комп'ютери використовують в своїх обчисленнях арифметику з двійковою підставою. Арифметика з підставою 2 користується тільки двома цифрами: 0 і 1. Ми зазвичай застосовуємо систему числення по підставі 10. У десятковій арифметиці уживається десять різних цифр - від 0 до 9. Двійкову арифметику можна представити собі як систему для людей, що мають тільки два пальці. Обмеження лише десятьма цифрами в десятковій арифметиці не заважає нам уявити крупніші числа. Ми користуємося багатозначними числами, в кожній позиції яких присутні різні ступені 10. Найправіша цифра будь-якого числа позначає число одениць, сусідня зліва - кількість десятків, наступна, - число сотень і так далі Прогресія справа наліво шикується така:
10**0, 10**1, 10**2 і так далі Число 2368 в дійсності
представляє 2 тисячі, 3 сотні, 6 десятків і 8 одениць. Фіг. 2.1 показує, кажучи математичною мовою, розкладання числа 2368.
Арифметика з підставою 2 або двійкова система аналогічна десятиричній, за винятком того, що розряди числа тут відповідають
ступеням 2 а не 10. Числа більше 1 представляються багатозначними числами, так само як в десятковій арифметиці багатозначне уявлення отримують числа більше 9. Кожна цифра в двійковій системі називається біт від Binary digit (двійкова цифра). Позиція кожного біта в числі відповідає деякій мірі 2. Фіг. 2.2 показує значення двійкового числа 101101b.
Ми користуватимемося суфіксом "B" для позначення чисел в двійковому уявленні. Цим вони відрізнятимуться від десяткових що не мають суфікса. Наприклад, 2368 - це десяткове число, а 101101b - двійкове. У математичній літературі для позначення системи числення зазвичай використовується індекс. Ми будемо користуватися символом "B", оскільки асемблер ПК для позначення двійкових чисел застосовує саме його.
У таблиці Фіг. 2.3 для представлення максимального десяткового числа потрібно 4 біта. Для крупніших чисел буде потрібно ще більше біт. Двійковим числом складається з n біт можна зобразити число величиною 2**n-1.
Десяткове Двійкове
-----------------------
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
-----------------------
Фіг. 2.3 Перших 10 цілих єдиним чином представити будь-яке ціле від 0 до 2**n-1. Для 4-х бітового прикладу на Фіг 2.3 найбільше таке число рівне 15 (2**4-1). Для кожного конкретного мікропроцесора існує максмальний розмір двійкових чисел, які можуть бути в нім представлені.
Шістнадцяткове уявлення
Двійкова арифметика хороша для комп'ютера, оскільки він має справу тільки з оиницями та нулями. Але людське сприйняття вимагає компактнішого уявлення. Ми користуватимемося шестнадцятерічним уявленням даніх для власної зручності. Шістнадцятиричне уявлення чисел - це система числення по підставі 16. Кожна цифра в числі може мати значення від 0 до 15. Кожен розряд в числі є ступенем 16. Шістнадцятиричне уявлення - зручний метод запису двійкової інформації. Кожна шістнадцятирична цифра відповідає чотирьом бітам. Для претворення двійкового числа в шістнадцятиричне розбийте його на групи по 4 біта і прочитайте кожну групу як шістнадцятиричну цифру. Це дає ущільнення запису один до чотирьох - дуже зручно для розумної істоти. Виника невелика трудність з тим, що у нас є цифри тільки від 0 до 9. Числа від 10 до 15 ми представлятимемо першими шістьма буквами латинського алфавіту: від A до F. Таблиця відповідності між десятковими, шістнадцятиричними і двійковими цифрами приводиться на Фіг. 2.7.
Як показано в цій таблиці, кожна шістнадцятирична цифра відповідає точно 4-м бітам якого-небудь двійкового числа. Шістнадцятиричне уявлення звичайне для машин, в яких розмір слова кратний 4. Оскільки слово в 8088 складає 16 біт, ми будем користуваться шістнадцятиричним записом. Кожне 16-бітове значення представляєтся чотирма шістнадцятиричними цифрами. числа в Надалі числа у шістнадцятиричному записі позначатимуться
Десяткові числа пишуться без суфікса або з суфіксом "D". Це в точності відповідає записи чисел в мові асемблера. Для уявлення даніх в асемблерні програмі можна використовувати любу з трьох розглянутих систем (десяткова, двійкова і шістнадцатеричну).
При записі шістнадцятиричних чисел важливо переконатися, що ассемблер сприйме їх як числа. Якщо ви ввели "FAH", то це може бути або шістнадцятиричне число FA, або ім'я змінної FAH. Асемблер припускає, що число починається з цифри і що мітка починається з букви. Тому "FAH" для асемблера виявляється змінною. Якщо ми маємо на увазі не змінну а число, то його треба записати як "0fah": це число має бажане значення і починається свідомо з цифри. Щоб не виникло плутанини кожному шістнадцятиричному числу яке починається із значень від A до F повинен передувати 0.
В прошлом году ученик написал реферат на эту тему (Изучение ассемблера). Да еще и диск приложил с оболочками и примерами программ. Делал все сам. Так что было бы желание.
У нас в университете на 4 курсе преподавали этот язык, очень плохо преподавали (типа спецкурса), хорошо, что хоть я узнала, что он есть и кое какие начальные сведения. Так это на прикладном отделении, а учителям математики и информатики даже не рассказывали о нем. А для детей это будет сложновато, на мой взгляд. Хотя, конечно, многое зависит от учителя.
нас в университете на 4 курсе преподавали этот язык, очень плохо преподавали (типа спецкурса
Не тількив вас, практично скрізь, спілкуючись з своїми знайомими з інших регіонів України провів невеличке опитування що до асемблера ,виявляється навчальні заклади стараються обійти цю тему стороною . А якщо й викладають то тільки зжато і в загальних рисах .
Нерідко можна чути твердження про те, що процес розробки програм на мові асемблера дуже трудомісткий і віднімає масу часу.
Ми, старше поколінння, на безпосередній практиці пройшли період панування асемблера через користування "мікрошою" , "спектрумом", тошо. Здадки про результативність того пероду в мене чомусь викликають алергію навіть до огляду сучасного інструментарію. Тому питання ознайомлення з асемблером свідомо відкидаю при роботі з дітьми.
Тому питання ознайомлення з асемблером свідомо відкидаю при роботі з дітьми.
А в мене таких упереджень що до даної мови немає . Багато хто з дітей та і учасників форуму цікавляться данним питанням . Тому про доцільність чи ні ,асемблера говорити ще рано
Как говориться, уважуха и респект. Я как-то тоже хотела открыть тему про ассемблер. Хотелось узнать кто-то работает с ним или нет, потому что на мой взгяд такие учителя вызывают уважение и показывают свой высокий уровень. Ну а в методической школьной литературе я даже не видела упоминания об этом языке. Если есть интересные ссылки по этой теме - поделитесь, пожалуйста.
Если есть интересные ссылки по этой теме - поделитесь, пожалуйста.
По методиці виклдання та і по другіх аспектах що до викладання даного виду мови програмування матеріалу практично нуль, крім підручників та пару ссилок на сайти типу отакого http://www.dgma.donetsk.ua/~kit/subjects/annot.html , де теж практично нічого немає . Таке уявлення що дана мова зовсім не існує або мало застосовується хоча це помилкові висновки . Більшість моїх знайомих та друзів активно використовують Асемблер , як при розробці програмного забезпечення, так і вдосконалення існуючого. Якщо бажаєте подивитись структрні складові та зробити приблизні уявлення що це скористайтесь плугом , http://rapidshare.com/files/232798383/odbg110.zip.html вибачаюсь олдом який дає можливість погратись на досконалом рівні Якщо потрібний матеріал, електронні підручники по програмування не тільки на асемблері а й на інших мовах зокрема можна можна взяти тут. Відеоуроки по дані темі ми планували розробити до липння якщо нічого не зміниця я вважаю на дану тему матеріалу для викладання побільшає .
Позволю себе абсолютно поддержать НІКОЛЯ. Ассемблер - это сила. Нам в институте преподавали ассемблер, причем на очень серьезном уровне. Такой себе дипломатик "Микролаб" помните? Только самые теплые воспоминания. Когда ты сам себе являешься и редактором исходников, и компилятором и компоновщиком начинаешь на функционирование вычислительной системы смотреть немного с другой стороны. Да, использование Ассемблера требует глубочайшего знания архитектуры той вычислительной платформы, которую ты используешь. Процессор с его регистрами, типами адресации памяти и прочим должен напрямую отображаться в ваш собственный мозг. )))) Но та свобода, которую получаешь, когда пишешь программу на Ассемблере не сравнить ни с чем. И потому на Асме я написал в юности свой первый досовский резидентный драйвер принтера, не дружившего с альтернативной кодировкой кирилицы. И вирус свой первый тоже досовский Асмом ваял.... Каспер его до сих пор обнаруживает..... Да, молодость, молодость..... Теперь по теме дальше. Сложность современного ПК, и процессора в частности, накладывают существенные ограничения на программирование на Ассемблере даже для серьёзного программиста, но имеющего глубоких знаний в области архитектуры вычислительный систем. Не говоря уже о детях. Но есть более простой путь. Это микроконтроллеры. Те же самые Атмеги, Пики (хочу прикупить и попробовать Parallax Propeller, дикая вещь, как вам 8 вычислительных ядер при совсем небольшой цене?) Набор ассемблерный команд у мег и пиков совсем не большой. Периферия вполне понятная. Куча компиляторов с Асма, Си, Паскаля, Бейсика... Эмуляторы..... Этого вполне достаточно для понимания сути программирования на Асме, проникновения духом. Дальше начать копаться в Коре 2 Дуо бутет намного легче. Ведь согласитесь, является ли проблемой для человека, знающего 3 языка программирования изучение 4-го?
А для ученика, заставившего по заранее составленному алгоримту мигать светодиодики программирование на Ассемблере будет намного нагляднее, чем пытаться что-либо понять гоняя монструозную ИДЕ, хоть и для Ассемблера....
[spoiler]Ми вже бачили, як з нулів і одиниць, що зберігаються в ПК, формуються числа.Тепер ми подивимося як комбінації тих же значень 0 і 1 можуть бути використані для програмування комп'ютера. Машинна програма є послідовністю команд (інструкцій). Ці команди "пояснюють" комп'ютеру, що він повинен робити. Це схоже на рецепти в кулінарній книзі. У рецепті є опис дій, які необхідні для приготування певного блюда. Так само, комп'ютер має послідовність команд, які точно описують йому послідовність дій. Цей набір команд називається програмою. Процес побудови коректного набору команд називають програмуванням комп'ютера. У наший аналогії з рецептом рецепт є програмою, а той хто його написав - програмістом. Роль комп'ютера тут грає кухар, що готує їду. Реальна програма, яку виконує комп'ютер, це послідовність одиниць і нулів, пов'язаних з пам'яттю комп'ютера. Цю строчку біт прийнято називати машинною мовою. Машинна мова - це та мова яку машина розуміє. Комп'ютер витягує команди машинного мови з пам'яті точно певним способом. Потім комп'ютер виконує команду, позначену даною конфігурацією біт. Проте машинна мова мало про що говорить людям. Якщо ви хочете скласти два числа в 8088 (наприклад, вміст регістрів AX BX - короткий опис регістрів зараз послідує), команда буде виглядати таким чином:
0000001111000011b (або 03c3h)
Ці два байти точно вказують комп'ютеру яку опреацію провести. Аналогічно, для віднімання двох чисел (віднімання регістра BX з регістра AX) ми матимемо в машинній мові 0010101111000011b (або 2bc3h) Тут необхідно коротко пояснити, що таке регістри. Регістр - це частина процесора, призначена для збереження данних. До даних, збереженим в регістрі, процесор отримує доступ дуже швидко - набагато швидше, ніж до даних, що зберігаються в пам'яті. Можливо ще спеціальне використання регістрів в деяких командах. Повний опис регістрів . Хоча машинна мова - це дійсно чудово, якщо ви являетесь комп'ютером, він важкий для програмістів - людей. На щастя існує більш простій спосіб програмування. Цим методом ближчим людям, ніж машинам, є програмування на мові асемблера. Мова асемблера, як мова програмування, тобто зрозуміліший програмістові, чим машинний, мова, все ще зберігає всі значення машинної мови. Комп'ютер читає програми на мові асемблера і переводить їх в машинну мову, в ту форму, яка зрозуміла Компютеру. Цей процес, званий "асемблюванням" програми, фактично є перекладом з однієї мови на іншу. Операцію перекладу з мови асемблера на машинну мову виконує програма, звана асемблером. Щоб краще зрозуміти різницю, давайте поглянемо на приклади якими ми вже користувалися вищим. Асемблерна команда для складання вмісту регістрів AX і BX проста:
ADD Ax,bx
Аналогічно, для віднімання регістра BX з регістра AX ми напишемо:
SUB Ax,bx
Асемблер перетворює ці пропозиції на форму, яку ми бачили вище. Комп'ютер сам справляється з проблемою перетворення файлу з понятним людині текстом в програму на машинній мові, яку міг би виконати процесор. Мова асемблера не схожа на мови типу Паскаль. Ці мови, як і багато подібних до них, є мовами високого рівня. Мови високого рівня розроблені для того, щоб можна було мати справу безпосередньо із завданням, що вирішується програмою. У цій якості вони іноді називаються процедурними мовами, оскільки описують процедуру, використовувану для вирішення завдання. Мови високого рівня машинно- незалежні. Мова програмування не залежить від машини. Програми ж на мові асемблера безпосередньо відносяться до тієї машини, на якій вони повинні виконуватися. Мова асемблера машин- нозалежна. Звичайне кожне затвердження мови асемблера генерує одну команду машинної мови. В деяких випадках це не так, тому що існують команди, які не є частиною виконуваної программи, а призначені для асемблера. Вони описують дії ассемблера, який повинен виконувати їх під час асемблювання. Приклад директиви асемблеру (такою призначеною тільки для нього команди)
TITLE Приклад Програми
Ця інструкція повідомляє асемблеру заголовок програми. Після трансляції асемблером прграмми цей заголовок - "Приклад программи"- з'являється у верхній частині кожної сторінки повідомлень асемблера. Ця інструкція має сенс тільки для асемблера.
И вирус свой первый тоже досовский Асмом ваял.... Каспер его до сих пор обнаруживает.....
Дана мова не дарма зветья мовою хакерів так як має дуже великі можливості . Що до вірусів я мовчу зовсім щоб не наганяти жаху ви самі розумієте які маєш можливості , та відчуття всевласття над компютером , це не можна порівняти ні з чим це потрібно пережити та відчути на собі .
Quote (VicS13)
Ведь согласитесь, является ли проблемой для человека, знающего 3 языка программирования изучение 4-го?
Геть ні . Як говорять булоб тільки бажання . А коли є бажання то знаходиться і час ,якого завжди не вистачає.
НІКОЛЯ! Ото написав, так написав. Вам +1. Такої передмови (за розміром) ще в жодній темі форуму не було. Переспіваю це коротко: Оптимізація програм — це не наука, а мистецтво, але разом з досвідом програмування такий фахівець має володіти ще й дуже розвинутою інтуїцією. От, наприклад, якщо мова йде про програми для бібліотекаря, то тут по-барабану, скільки часу виконується програма 0,1 сек, або 10 сек. Адже, порівнюючи це з фізичними діями бібліотекаря (підійти до стелажа №10, поглянути на полицю №6, взяти книжку №123, принести її відвідувачу), прорама може виконуватися й 30 сек, головне, щоб її розмір давав змогу бібліотекарю у вільний від відвідувачів час вільно розкладати косинку. А от якщо розглянути випадок, коли Джип з бортовим комп’ютером на борту гасає трасою Київ-Бориспіль, а на зустріч летить такий самий джигіт, то тут швидкодія програми має неабияке значення для обох джигітів. Тому, шановні програмісти, думайте головою де саме працюватиме ваша ОС. Отже, може навчати наших дітей з пелюшок такій відповідальності? А асемблер для цього — саме та примочка!
Шановні інформатики! Скажу прямо і відверто (хоча це знову здасться комусь агресивністю): можна, звичайно й зайця навчити курити, але для чого? Не забуваймо, що середня загальноосвітня школа має давати БАЗОВІ знання. А тому згадаймо для чого свого часу було введено курс інформатики у ЗНЗ. Прочитайте ще раз фундаментальні праці Ершова щодо цього питання. Основа мисля така: Курс інформатики у ЗНЗ вводиться для розвитку логічного мислення учнів. Саме так. А на чому конкретно показувати це? Як на мою думку, то на Паскалі — те що доктор прописав. Можна зазвичай й на асемблерах, але тоді вас зрозуміють ще менше учнів, ніж зараз. Отже, для розуміння асемблерів серед середнього загалу учнів (а саме на таких розраховано програму курсу інформатики й критерії оцінювання знань учнів), потрібно володіти математичною логікою не на рівні середньої школи. А якщо згадати той рівень математичної підготовки наших учнів, то залишається лише розридатися у жилетки один у одного. Невже не так? А програмуванню мають навчати ВНЗ, тим більше, що й математична база там відповідна. Це я бачу з власного досвіду. Може я якась знову агресивна? Так не дивуйте, це я на лікарняному вже 3 дні.
потрібно володіти математичною логікою не на рівні середньої школи.
Скорее воображением. Абстрактным мышлением. Вообще надо бы провести эксперимент. Попробую дать основы в 9 классе. Потом можно будет говорить на эту тему.
И Вы думаете, уважаемый dpi, что рассказывать про ассемблеры можно без информации о принципах работы и устройства процессора? Было бы интересно мне такой конспект почитать. Может поделитесь?