Асэмблер

Што такое Асэмблер?

Працэсарамі кіруюць з дапамогай машынных інструкцый. Праграмісту складана выкарыстоўваць машынныя інструкцыі для напісання праграм. Тут на дапамогу прыходзяць мовы Ассемблеров. Розных сямействаў працэсараў адпавядаюць розныя мовы Ассемблеров. Праграма для працэсара пишится на Асэмблеры, далей яна транслюецца ў машынныя коды. Ассемблеры ставяцца да мовах нізкага ўзроўню.

Такім чынам, разгледзім праграмаванне на Асэмблеры. Але перш успомнім сістэмы злічэння.

Двайковая сістэма злічэння

У кампутарах прымяняецца двайковая сістэма злічэння. Чаму так?

Электронныя элементы, з якіх пабудаваны кампутар, могуць успрымаць электрычны сігнал. Іх стан змяняецца ў залежнасці ад наяўнасці або адсутнасці сігналу. Такім чынам, важна — есць сігнал або няма сігналу, так ці не. Двайковыя злічэння добра апісвае гэтую карціну, бо ў ім маюцца толькі дзве лічбы: 0 і 1. У двайковых лічбаў есць адмысловая назва — біт.

Калі вы не знаемыя з двайковай сістэмай злічэння, то цяпер самы момант пазнаеміцца. Без разумення двайковай сістэмы злічэння немагчыма асвоіць мову Асэмблера. Простую артыкул па двайковай сістэмай злічэння гл. тут.

Шаснаццаткавая сістэма злічэння

Шаснаццаткавая сістэма злічэння ўжываецца для спрашчэння працы з двайковай сістэмы злічэння.

4-рэ двайковай лічбы замяняюцца адной шаснаццатковай, што выдатна упрошает запіс.

У кампутарнай тэхніцы шырока выкарыстоўваецца шаснаццаткавая сістэма злічэння.

Калі вы не знаемыя з шаснаццаткавай сістэмай злічэння, то можаце прачытаць артыкул «Шаснаццаткавая сістэма злічэння», якая дапаможа вам разабрацца ў гэтай тэме. Без разумення шаснаццаткавай сістэмы злічэння немагчыма асвоіць мову Асэмблера.

Што такое «біт»?

Біт — гэта найменшая адзінка інфармацыі. Слова «біт», па-ангельску bit, паходзіць ад «binary digit», што значыць «двайковая лічба». Біт можа быць адзінкай або нулем, бо ў двайковай сістэме злічэння маюцца толькі дзве лічбы: 0 і 1.

Што такое «байт»?

Байт — гэта набор, які складаецца з 8-мі бітаў. Байт, як і біт, — гэта адзінка інфармацыі. Прыклад байта:

0 0 0 0 0 0 0 1

Біты ў байте нумаруюцца справа налева, ад нуля да сямі. У прыкладзе самы правы біт змяшчае адзінку, яго нумар — нуль, другі справа біт мае нумар адзін і змяшчае нуль і г. д.

У нашым прыкладзе ў байте захоўваецца двайковы лік адзін. А якое двайковы лік захоўваецца ў байте:

1 0 1 0 1 0 1 0

У гэтым байте захоўваецца двайковы лік 10101010. Якое дзесятковы лік адпавядае дадзенаму двоичному? Для адказу на гэтае пытанне кожны біт памножым на двойку ў ступені, роўнай нумары біта ў байте:

1 * 27 + 0 * 26 + 1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 =
128 + 0 + 32 + 0 + 8 + 0 + 2 + 0 = 170

Біт S

Калі цэлы лік мае знак, то крайні левы біт, т. е. старэйшы біт, утрымлівае паказальнік на знак ліку. Калі ў старэйшым біце захоўваецца лік 0, то гэты лік з’яўляецца станоўчым, а калі 1, то адмоўным. У гэтым выпадку старэйшы біт называецца біт S або знакавы біт.

Прадстаўленне адмоўных лікаў у кампутары

Каб запісаць адмоўнае лік трэба:
1. Інвертаваць біты колькасці, т. е. нулі замяніць адзінкамі, а адзінкі нулямі;
2. Да атрыманага ліку дадаць адзінку.

Прыклад. Дадзена двайковы лік 01101010, яго дзесятковы ўяўленне роўна 106. Атрымаем з яго адмоўнае лік, для гэтага инвертируем зыходнае лік:

01101010 > 10010101

т. е. нулі заменены адзінкамі, а адзінкі нулямі. Далей да атрыманага ліку дадаем адзінку:

10010101 + 00000001 = 10010110

Атрымалі адмоўнае ўяўленне зыходнага двайковага ліку, звярніце ўвагу, што сарший біт, крайні злева, 10010110, роўны адзінцы, а гэта кажа, што лік адмоўнае.

Для знаходжання модуля атрыманага адмоўнага ліку таксама трэба інвертаваць біты і дадаць адзінку. Инвертируем:

10010110 > 01101001

дадаем адзінку:

01101001 + 0000001 = 01101010

Атрымалі модуль ліку 10010110. Звярніце ўвагу, што старэйшы біт модуля 01101010 роўны нулю, а гэта кажа, што колькасць станоўчае.

Ўяўленне рэчыўных лікаў у нормализованном выглядзе

Колькасць педставляют у выглядзе:

pn * m

дзе p — аснова сістэмы злічэння,
n — парадак, гэта паказчык ступені, прадстаўлены цэлым лікам,
m — мантисса.

Такая форма прадстаўлення лікаў, яе яшчэ называюць прадстаўленнем лікаў з якая плавае коскі. Такім чынам, рэчыўны лік запісваецца ў выглядзе двух лікаў: парадку і мантиссы.

Акрамя таго адзін біт патрэбен для пазначэньня знака лічбы.

Знак можа мець і парадак, каб ўлічыць гэта да парадку дадаюць зрушэнне. Парадак плюс зрушэнне называюцца характарыстыкай. Для адзінарнай дакладнасці (single precision) зрушэнне роўна 127, значыць, калі ў характарыстыцы захоўваецца 127, то парадак роўны нулю, т. к. 127 — 127 = 0. Калі ў характарыстыцы захоўваецца 135, то парадак роўны 135 — 127 = 8. Калі ў характарыстыцы захоўваецца лік 126, значыць парадак роўны 126 — 127 = -1. Так за кошт зрушэння ўлічваецца знак парадку, а значыць, няма неабходнасці ў дадатковым знакавым біце для парадку.

Для двайны дакладнасці (double precision) зрушэнне роўна 1023.

Цяпер што такое нормализованный выгляд ліку. Для прыкладу разгледзім дзесятковы лік 18,5. Прадставім яго ў нормализованном выглядзе:

102 * 0,185

Коску мы перасунулі так, каб яна апынулася перад старэйшым разрадам, а каб зыходнае лік не змянілася, мы домножили яго на дзесяць у квадраце.

Іншы прыклад прадстаўлення ліку ў нормализованном выглядзе. Дадзена колькасць 0,0123, прадставіць яго ў нормализованном выглядзе. Робім так:

10-1 * 0,123

Коску мы перасунулі так, каб яна апынулася перад старэйшым разрадам, а каб зыходнае лік не змянілася, мы домножили яго на дзесяць у мінус першай ступені.

Вось чаму выкарыстоўваецца тэрмін «ліку з » » нефіксаванай коскай», коска перамяшчаецца для атрымання нормализованного выгляду ліку.

А зараз разгледзім ўяўленне двайковых лікаў у нормализованном выглядзе. Дадзена колькасць 0,01 b, прадставіць яго ў нормализованном выглядзе. Атрымліваем:

2-2 * 1.0 b

Нормализованное двайковы лік павінна пачынацца з адзінкі. Падстава двайковай сістэмы роўна двум, таму двойку ўзводзім ў ступень. Астатняе падобна прыкладам з дзесятковымі лікамі.

Так як нормализованное двайковы лік заўседы павінна пачынацца з адзінкі, то яе маюць на ўвазе, а фактычна запісваюць толькі дробную частку двайковага ліку. Гэта вызваляе адзін дадатковы біт для прадстаўлення мантиссы.