Мова асемблера x86 — загальна назва групи асемблерних мов, що беруть свій початок від перших мов асемблера мікропроцесорів Intel 8086 та Intel 8088 і забезпечують деякий рівень сумісності на рівні початкових текстів програм. У порівнянні з мовами асемблера інших процесорів, відмінною рисою асемблерів для архітектури x86 є наявність двох цілком відмінних синтаксисів, зумовлених історичними особливостями розвитку двох важливих для цієї комп'ютерної платформи операційних систем (MS-DOS і Unix). Також слід відзначити наявність кількох реалізацій програм-асемблерів, кожна з яких може мати несумісні з іншими особливості (такі як макроси, препроцесор, адресування змінних та інше).
Мнемоніки та коди операцій
Синтаксис
Елементи синтаксису
Набір команд
Типовими командами мови асемблера є:
- Команди пересилки даних (mov та ін.);
- Арифметичні команди (add, sub, та ін.);
- Логічні та побітові операції (or, and, xor, shr, ror та ін.);
- Команди управління ходом виконання програми (jmp, loop, ret та ін.);
- Команди виклику переривань (іноді відносять до команд управління): int;
- Команди вводу-виводу в порти (in, out);
- Для мікроконтролерів і мікрокомп'ютерів характерні також команди, що виконують перевірку і перехід по умові, наприклад деякі з них:
- cjne — перейти, якщо не дорівнює;
- djnz — декрементувати, і якщо результат ненульовий, то перейти;
- cfsneq — порівняти, і якщо не дорівнює, пропустити наступну команду.
Синтаксис мови асемблера визначається системою команд конкретного процесора чи мікроконтролера.
Intel-синтаксис
Intel-синтаксис є одним з найпоширеніших, використовується для IBM-сумісних комп'ютерів.
AT&T-синтаксис
Відрізняється від Intel-синтаксису наявність суфіксів до мнемонік та префіксів до операндів.
Асемблерні фрагменти у мові C
Цей розділ не містить . |
main () { int a = 1; // оголошуємо змінну a і кладемо туди значення 1 int b = 2; // оголошуємо змінну b і кладемо туди значення 2 int c; // оголошуємо змінну c, але не ініціалізуємо її // Початок асемблерної вставки __asm{ mov eax, a // завантажуємо значення змінної a в регістр EAX mov ebx, b // завантажуємо значення змінної b в регістр EBX add eax, ebx // додаємо EAX з EBX, записуючи результат в EAX mov c, eax // завантажуємо значення EAX у змінну c } // Кінець асемблерної вставки // Виводимо вміст c на екран // За допомогою звичної функції printf printf ("a + b =% x +% x =% x \ n", a, b, c); }
Джерела
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mova asemblera x86 zagalna nazva grupi asemblernih mov sho berut svij pochatok vid pershih mov asemblera mikroprocesoriv Intel 8086 ta Intel 8088 i zabezpechuyut deyakij riven sumisnosti na rivni pochatkovih tekstiv program U porivnyanni z movami asemblera inshih procesoriv vidminnoyu risoyu asembleriv dlya arhitekturi x86 ye nayavnist dvoh cilkom vidminnih sintaksisiv zumovlenih istorichnimi osoblivostyami rozvitku dvoh vazhlivih dlya ciyeyi komp yuternoyi platformi operacijnih sistem MS DOS i Unix Takozh slid vidznachiti nayavnist kilkoh realizacij program asembleriv kozhna z yakih mozhe mati nesumisni z inshimi osoblivosti taki yak makrosi preprocesor adresuvannya zminnih ta inshe Mnemoniki ta kodi operacijSintaksisElementi sintaksisu Nabir komand Tipovimi komandami movi asemblera ye Komandi peresilki danih mov ta in Arifmetichni komandi add sub ta in Logichni ta pobitovi operaciyi or and xor shr ror ta in Komandi upravlinnya hodom vikonannya programi jmp loop ret ta in Komandi vikliku pererivan inodi vidnosyat do komand upravlinnya int Komandi vvodu vivodu v porti in out Dlya mikrokontroleriv i mikrokomp yuteriv harakterni takozh komandi sho vikonuyut perevirku i perehid po umovi napriklad deyaki z nih cjne perejti yaksho ne dorivnyuye djnz dekrementuvati i yaksho rezultat nenulovij to perejti cfsneq porivnyati i yaksho ne dorivnyuye propustiti nastupnu komandu Sintaksis movi asemblera viznachayetsya sistemoyu komand konkretnogo procesora chi mikrokontrolera Intel sintaksis Dokladnishe Sintaksis Intel Intel sintaksis ye odnim z najposhirenishih vikoristovuyetsya dlya IBM sumisnih komp yuteriv AT amp T sintaksis Dokladnishe Sintaksis AT amp T Vidriznyayetsya vid Intel sintaksisu nayavnist sufiksiv do mnemonik ta prefiksiv do operandiv Asemblerni fragmenti u movi C Cej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno main int a 1 ogoloshuyemo zminnu a i klademo tudi znachennya 1 int b 2 ogoloshuyemo zminnu b i klademo tudi znachennya 2 int c ogoloshuyemo zminnu c ale ne inicializuyemo yiyi Pochatok asemblernoyi vstavki asm mov eax a zavantazhuyemo znachennya zminnoyi a v registr EAX mov ebx b zavantazhuyemo znachennya zminnoyi b v registr EBX add eax ebx dodayemo EAX z EBX zapisuyuchi rezultat v EAX mov c eax zavantazhuyemo znachennya EAX u zminnu c Kinec asemblernoyi vstavki Vivodimo vmist c na ekran Za dopomogoyu zvichnoyi funkciyi printf printf a b x x x n a b c Dzherela