документація асемблер
1. Для тих хто чує слово Асемблер вперше - Асемблер.
-
1.01 Що таке Асемблер?
1.02 З чого почати вивчення мови Асемблера?
1.01 Що таке Асемблер?
================================================== =====
Асемблер (від англійського assembler - складальник) - мова програмування низького рівня, однозначно трансльований в систему команд мікропроцесора.
Незважаючи на те, що зараз в основному програми пишуться на мовах високого рівня, асемблер ніколи не втратить своєї актуальності, асемблер - це рідна мова процесора. Зараз його використовують в основному при написання драйверів, програмування мікроконтролерів, ОС і вzлома програм :)
Також ассемблером зазвичай називають транслятор мови асемблера.
Семантика асемблера прямо, один-в-один, відображається в архітектуру процесора, для якого він зроблений - кожна команда на асемблері відповідає своєму єдиному коду команди процесора, а також існують маркери для подання кожного з решти програмно доступних ресурсів - регістрів, векторів переривань і т.п. Також порядок проходження інструкцій на асемблері точно відпо їх порядку в одержуваному машинному коді. Таким чином assembler є інструментом найнижчого рівня, що дозволяє програмісту контролювати програму в найдрібніших деталях, і використовувати всі доступні програмі ресурси процесора. Кожному процесору відповідає своя мова асемблера, хоча в рамках однієї лінійки, мови, як правило, схожі.
Згодом асемблер увібрав в себе деякі можливості та абстракції, властиві мовам високого рівня: автоматичний вибір коду інструкції, якщо існує кілька різних кодів для однієї і тієї ж операції, наприклад різної довжини; можливість виробляти обчислення виразів під час трансляції; оптимізатор; опис структур даних; і макропідстановки. Макропідстановки до того ж прибрали одне обмеження "класичного" асемблера: соотвествие »один рядок на асемблері - одна інструкція«, так як дав возмоность робити "псевдоінструкціі" з декількох команд процесора. Сильно розвинений макроподстановщік дозволяє реалізовувати багато конструкцій, що існують на мовах високого рівня, зокрема елементи структурного програмування. Асемблер з макроподстановщіком називається окремим терміном: макроассемблер, позначаючи головна відмінність його від "класичного" асемблера. На даний момент "чистих" ассемблеров практично не сущеструет.
Також ассемблером називається програма трансляції програми на асемблері в машинний код процесора. Програма, яка отримує програму на асемблері з машинного коду називається дизассемблер.
джерело: www.wikiznanie.ru
2. Регістри
-
Регістр - це певна ділянка пам'яті всередині самого процесора, від 8-ми до 32-х біт довжиною, який використовується для проміжного зберігання інформації, що обробляється процесором. Деякі регістри містять тільки певну інформацію.
Регістри загального призначення - EAX, EBX, ECX, EDX. Вони 32-х бітні і діляться ще на дві частини, нижні з яких AX, BX, CD, DX - 16-ти бітні, і виділяється ще на два 8-ми бітних регістра. Так, АХ ділиться на AH і AL, DX на DH і DL і т.д. Буква "Н" означає великі букви.
Так, AH і AL кожен по одному байту, АХ - 2 байта (або word - слово), Еах - 4 байта (або dword - подвійне слово). Ці регістри використовуються для операцій з даними, такими, як порівняння, математичні операції або запис даних в пам'ять.
Регістр СХ найчастіше використовується як лічильник в циклах.
АН в DOS програмах використовується як визначник, який сервіс буде використовуватися при виклику INT.
CS - сегмент коду (сторінка пам'яті) виконується в даний момент програми.
DS - сегмент (сторінка) даних виконуваної програми, тобто константи, рядкові посилання і т.д.
SS - сегмент стека виконуваної програми.
ES, FS, GS - додаткові сегменти, і можуть не використовуватися програмою.
Регістри управління - CR0, CR1, CR2, CR3. Ці 32-х бітні регістри встановлюють режим роботи процесора (нормальний, захищений і т.д.), постраничное розподіл пам'яті і т.д. Вони доступні тільки для програм в першому кільці пам'яті (Kernel, наприклад). Чіпати їх не слід.
Контрольні регістри - TR6, TR7. Використовуються для контролю посторінковою системи розподілу пам'яті операційною системою. Потрібні тільки якщо ви збираєтеся написати свою ОС.