У чланку ће се расправљати о основама асемблерског језика у односу на архитектуру вин32. То је симболичан запис стројних кодова. У сваком електронском рачунару, најнижи ниво је хардвер. Овде се управљање процесима одвија са инструкцијама или инструкцијама на машинском језику. Управо у овој области асемблер треба да ради.
Писање програма у асемблеру је изузетно тежак и скуп процес. Да бисте креирали ефикасан алгоритам, потребно вам је дубоко разумевање рада рачунара, познавање детаља команди, као и повећана пажња и тачност. Ефикасност је критични параметар за програмирање у асемблеру.
Главна предност језика асемблера је у томе што вам омогућава да креирате кратке и брзе програме. Стога се, по правилу, користи за рјешавање специјализираних проблема. Потребан вам је код који ефикасно ради са хардверским компонентама, или вам је потребан програм који захтева меморију или време извршавања.
Регистри у језику асемблера се зову меморијске ћелије које се налазе директно на чипу са АЛУ (процесором). Карактеристика ове врсте меморије је брзина приступа њој, која је много бржа од РАМ-а рачунара. Назива се и ултрабрзо РАМ (ПопС или СРАМ).
Постоје следеће врсте регистара:
Постоји 8 регистара опште намене, сваки по 32 бита.
ЕАКС, ЕЦКС, ЕДКС, ЕБКС регистри се могу приступити у 32-битном, 16-битном - АКС, БКС, ЦКС, ДКС и 8-битном - АХ и АЛ, БХ и БЛ, итд.
Слово "Е" у именима регистара значи Проширено (проширено). Сами називи се односе на њихова имена на енглеском језику:
Специјализација РОН асемблерски језик је услован. Могу се користити у било којој операцији. Међутим, неке наредбе могу користити само одређене регистре. На примјер, наредбе петље користе ЕСКС за похрану вриједности бројача.
Регистар застава. Ово подразумева бајт, који може узети вредности 0 и 1. Комбинација свих заставица (има их око 30) показује стање процесора. Примери заставица: Царри Флаг (ЦФ) - Ознака ношења, Флаг заставе (ОФ) - оверфлов, Нестед Флаг (НТ) - заставица задатка и многи други. Заставе су подељене у 3 групе: статус, управљање и систем.
Индекс команди (ЕИП - Инструцтион Поинтер). Овај регистар садржи адресу инструкције, која се мора извршити следеће, осим ако није другачије назначено.
Сегментни регистри (ЦС, ДС, СС, ЕС, ФС, ГС). Њихово присуство у асемблеру диктира посебна контрола РАМ-а како би се повећала његова употреба у програмима. Захваљујући њима, било је могуће управљати меморијом до 4 ГБ. У Вин32 архитектури нема потребе за сегментима, али имена регистара се чувају и користе другачије.
Ово је меморијско подручје додељено за покренуте процедуре. Особитост стацк-а је да су најновији подаци који су написани на њега први доступни. Другим речима: први уноси у стог се добијају последњи пут. Овај процес можете замислити као торањ скица. Да бисте добили контролер (доњи контролер у подножју торња или било који у средини) прво морате уклонити све што лежи на врху. И, сходно томе, последњи комад постављен на торањ, прво се уклања приликом рашчлањивања куле. Овај принцип организовања меморије и рада са њим диктира њена економија. Стацк се константно брише и сваки пут када га користи једна процедура.
Идентификатор у асемблеру програмског језика има исто значење као у било ком другом. Дозвољена су латинична слова, бројеви и симболи "_", ".", "?", "@", "$". У овом случају, велика и мала слова су еквивалентна, а тачка може бити само први знак идентификатора.
Интегер бројеви у асемблеру могу бити специфицирани у референтним системима са базама 2, 8, 10 и 16. Сваки други унос бројева ће асемблер сматрати као идентификатор.
Дозвољено је да се користе и апострофи и цитати у писаним карактерним подацима. Ако треба да наведете једну од њих у низу знакова, правила су следећа:
Да би навели коментаре на језику асемблера, користи се симбол са зарезом - ";". Допуштено је користити коментаре и на почетку реда и након наредбе. Коментар завршава с новом линијом.
Директива еквиваленције се користи на сличан начин као и други константни изрази. Еквивалентност је назначена на следећи начин:
EQU
Тако у програму сви догађаји
Укуцани су језици високог нивоа (Ц ++, Пасцал). То јест, они користе податке који имају одређени тип, постоје функције за њихову обраду, итд. У асемблеру програмског језика не постоји таква ствар. Постоји само 5 директива за дефинисање података:
Слово Д значи Дефине.
Свака директива се може користити за декларисање било којих података и поља. Међутим, за низове се препоручује ДБ.
Синтакса:
DQ [, ]
DQ [, ]
DQ [, ]
Као операнд, дозвољено је користити бројеве, симболе и знак питања - “?”, Означавајући варијаблу без иницијализације. Размотрите примере:
real1 DD 12.34char db 'c'ar2 db '123456',0 ; массив из 7 байтnum1 db 11001001b ; двоичное числоnum2 dw 7777o ; восьмеричное числоnum3 dd -890d ; десятичное числоnum4 dd 0beah ; шестнадцатеричное числоvar1 dd ? ; переменная без начального значенияar3 dd 50 dup (0) ; массив из 50 инициализированных эл-товar4 dq 5 dup (0, 1, 1.25) ; массив из 15 эл-тов, инициализированный повторами 0, 1 и 1.25
Синтакса наредби за монтажу или инструкција асемблера је следећа:
Ознака (ознака :) мора да се заврши двоточком и може се поставити на посебну линију. Ознаке се користе за упућивање на наредбе унутар програма.
Упутства указују на операцију коју треба извршити. У асемблеру су операције представљене у облику словних скраћеница како би се олакшало разумијевање. Упутства се такође могу назвати мнемоника.
У улози операнда команде могу бити:
Адреса се може преносити на неколико начина:
У асемблеру, адреса се преноси кроз углате заграде. Пошто је променљива и адреса, може се користити са или без угластих заграда.
Поред тога, постоје скраћенице у асемблеру: р за регистре, м за меморију и и за операнд. Ове скраћенице се користе са бројевима 8, 16 и 32 за означавање величине операнда: р8, м16, и32, итд.
add i8/i16/i32, m8/m16/m32 ;суммирование операнда с ячейкой памяти
Ова инструкција је главна међу наредбама асемблера. Омогућава вам да у регистар запишете вредност другог регистра, меморијске ћелије или константе. Он такође уписује вредност регистра или константе у меморијску ћелију. Синтакса команде:
MOV ,
MOV ,
Постоје и друге команде у процесору за имплементацију преноса. На пример, КСЦХГ је наредба за размену операнада вредностима. Али са становишта програмера, сви су они имплементирани кроз основну МОВ команду. Размотрите примере:
MOV i, 0 ; Записать в i значение 0MOV ECX, EBX ; Пересылка значения EBX в ECX
У облику операнда може да делује као регистар и меморијска ћелија. Међутим, ако се садржај двају регистара може преуредити, онда нема две меморијске ћелије. Треба пазити да су операнди исте величине. Такође имајте на уму да МОВ наредба не мијења вриједност заставица.
Даљње теоријско проучавање асемблера може бити тешко, па бисте требали размислити о алатима који се користе за развој програма с њим. Овде ћете видети само кратку листу популарних алата:
Постоји много алата. У овом случају, треба посебно напоменути да не постоји јединствени стандард за синтаксу асемблера. Постоје 2 најпогоднија: АТ & Т синтакса, фокусирана на производне процесоре који нису Интел, и, сходно томе, Интел синтакса.
Упркос очигледној сложености, асемблер је једноставан програмски језик, који је лако разумљив. Стога, можете без проблема користити образовну литературу о сличности "асемблер за лутке" и научити овај предивни језик.