Асемблер - команди для початківців низькорівневих програмістів
Всі команди можуть бути виконані тільки за допомогою машинної мови. Асемблер-команди - символічне уявлення цієї мови. З його допомогою пишуть невеликі, але дуже швидкі програми. Але, не дивлячись на їх розмір, процес написання досить трудомісткий. Тому команди асемблера використовуються для роботи з апаратної складової, або коли на виконання програми критично не вистачає пам`яті. Тому код асемблера оформляється у вигляді підпрограм і інтегрується з кодом високого рівня. Так як асемблер може сильно відрізняться в залежності від типу архітектури, то слід розглянути його для конкретного випадку, в даній статті це архітектура Win. Але опис команд асемблера, як правило, сильно не змінюється, і використовувати їх можна і в мікроконтролерах, і в інших приладах електроніки, для яких використовується асемблер.
Арифметичні команди, застосовувані в асемблері
Незважаючи на такий парадокс, як універсальність, всього 4 арифметичні команди асемблера є і можуть використовуватися програмістами. Але тим не менше за допомогою них створювалися високорівневі мови програмування, на яких працюють комп`ютери, побутова техніка, телефони, смартфони, ноутбуки і т. Д. Працювати з ними можна, і досить успішно. Список команд асемблера такий:
- складання;
- віднімання;
- множення;
- поділ.
додавання
Арифметична операція, відома ще зі школи. Для її використання необхідно враховувати тільки особливість складання, яка пов`язана з поданням складаються чисел в пам`яті самого комп`ютера. Загальний вигляд операції такий:
ADD lt; Ячейка1 / Регістр1gt ;, lt; Ячейка2 / Регістр2gt;
Команда бере числа з осередків, складає їх разом і записує в «Ячейку1». Тепер про умови проходження операції: обидва числа з комірки повинні мати однаковий розмір. Також якщо спочатку йде регістр, то до нього можна приплюсувати все. Якщо спочатку йде осередок, то до неї можна приплюсувати або безпосередній операнд, або регістр.
Опис команд асемблера і їх реалізації вимагає більш повного підходу, ніж може надати одна стаття. За командам асемблера, незважаючи на їх жалюгідне кількість, пишеться величезна кількість книг, які мають не одну сотню сторінок. Тому, не дивлячись на легкість, рекомендуємо ознайомитися з більш детально описує команди роботою, яка дозволить дізнатися всі нюанси для різних архітектур.
віднімання
Ця операція виконується за таким же алгоритмом, як і попередня. Навіть тип запису команди схожий:
SUB lt; Ячейка1 / Регістр1gt ;, lt; Ячейка2 / Регістр2gt;
Принцип підрахунку така: з №1 віднімається значення №2, і записується на місце №1. Умови проходження операції точно такі ж, як і умови проходження операції додавання.
множення
Якщо для поділу і складання використовувалися однакові команди, як для беззнакових, так і для знакових чисел, то при множенні і діленні для них існують різні алгоритми. Так, для множення беззнакових чисел використовується така команда:
MUL lt; операндgt;
Зазначений в команді операнд є одним із співмножників. Місце другого сомножителя і місце результату операції заздалегідь фіксуються, в залежності від розміру MUL в байтах. Місце їхнього розташування - тема окремої статті. Для знакового множення використовують команду:
IMULlt; операнд№1gt ;, lt; операнд№2gt;
Можна зустріти і інші варіанти реалізації, але цей є більш зрозумілим і звичним. Вказуються два співмножники, і результат поміщається в операнд №1. При цьому в якості операнда №1 виступає обов`язково регістр, а операнда №2 - регістр або елемент пам`яті. Але інші варіанти теж будуть описані:
IMULlt; операнд№1gt;
IMULlt; операнд№1gt; gt ;, lt; операнд№2gt ;, lt; безпосередній операндgt;
IMULlt; операнд№1gt ;, lt; безпосередній операндgt;
Відео: Hackerdom-10 Низькорівневе програмування
Перший варіант подібний до MUL за своїм устроєм, тому правила до нього можна віднести і тут. Другий варіант дозволяє явно вказати місце розташування - як результату, так і сомножителя. У третьому варіанті вказується регістр, який буде першим співмножником і в якому буде поміщений результат множення. Під безпосереднім операндом мається на увазі вказівку не певного регістра, а числа, на яке буде множитися операнд.
розподіл
Як уже повідомлялося вище, для поділу використовуються дві команди. Для беззнакових чисел застосовують:
DIV lt; операндgt;
Для знакових чисел використовують команду:
Відео: Асемблер
IDIV lt; операндgt;
Особливість застосування команд ділення полягає в тому, що використовується тільки операнд-дільник, в якості якого виступає регістр або елемент пам`яті. Ділене число завжди має своє певне місцезнаходження, яке залежить від розміру числа. Своє місце має і результат операції.
З пошуку і визначення місць можна сказати те ж, що і про примноження: необхідна окрема стаття, так як обсяг інформації досить значний.
Корисне висновок
Також до категорії "щодо корисні команди асемблера" слід віднести і команду NEG lt; Осередок / Регістрgt ;. Вона переводить знак в число, яке знаходиться в операнде. Ось і все, сподіваємося, що стаття допомогла вам розібратися в арифметичних командах асемблера.
Відео: асемблер
Стануть в нагоді і операції инкрементирования і декрементірованія (збільшення або зменшення операнда на одиницю). Щоб інкрементіровать операнд необхідно прописати таку команду:
INC lt; операндgt;
Для декрементаціі слід прописати:
DEC lt; операндgt;
Як операнда може виступити осередок пам`яті чи регістр. Виняткова вигода від цих операцій полягає в тому, що вони для себе забирають менше місця, ніж аналогічні команди асемблера, пропоновані складанням або вирахуванням.