Мова асемблера (англ. assembly language) — мова програмування низького рівня для програмованої обчислювальної системи (мікропроцесора, мікроконтролера, комп'ютера або іншого програмованого пристрою), в якій існує сувора відповідність між операторами мови та машинними командами. Асемблер також називають символічним машинним кодом або мнемокодом.
Мова асемблера | |
---|---|
![]() | |
Парадигма | d |
Дата появи | 1949 |
Звичайні розширення файлів | .asm або .s [1] |
|
![image](https://www.wikidata.uk-ua.nina.az/image/aHR0cHM6Ly93d3cud2lraWRhdGEudWstdWEubmluYS5hei9pbWFnZS9hSFIwY0hNNkx5OTFjR3h2WVdRdWQybHJhVzFsWkdsaExtOXlaeTkzYVd0cGNHVmthV0V2WTI5dGJXOXVjeTkwYUhWdFlpOW1MMll6TDAxdmRHOXliMnhoWHpZNE1EQmZRWE56WlcxaWJIbGZUR0Z1WjNWaFoyVXVjRzVuTHpJeU1IQjRMVTF2ZEc5eWIyeGhYelk0TURCZlFYTnpaVzFpYkhsZlRHRnVaM1ZoWjJVdWNHNW4ucG5n.png)
Кожна мова асемблера специфічна для конкретної комп'ютерної архітектури. На відміну від цього, програми на мовах програмування високого рівня, як правило, здатні виконуватися на декількох архітектурах, хоча вимагають специфічної для платформи інтерпретації або компіляції.
Програма мовою асемблера перетворюється у виконуваний машинний код за допомогою програми-асемблера. Процес перетворення називають асемблюванням або збіркою (англ. assembly, assembling). У більшості випадків цей процес відбувається у два етапи: асемблювання і компонування (англ. linking).
Асемблер
Асемблер (англ. assembler — складальник) — комп'ютерна програма, що генерує об'єктний двійковий код з заданої (як правило у текстовому вигляді) послідовності машинних інструкцій. Кожна інструкція має свою мнемоніку, і складається з символічної назви (наприклад, MOV
— від англ. move, «перемістити»), за якою опціонально можуть слідувати операнди. Асемблер також обчислює значення констант і здійснює символічних імен (і, якщо потрібно, записує у об'єктний файл адреси, які потрібно модифікувати під час компонування чи завантажування програми). Використання символьних посилань і автоматизація обчислень адрес є однією з ключових особливостей асемблера, яка звільняє програміста від кропітких ручних обчислень (які доводилося б робити навіть при додаванні чи вилученні однієї інструкції програми). Більшість асемблерів також мають макрокоманди, що дозволяють замінювати у програмі повторювані фрагменти коду викликом макроса.
У простому випадку асемблер переводить одну операцію (машинну команду з параметрами) початкової програми у відповідний машинний код (так звана трансляція «один в один»). При цьому взаємне розташування кодів інструкцій у об'єктному модулі визначається порядком операцій у початковій програмі і повністю залежить від програміста. Для розширення можливостей низькорівневого програмування асемблери можуть реалізовувати підтримку макрокоманд — груп команд, що можуть вставлятися до програми потрібну кількість разів. В цьому випадку перед трансляцією проводиться заміна макрокоманд макророзширеннями — послідовностями команд на базовій мові відповідно до макроозначень. У останніх задається прототип макрокоманди зі структурою списку параметрів і процедура генерування макророзширення. Транслятор, що виконує функції макрогенератора і асемблера, називається макроасемблером. При трансляції з мов високого рівня асемблер нерідко використовується для виконання завершальної фази трансляції.
Трансляція зазвичай вимагає двох переглядів початкової програми: при першому перегляді здійснюється розподіл пам'яті і надання значень символічним іменам; при другому — формується робоча програма у вигляді об'єктного файлу. В процесі трансляції асемблер проводить повний синтаксичний контроль початкової програми, забезпечуючи при цьому достатньо точну діагностику помилок за місцем і характером.
Вважається[], що мова асемблера є низькорівневою (на противагу мовам програмування високого рівня, що частково чи повністю абстрагуються від деталей реалізації команд процесора). Чим нижчий рівень мови програмування, тим ближча специфіка роботи програми до самого процесора, для якого вона й була написана. Вважається[], що мови низького рівня складніші й потребують більш вузької спеціалізації програміста, оскільки програма написана на асемблері для одного типу процесорів виявиться не завжди придатною для роботи з іншими процесорами. З іншого боку, програми написані на асемблері компактні та швидкі, що теж важливо.
Опис мови асемблера
Цей розділ не містить . |
Команди мови асемблера відповідають машинним кодам відповідного мікропроцесора чи мікроконтролера. Фактично, мова асемблера являє собою зручнішу символьну форму запису машинних команд. Як наслідок, програми написані для одного типу процесорів, на іншому не будуть функціонувати. Мова асемблера також містить засоби для створення міток та переходів, що необхідно для створення циклів та розгалужень. Можуть бути наявні засоби для створення макросів, процедур. Кожне сімейство (модельний ряд) мікропроцесорів має свій набір команд і, відповідно, свій набір інструкцій на мові асемблера.
Переваги і недоліки
- мінімальна кількість надлишкового коду (використання меншої кількості команд та звернень в пам'ять). Як наслідок — велика швидкість і менший розмір програми;
- великі обсяги коду, велике число додаткових дрібних завдань;
- погана читабельність коду, труднощі підтримки (налагодження, додавання можливостей);
- труднощі реалізації парадигм програмування та будь-яких інших скільки-небудь складних конвенцій, складність спільної розробки;
- меншу кількість доступних бібліотек, їх мала сумісність;
- безпосередній доступ до апаратури: портам введення-виведення, особливим регістрам процесора;
- максимальна «підгонка» для потрібної платформи (використання спеціальних інструкцій, технічних особливостей «заліза»);
- неможливість роботи на платформах з іншою (несумісною) архітектурою.
Директиви
Крім інструкцій, програма може містити директиви: команди, що не переводяться безпосередньо в машинні інструкції, а керують роботою компілятора. Набір і синтаксис їх значно різняться і залежать не від апаратної платформи, а від використовуваного компілятора (породжуючи діалекти мов в межах одного сімейства архітектур). Як набір директив можна виділити:
- визначення даних (констант і змінних);
- керування організацією програми в пам'яті і параметрами вихідного файлу;
- завдання режиму роботи компілятора;
- всілякі абстракції (тобто елементи мов високого рівня) — від оформлення процедур і функцій (для спрощення реалізації парадигми процедурного програмування) до умовних конструкцій і циклів (для парадигми структурного програмування);
- макроси.
Використання мови
Історичні відомості
Мови асемблера, так само як і використання слова assembly, беруть свій початок від перших ЕОМ зі збереженням програми. Один з перших асемблерів було розроблено у 1947 році Катлін Бут (Kathleen Booth) для машини ARC2 в університеті Біркбек (Лондон), після консультацій з Джоном фон Нойманом і Германом Ґолдстіном у Інституті перспективних досліджень. Машина EDSAC у 1949 році мала асемблер під назвою initial orders з однолітерними мнемоніками. Для машин IBM 650 існувала програма SOAP (Symbolic Optimal Assembly Program), написана Стеном Полі (Stan Poley) у 1955-му.
Мови асемблера дозволили вивільнити програмістів від надзвичайно низькорівневих, рутинних і втомливих «ручних» процедур, яких потребували перші комп'ютери —запам'ятовування людиною кодів команд, адрес, ручного обчислення адрес переходів (і зміни їх при кожному додаванні чи вилученні команд), представлення чисел тощо. Приблизно до середини 1980-х років асемблери широко використовувалися у програмуванні — як для великих ЕОМ (мейнфреймів), так і для персональних і мікрокомп'ютерів. Втім, прогрес у розвитку процесорів і пам'яті спричинив активний прогрес методів компіляції з високорівневих мов і появу компіляторів, що значно підвищували продуктивність роботи програміста. У 21-му столітті мови асемблера використовуються там, де потрібне пряме керування апаратурою, доступ до спеціалізованих інструкцій процесора чи співпроцесорів, або для кодування критичних (до часу чи розміру) секцій програми. Типовими сферами застосування асемблера є драйвери пристроїв, вбудовані системи, системи реального часу, ядра ОС, резидентні монітори тощо.
Багато важливих програм було написано цілком на мові асемблера (лише у 1961-му з'явилася перша операційна система , написана частково на мові високого рівня (алголоподібний ESPOL)). Велика кількість комерційного програмного забезпечення для мейнфреймів IBM також написана на асемблері.
Більшість ранніх мікрокомп'ютерів, обмежених у оперативній пам'яті, потребувало програмного забезпечення, написаного вручну майже виключно на асемблері, включно з кодом BIOS, дискової операційної системи і великої кількості прикладних програм. Типовими прикладами великих асемблерних програм 1970-80-х років є BIOS і DOS для комп'ютерів IBM PC, компілятор Turbo Pascal, перші програми електронних таблиць (наприклад, ), численні комп'ютерні ігри.
Застосування у нинішній час
З часів винаходу перших компіляторів йшли дебати щодо доцільності використання мови асемблера у програмуванні прикладних задач. Втім, системне програмування завжди лишалося особливою нішею, де асемблер був і залишається важливим.
Мови асемблера досі вивчаються на більшості курсів інформатики і електроніки та мікропроцесорної техніки. Фундаментальні поняття, такі як двійкова арифметика, керування пам'яттю, стек, кодування символів, переривання, проєктування компіляторів тощо можуть бути повністю осягнені людиною лише при ґрунтовному розумінні роботи комп'ютера на апаратному рівні, що неодмінно передбачає розуміння набору команд і адресації процесора.
Приклади застосувань
- Гіпервізори
- Реалізація криптографічних і інших специфічних алгоритмів (наприклад, цифрового перетворення сигналів)
- Фрагменти ядер ОС, або цілі мікроядра (приклади: ранні L3, L4)
- Початкові завантажники, Firmware, резидентні монітори, BIOS
- Результат роботи компілятора (коли компілятор генерує не об'єктний код, а текст на мові асемблера), який можна переглянути і при потребі змінити
- Inline-інтегрування асемблерних команд безпосередньо в тіло програми на мові високого чи середнього рівня (C, Паскаль)
- Низькорівневі віруси чи руткіти
- Машинний код, що модифікує сам себе
- Реверс-інженеринг
- Програми, повністю незалежні від основних системних бібліотек (таких як libc чи crt0)
- Різні типи оптимізації, що з тих чи інших причин недоступні при кодуванні на мові високого рівня
Приклади
Приклади програми Hello, World! для різних платформ і асемблерів.
EXE-програма на TASM для MS-DOS, платформа Intel x86
- tasm hello.asm
- tlink hello.obj
.model small ; модель пам'яті .data ; сегмент даних msg db 'Hello, World',13,10,'$' ; текстове повідомлення .code ; сегмент коду start: ; точка входу в програму mov ax, @data ; налаштування сегментного mov ds, ax ; регістра даних mov ah, 09h ; функція DOS № 9 – вивести рядок lea dx, msg ; адреса текстового повідомлення int 21h ; виклик переривання DOS mov aр, 4Ch ; Функція DOS № 4Ch – завершити програму mov al, 0 ; код повернення 0 int 21h ; виклик переривання DOS end start
Програма на FASM для MS-DOS
org 100h ;зсув на 100h байт .model tiny ;модель пам'яті .data ;сегмент даних print db "hello world!$" ;рядок, який треба вивести .code ;сегмент коду mov ah, 9 ;функція MS-DOS номер 9 - вивести рядок mov dx, offset print ;запис в регістр dx адреси першого байту рядку print int 21h ;виклик 21-го переривання MS-DOS ret ;Повернення контролю операційній системі
Програма на NASM для Linux, платформа Intel x86
- nasm –f elf –o hello.o hello.asm
- ld -o hello hello.o
SECTION .data ; сегмент даних msg db "Hello, world!", 10 ; текстовий рядок len equ $ - msg ; довжина рядка SECTION .text ; сегмент коду global _start _start: ; точка входу в програму mov eax, 4 ; системний виклик № 4 (sys_write) mov ebx, 1 ; номер пристрою (stdout) mov ecx, msg ; текстове повідомлення mov edx, len ; довжина повідомлення int 0x80 ; виклик ядра mov eax, 1 ; системний виклик № 1 (sys_exit) mov ebx, 0 ; код повернення 0 int 0x80 ; виклик ядра
Програма на асемблері 6502 для Apple II
********************************* * HELLO WORLD FOR 6502 * * APPLE ][, MERLIN ASSEMBLER * ********************************* STROUT EQU $DB3A ; виводить текстовий рядок, адресований AY LDY #>HELLO ; завантажити старшу частину адреси тексту в регістр Y LDA #<HELLO ; завантажити молодшу частину адреси тексту в регістр A JMP STROUT ; перейти на підпрограму виведення рядка HELLOASC"HELLO WORLD!",00
Див. також
Джерела
- Кип Ирвин. Язык ассемблера для процессоров Intel = Assembly Language for Intel-Based Computers. — 4-е вид. — М. : Издательский дом «Вильямс», 2005. — 912 с. — . (рос.)
Примітки
- https://cs.lmu.edu/~ray/notes/x86assembly/
- Дудзяний І. М., Черняхівський В. В. Програмування мовою асемблера. — Львів: ЛНУ імені Івана Франка, 2002.
- Магда Ю. С. Ассемблер для процессоров Intel Pentium. — СПб.: Питер, 2006.
- David Salomon (1993). (PDF) (англ.). Архів оригіналу (PDF) за 23 березня 2020. Процитовано 12 січня 2018.
- Booth, A.D.; Britten, K.H.V. (September 1947). (PDF). Birkbeck College, London. Архів оригіналу (PDF) за 24 березня 2020. Процитовано 23 липня 2017.
- Campbell-Kelly, Martin (April 1982). The Development of Computer Programming in Britain (1945 to 1955). IEEE Annals of the History of Computing. 4 (2): 121—139. doi:10.1109/MAHC.1982.10016.
- Salomon. (PDF). с. 7. Архів оригіналу (PDF) за 23 березня 2020. Процитовано 17 січня 2012.
- . Архів оригіналу за 15 лютого 2020. Процитовано 17 січня 2012.
Посилання
- Уроки по Асемблеру — Ravesli(рос.) — уроки по Асемблеру для початківців.
![]() | Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ne plutati z Asemblerom komp yuternoyu programoyu translyatorom Mova asemblera angl assembly language mova programuvannya nizkogo rivnya dlya programovanoyi obchislyuvalnoyi sistemi mikroprocesora mikrokontrolera komp yutera abo inshogo programovanogo pristroyu v yakij isnuye suvora vidpovidnist mizh operatorami movi ta mashinnimi komandami Asembler takozh nazivayut simvolichnim mashinnim kodom abo mnemokodom Mova asembleraParadigma dData poyavi 1949Zvichajni rozshirennya fajliv asm abo s 1 Mediafajli u VikishovishiListing Motorola MC6800 Assembly yakij pokazuye originalnij tekst programi ta zgenerovani mashinni kodi Kozhna mova asemblera specifichna dlya konkretnoyi komp yuternoyi arhitekturi Na vidminu vid cogo programi na movah programuvannya visokogo rivnya yak pravilo zdatni vikonuvatisya na dekilkoh arhitekturah hocha vimagayut specifichnoyi dlya platformi interpretaciyi abo kompilyaciyi Programa movoyu asemblera peretvoryuyetsya u vikonuvanij mashinnij kod za dopomogoyu programi asemblera Proces peretvorennya nazivayut asemblyuvannyam abo zbirkoyu angl assembly assembling U bilshosti vipadkiv cej proces vidbuvayetsya u dva etapi asemblyuvannya i komponuvannya angl linking AsemblerDokladnishe Asembler Asembler angl assembler skladalnik komp yuterna programa sho generuye ob yektnij dvijkovij kod z zadanoyi yak pravilo u tekstovomu viglyadi poslidovnosti mashinnih instrukcij Kozhna instrukciya maye svoyu mnemoniku i skladayetsya z simvolichnoyi nazvi napriklad MOV vid angl move peremistiti za yakoyu opcionalno mozhut sliduvati operandi Asembler takozh obchislyuye znachennya konstant i zdijsnyuye simvolichnih imen i yaksho potribno zapisuye u ob yektnij fajl adresi yaki potribno modifikuvati pid chas komponuvannya chi zavantazhuvannya programi Vikoristannya simvolnih posilan i avtomatizaciya obchislen adres ye odniyeyu z klyuchovih osoblivostej asemblera yaka zvilnyaye programista vid kropitkih ruchnih obchislen yaki dovodilosya b robiti navit pri dodavanni chi viluchenni odniyeyi instrukciyi programi Bilshist asembleriv takozh mayut makrokomandi sho dozvolyayut zaminyuvati u programi povtoryuvani fragmenti kodu viklikom makrosa U prostomu vipadku asembler perevodit odnu operaciyu mashinnu komandu z parametrami pochatkovoyi programi u vidpovidnij mashinnij kod tak zvana translyaciya odin v odin Pri comu vzayemne roztashuvannya kodiv instrukcij u ob yektnomu moduli viznachayetsya poryadkom operacij u pochatkovij programi i povnistyu zalezhit vid programista Dlya rozshirennya mozhlivostej nizkorivnevogo programuvannya asembleri mozhut realizovuvati pidtrimku makrokomand grup komand sho mozhut vstavlyatisya do programi potribnu kilkist raziv V comu vipadku pered translyaciyeyu provoditsya zamina makrokomand makrorozshirennyami poslidovnostyami komand na bazovij movi vidpovidno do makrooznachen U ostannih zadayetsya prototip makrokomandi zi strukturoyu spisku parametriv i procedura generuvannya makrorozshirennya Translyator sho vikonuye funkciyi makrogeneratora i asemblera nazivayetsya makroasemblerom Pri translyaciyi z mov visokogo rivnya asembler neridko vikoristovuyetsya dlya vikonannya zavershalnoyi fazi translyaciyi Translyaciya zazvichaj vimagaye dvoh pereglyadiv pochatkovoyi programi pri pershomu pereglyadi zdijsnyuyetsya rozpodil pam yati i nadannya znachen simvolichnim imenam pri drugomu formuyetsya robocha programa u viglyadi ob yektnogo fajlu V procesi translyaciyi asembler provodit povnij sintaksichnij kontrol pochatkovoyi programi zabezpechuyuchi pri comu dostatno tochnu diagnostiku pomilok za miscem i harakterom Vvazhayetsya kim sho mova asemblera ye nizkorivnevoyu na protivagu movam programuvannya visokogo rivnya sho chastkovo chi povnistyu abstraguyutsya vid detalej realizaciyi komand procesora Chim nizhchij riven movi programuvannya tim blizhcha specifika roboti programi do samogo procesora dlya yakogo vona j bula napisana Vvazhayetsya kim sho movi nizkogo rivnya skladnishi j potrebuyut bilsh vuzkoyi specializaciyi programista oskilki programa napisana na asembleri dlya odnogo tipu procesoriv viyavitsya ne zavzhdi pridatnoyu dlya roboti z inshimi procesorami Z inshogo boku programi napisani na asembleri kompaktni ta shvidki sho tezh vazhlivo Opis movi asembleraCej 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 Komandi movi asemblera vidpovidayut mashinnim kodam vidpovidnogo mikroprocesora chi mikrokontrolera Faktichno mova asemblera yavlyaye soboyu zruchnishu simvolnu formu zapisu mashinnih komand Yak naslidok programi napisani dlya odnogo tipu procesoriv na inshomu ne budut funkcionuvati Mova asemblera takozh mistit zasobi dlya stvorennya mitok ta perehodiv sho neobhidno dlya stvorennya cikliv ta rozgaluzhen Mozhut buti nayavni zasobi dlya stvorennya makrosiv procedur Kozhne simejstvo modelnij ryad mikroprocesoriv maye svij nabir komand i vidpovidno svij nabir instrukcij na movi asemblera Perevagi i nedoliki minimalna kilkist nadlishkovogo kodu vikoristannya menshoyi kilkosti komand ta zvernen v pam yat Yak naslidok velika shvidkist i menshij rozmir programi veliki obsyagi kodu velike chislo dodatkovih dribnih zavdan pogana chitabelnist kodu trudnoshi pidtrimki nalagodzhennya dodavannya mozhlivostej trudnoshi realizaciyi paradigm programuvannya ta bud yakih inshih skilki nebud skladnih konvencij skladnist spilnoyi rozrobki menshu kilkist dostupnih bibliotek yih mala sumisnist bezposerednij dostup do aparaturi portam vvedennya vivedennya osoblivim registram procesora maksimalna pidgonka dlya potribnoyi platformi vikoristannya specialnih instrukcij tehnichnih osoblivostej zaliza nemozhlivist roboti na platformah z inshoyu nesumisnoyu arhitekturoyu Direktivi Div takozh Direktiva programuvannya Krim instrukcij programa mozhe mistiti direktivi komandi sho ne perevodyatsya bezposeredno v mashinni instrukciyi a keruyut robotoyu kompilyatora Nabir i sintaksis yih znachno riznyatsya i zalezhat ne vid aparatnoyi platformi a vid vikoristovuvanogo kompilyatora porodzhuyuchi dialekti mov v mezhah odnogo simejstva arhitektur Yak nabir direktiv mozhna vidiliti viznachennya danih konstant i zminnih keruvannya organizaciyeyu programi v pam yati i parametrami vihidnogo fajlu zavdannya rezhimu roboti kompilyatora vsilyaki abstrakciyi tobto elementi mov visokogo rivnya vid oformlennya procedur i funkcij dlya sproshennya realizaciyi paradigmi procedurnogo programuvannya do umovnih konstrukcij i cikliv dlya paradigmi strukturnogo programuvannya makrosi Vikoristannya moviIstorichni vidomosti Movi asemblera tak samo yak i vikoristannya slova assembly berut svij pochatok vid pershih EOM zi zberezhennyam programi Odin z pershih asembleriv bulo rozrobleno u 1947 roci Katlin But Kathleen Booth dlya mashini ARC2 v universiteti Birkbek London pislya konsultacij z Dzhonom fon Nojmanom i Germanom Goldstinom u Instituti perspektivnih doslidzhen Mashina EDSAC u 1949 roci mala asembler pid nazvoyu initial orders z odnoliternimi mnemonikami Dlya mashin IBM 650 isnuvala programa SOAP Symbolic Optimal Assembly Program napisana Stenom Poli Stan Poley u 1955 mu Movi asemblera dozvolili vivilniti programistiv vid nadzvichajno nizkorivnevih rutinnih i vtomlivih ruchnih procedur yakih potrebuvali pershi komp yuteri zapam yatovuvannya lyudinoyu kodiv komand adres ruchnogo obchislennya adres perehodiv i zmini yih pri kozhnomu dodavanni chi viluchenni komand predstavlennya chisel tosho Priblizno do seredini 1980 h rokiv asembleri shiroko vikoristovuvalisya u programuvanni yak dlya velikih EOM mejnfrejmiv tak i dlya personalnih i mikrokomp yuteriv Vtim progres u rozvitku procesoriv i pam yati sprichiniv aktivnij progres metodiv kompilyaciyi z visokorivnevih mov i poyavu kompilyatoriv sho znachno pidvishuvali produktivnist roboti programista U 21 mu stolitti movi asemblera vikoristovuyutsya tam de potribne pryame keruvannya aparaturoyu dostup do specializovanih instrukcij procesora chi spivprocesoriv abo dlya koduvannya kritichnih do chasu chi rozmiru sekcij programi Tipovimi sferami zastosuvannya asemblera ye drajveri pristroyiv vbudovani sistemi sistemi realnogo chasu yadra OS rezidentni monitori tosho Bagato vazhlivih program bulo napisano cilkom na movi asemblera lishe u 1961 mu z yavilasya persha operacijna sistema napisana chastkovo na movi visokogo rivnya algolopodibnij ESPOL Velika kilkist komercijnogo programnogo zabezpechennya dlya mejnfrejmiv IBM takozh napisana na asembleri Bilshist rannih mikrokomp yuteriv obmezhenih u operativnij pam yati potrebuvalo programnogo zabezpechennya napisanogo vruchnu majzhe viklyuchno na asembleri vklyuchno z kodom BIOS diskovoyi operacijnoyi sistemi i velikoyi kilkosti prikladnih program Tipovimi prikladami velikih asemblernih program 1970 80 h rokiv ye BIOS i DOS dlya komp yuteriv IBM PC kompilyator Turbo Pascal pershi programi elektronnih tablic napriklad chislenni komp yuterni igri Zastosuvannya u ninishnij chas Z chasiv vinahodu pershih kompilyatoriv jshli debati shodo docilnosti vikoristannya movi asemblera u programuvanni prikladnih zadach Vtim sistemne programuvannya zavzhdi lishalosya osoblivoyu nisheyu de asembler buv i zalishayetsya vazhlivim Movi asemblera dosi vivchayutsya na bilshosti kursiv informatiki i elektroniki ta mikroprocesornoyi tehniki Fundamentalni ponyattya taki yak dvijkova arifmetika keruvannya pam yattyu stek koduvannya simvoliv pererivannya proyektuvannya kompilyatoriv tosho mozhut buti povnistyu osyagneni lyudinoyu lishe pri gruntovnomu rozuminni roboti komp yutera na aparatnomu rivni sho neodminno peredbachaye rozuminnya naboru komand i adresaciyi procesora Prikladi zastosuvan Gipervizori Realizaciya kriptografichnih i inshih specifichnih algoritmiv napriklad cifrovogo peretvorennya signaliv Fragmenti yader OS abo cili mikroyadra prikladi ranni L3 L4 Pochatkovi zavantazhniki Firmware rezidentni monitori BIOS Rezultat roboti kompilyatora koli kompilyator generuye ne ob yektnij kod a tekst na movi asemblera yakij mozhna pereglyanuti i pri potrebi zminiti Inline integruvannya asemblernih komand bezposeredno v tilo programi na movi visokogo chi serednogo rivnya C Paskal Nizkorivnevi virusi chi rutkiti Mashinnij kod sho modifikuye sam sebe Revers inzhenering Programi povnistyu nezalezhni vid osnovnih sistemnih bibliotek takih yak libc chi crt0 Rizni tipi optimizaciyi sho z tih chi inshih prichin nedostupni pri koduvanni na movi visokogo rivnyaPrikladiPrikladi programi Hello World dlya riznih platform i asembleriv EXE programa na TASM dlya MS DOS platforma Intel x86 tasm hello asm tlink hello obj model small model pam yati data segment danih msg db Hello World 13 10 tekstove povidomlennya code segment kodu start tochka vhodu v programu mov ax data nalashtuvannya segmentnogo mov ds ax registra danih mov ah 09 h funkciya DOS 9 amp nbsp vivesti ryadok lea dx msg adresa tekstovogo povidomlennya int 21 h viklik pererivannya DOS mov ar 4 Ch Funkciya DOS 4Ch amp nbsp zavershiti programu mov al 0 kod povernennya 0 int 21 h viklik pererivannya DOS end start Programa na FASM dlya MS DOS org 100 h zsuv na 100h bajt model tiny model pam yati data segment danih print db hello world ryadok yakij treba vivesti code segment kodu mov ah 9 funkciya MS DOS nomer 9 vivesti ryadok mov dx offset print zapis v registr dx adresi pershogo bajtu ryadku print int 21 h viklik 21 go pererivannya MS DOS ret Povernennya kontrolyu operacijnij sistemi Programa na NASM dlya Linux platforma Intel x86 nasm f elf o hello o hello asm ld o hello hello oSECTION data segment danih msg db Hello world 10 tekstovij ryadok len equ msg dovzhina ryadka SECTION text segment kodu global start start tochka vhodu v programu mov eax 4 sistemnij viklik 4 sys write mov ebx 1 nomer pristroyu stdout mov ecx msg tekstove povidomlennya mov edx len dovzhina povidomlennya int 0x80 viklik yadra mov eax 1 sistemnij viklik 1 sys exit mov ebx 0 kod povernennya 0 int 0x80 viklik yadra Programa na asembleri 6502 dlya Apple II HELLO WORLD FOR 6502 APPLE MERLIN ASSEMBLER STROUT EQU DB3A vivodit tekstovij ryadok adresovanij AY LDY gt HELLO zavantazhiti starshu chastinu adresi tekstu v registr Y LDA lt HELLO zavantazhiti molodshu chastinu adresi tekstu v registr A JMP STROUT perejti na pidprogramu vivedennya ryadka HELLO ASC HELLO WORLD 00Div takozhHLA Dvijkovij kod MikrokontrolerDzherelaKip Irvin Yazyk assemblera dlya processorov Intel Assembly Language for Intel Based Computers 4 e vid M Izdatelskij dom Vilyams 2005 912 s ISBN 5 8459 0779 9 ros Primitkihttps cs lmu edu ray notes x86assembly Dudzyanij I M Chernyahivskij V V Programuvannya movoyu asemblera Lviv LNU imeni Ivana Franka 2002 Magda Yu S Assembler dlya processorov Intel Pentium SPb Piter 2006 David Salomon 1993 PDF angl Arhiv originalu PDF za 23 bereznya 2020 Procitovano 12 sichnya 2018 Booth A D Britten K H V September 1947 PDF Birkbeck College London Arhiv originalu PDF za 24 bereznya 2020 Procitovano 23 lipnya 2017 Campbell Kelly Martin April 1982 The Development of Computer Programming in Britain 1945 to 1955 IEEE Annals of the History of Computing 4 2 121 139 doi 10 1109 MAHC 1982 10016 Salomon PDF s 7 Arhiv originalu PDF za 23 bereznya 2020 Procitovano 17 sichnya 2012 Arhiv originalu za 15 lyutogo 2020 Procitovano 17 sichnya 2012 PosilannyaUroki po Asembleru Ravesli ros uroki po Asembleru dlya pochatkivciv Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi