Ассемблерді арапайым рылымдары

Ассемблер тілін оуды атаулар (идентификаторлар), сандар жне жолдар (символдар тізбегі) трізді арапайым рылымдарды - жазылу ережелерінен бастаймыз.

Идентификаторлар

Идентификатор программаны ртрлі обьектілерін - айнымалыларды, белгілерді, амалдар атауларын жне т.б. - белгілеу шін ажет.

Ассемблер тілінде идентификатор латын ріптерінен (бас, кіші), цифрлардан жне ? . @ _ $ символдарынан тратын тізбек.

Идентификаторлара келесі шектеулер ойылады:

· идентификаторды зындыы 255 сивола дейін жетуі ммкін, біра транслятор оларды алдыы 31 символын ана таниды;

· идентификатор цифрдан басталмайды ( 7А – ате, А7 – дрыс );

· нкте идентификаторды бірінші символы ана болуы ммкін (.А – дрыс, А. - ате );

· идентификаторда бір атаулы бас жне кіші ріптер эквивалентті болып саналады ( АХ, Ах, аХ жне ах – брі бірдей ).

Идентификаторды ммкін болатын зындыын(ТАSM-де) командалы жолда /mv кілтін пайдалану арылы згертуге болады. Сонымен атар транслятора бас жне кіші ріптерді ажыратуды крсету ммкіндігі бар.

Идентификаторлар ызметші сздер жне атаулар болып блінеді. ызметші сздер – транслятор шін маынасы алдын-ала аныталан сздер. Олар регистрлер (АХ, SI т.с.с.), командалар атаулары (ADD, NEG т.с.с.) жне т.б. объектілерді белгілеуде олданылады. Баса идентификаторлар атаулар деп аталады, программа жасаушы оларды айнымалыларды, белгілерді жне баса программа объектілерін белгілеу аралы зіні алауынша олдана алады.

Бтін сандар

Бтін сандар 10-ды , 2-лі , 8-дік жне 16-лы санау жйелерінде жазылады. Онды санау жйесінде сандар деттегідей жазылады, ал баса санау жйелеріндегі сандарды соында спецификатор - ріп (арнайы белгі) ойылады. Ол ріп санны андай санау жйесінде жазыланын крсетеді. Екілік санау жйесінде жазылан санны соында b (binary ) ріпі, сегіздік санау жйесінде жазылан санны соында o(octal) немесе q (“o” ріпі нлге сайды, сондытан шатастырып алмас шін “q” ріпі жазылады) ріпі, ал оналтылы санау жйесінде жазылан санны соында h ріпі жазылады. Онды санау жйесінде жазылан санны соында d ріпі жазылады, біра жазбаса да болады.

Мысалдар:

онды сандар: 123,-386,+40,123d,-386d,101d

екілік сандар: 101b,-11000b

сегіздік сандар: 74q,-74q,101b

он алтылы сандар: 1AFh,-1AFh

Оналтылы санды жазу барысында, егер бндай сандар «ріптік» цифрдан (А-F) басталса, мысалы А25h, онда бл жазуды санды немесе идентификаторды крсетіп траны тсініксіз. Сондытан шатаспас шін: егер оналтылы сан А–F символдарынан басталса, онда санны алдына міндетті трде е болмаанда бір нл жазу керек. Мысалы 0А25h – сан, ал А25h – идентификатор.

3.1.3 Жолдар (символдар тізбегі)

Жолдар бір немесе ос тырнашалара алынып жазылан символдар тізбегі: ‘А’, “А”,‘АВС’, “АВС”.

Айта кететін жайттар:

· символдар ретінде орыс, аза алфавиттеріні ріптерін олдануа болады;

· жолдарда бас жне кіші ріптер бірдей болып есептелмейді;

· егер жол ішінде символ ретінде тырнаша олданылатын болса, онда ол былайша жасалады: егер жол бір тырнашалара алынып жазылан болса, онда бір тырнашалар екі рет айталанады, ал ос тырнашалар айталанбайды, жне керісінше, егер жол ос тырнашалара алынып жазылан болса, онда ос тырнашалар екі рет айталанады, ал бір тырнашалар айталанбайды:

 

Сйлемдер

Ассемблерде программа сегменттер деп аталатын жеке блоктара блінеді. Программа осындай бір немесе бірнеше сегменттерден труы ммкін. Программа сегменттері оларды типтеріне (кодтар, мліметтер, стек) байланысты белгілі бір атаулаа иеленеді. Программаны сегменттерге блінуі Intil процессорларыны жадты сегментттеп йымдастыруыны нтижесі. р сегмент тілді сйлемдері деп аталатын жеке жолдардан трады.

Сйлемді келесі жола тсіруге немесе бір жола екі сйлем жазуа болмайды. Егер сйлемде 131-ден арты символ болса, онда 132-ші символ жне алан символдар ескерілмейді. Сйлемдерді жазылуында пробел ою ережелерін ескеру ажет:

· атар тран идентификаторлар немесе сандар арасына міндетті трде е болмаанда бір пробел ойылады;

· идентификаторды жне санны ішіне пробел ойылмайды;

· алан жерлерде пробелды ойса да, оймаса да болады;

· бір пробел ойылан жерге таы да пробелдер оюа болады.

Ассемблер тілінде сйлемдер маынасына арай ш топа блінеді:

· коментариилер (тсініктемелер),

· командалар,

· директивалар.

Ассемблер трансляторыны бл сйлемдерді тсінуі шін сйлемдер белгілі бір ережелерге сйкес рылады.

Осыларды райсысын жеке – жеке арастырамыз.

3.2.1 Тсініктемелер (Комментариилер)

Сйлемдер-тсініктемелер программаны маына-сына сер етпейді, трансляциялану кезеінде олар ескерілмейді. Олар программада тсініктемелер жазу шін олданылады.

Тсініктемелерді алдына «тір нкте» (;) ойылады. Тсініктемелерде кез келген символды жне орыс, каза ріптерін олдануа болады. Мысалы, келесі программада 1-ші жне 4-ші жолдар тсініктемелер:

;бл тсініктеме

ADD AX, 0

MOV BX, 2

;соы

Сйлемдер-тсініктемелер бір ана команда шін емес, тсініктемелерді соында келтірілетін командалар тобын тсініктемелеу шін де олданылады. Бос жолдарды детте программаны бірнеше бліктерге блу шін пайдалауа болады.

Ассемблер тілінде кп жолды тсініктемелер де олданылады. Ол COMMENT жолынан басталады:

COMMENT < маркер > < мтін >

(СOMMENT – АТ директиваларыны бір). Маркер ретінде COMMENT сзінен кейінгі, пробелдан згеше, алашы символ алынады. Бл символ тсініктемелерді соында да ойылады. Мысалы:

COMMENT * осыны брі тсініктеме болып саналады *

Командалар

Сйлемдер–командалар машиналы команданы символды трде жазылуы. Жалпы жазылу синтаксисі:

[<белгі>]<мнемокод>[<операндалар>][;<тсіні-ктеме>]

Мысалы:

LAB: ADD SI,2 ;индексті згерту

NEG A

СBW

Белгі – символды атау. Егер белгі бар болса, онда одан кейін міндетті трде ос нкте ойылады. Белгіні мні осы белгі ойылан команданы бірінші байтыны адресін білдіреді. Белгі программаны баса жерінен командаа ту шін ажет.

Ассемблерде жолда тек белгі ана ойюа (ос нктемен) болады. Бндай белгі, программаны келесі командасын белгілейді деп есептеледі. Бл екі жадайда пайдалы: команданы екі немесе одан да кп белгімен белгілеу ажет боланда жне белгі те зын боланда команданы алан блігі оа арай кп жылжып кетпеу шін.

Мысалы:

INITIALIZATION:

LAB: ADD BX,AX

Мнемокод (мнемоникалы код) команданы міндетті блігі. Бл команда орындайтын амалды символды трінде крсететін ызметші сз. Ассемблерде амалды цифрлы коды олданылмайды, амалдар тек есте тез саталатын зіні символды атауларымен крсетіледі («мнемоникалы» деген сз «жеіл саталатын» маынасын білдіреді ).

Операндтар- командалар мен директиваларда берілетін амалдарды орындауа атысатын объектілер. Команда операндтар бар болан жадайда, олар пробелдермен ажыратылады. детте операндтар рнек трінде жазылады. арапайым жадайда: сандар, айнымалылар. Ассемблер командасыны машина командасынан айырмашылыы яшытарды адрестері крсетілмейеді, жне андай-да бір айнымалылара (яшыа) атынау шін оан атау беріліп, командада сол атау крсетіледі.

Тсініктемелерді команданы соында да келтіруге болады. Ол шін тір нкте ойып, артынан кез келген тсініктеме ретінде арастырылан мтінді жазу керек. Бндай тсініктемелерді сйлем–тсініктемелерден згешелігі олар натылы берілген команданы тсініктеу шін олданылады.

Директивалар

Ассемблер тілінде машиналы командалардан баса хабарламалар да крсетіледі. Мысалы, программада андай типті айнымалылар мен тратылар олданылады жне олара андай атаулар берілетіні жайлы хабарлама. Ол хабарламаларды директивалар деп атайды.

Директиваны жазылу синтасисі:

[<обьектіні аты>]<директива> <операндалар> [;<тсініктеме>]

Мысал:

X DB 10,-56 OFFh ;X массив

Жалпы директиваны жазылуы команданы жазылу форматы трізді. Айырмашылыы: директива міндетті трде онда сипатталатын тратылар мен айнымалыларды атауларнан басталады. Директива аты мнемокод сияты ызтемші сз болып саналады. Жне де, андай ызметші сздер андай директиваны жне мнемокодты анытайтыны алдын – ала белгілі, шатастырып алу ммкін есес. Директиваны алан бліктері (операндтар мен тсініктемелер) командадаы трізді жазылады.