CPCRULE AMSTRAD CPC КОДИРАНЕ

ОСНОВНИ ЗНАНИЯ

ШЕСТИДЕСЕТИЧНО ЗАБЕЛЕЖКА: СИЛНИ БАЙТОВЕ И СЛАБИ БАЙтове

Винаги би било възможно, ако наистина искахме, да работим на машинен език, като предоставяме на компютъра данни във форма, която всички знаят: десетична нотация.
По ред причини обаче това не се препоръчва. Можем да цитираме три:

  • Някои преобразувания в шестнадесетичен ще бъдат необходими така или иначе при проектирането на програмата.
  • Шестнадесетичното номериране заема по-малко място от десетичното номериране (по-специално за числа над 99).
  • Всички произведения без изключение, свързани с този предмет или с подобен предмет, използват шестнадесетична нотация. Може и да свикнете веднага.

За да разберете какво е точно, започнете, като напишете това на вашата машина (директният режим ще бъде достатъчен, т.е. няма нужда да поставяте номер на ред):

ПЕЧАТЕТЕ ХЕКСАЛНО $ (43870)

Показаният отговор е: AB5E. Функцията HEX $ промени десетичното представяне на 43870 в шестнадесетичното му представяне. Двете цифри или букви вдясно се наричат ​​най-малко значимият байт, а двата отляво се наричат ​​най-значимият байт (в примера най-малко значимият байт е 5E и най-значимият байт AB).
Имайте предвид, че компютърът не се притеснява да напише 0, вероятно разположен вляво от последната цифра или последната буква.

2060 е представен в шестнадесетичен формат от 80C, което е еквивалентно на 080C. Следователно най-малко значимият байт е OC, а най-значимият байт 8.

HEX $ (255) = FF, което е еквивалент на OOFF. В този случай най-малко значимият байт е FF и най-значимият байт 0 (или, ако искате, няма силен байт - ще видим обаче, че нюансът може да бъде важен).
Обратното преобразуване (шестнадесетично - десетично) може да се направи, както следва:
Число в десетичен знак = най-малко значителен байт + (256 * най-значителен байт)

HEX $ (648) = 288 и & 88 + 256 * & 2 = 648

Знакът & показва на компютъра, че предаваната му цифра е в шестнадесетична нотация.
И накрая, трябва да се отбележи, че можем да представим само в шестнадесетични числа от - 32768 до 65535.
Отрицателните числа обаче представляват особен проблем, който ще оставим настрана, тъй като няма да се появи в нашите програми. За заинтересованите обаче ги уведомете, че:

  1. Шестнадесетичното представяне на числа, вариращи от - 32768 до - 1, е същото като това на числа от 32768 до 65535 (пример: HEX $ (- 21) = FFEB и HEX $ (65515) = FFEB).
  2. Следователно за да се направи шестнадесетично - десетично преобразуване, всъщност има две възможности:
  • Ако не искаме да вземем предвид знака (ако знаем например, че числото е положително), използваме формулата, представена по-горе.
  • Ако искате да вземете под внимание знака, трябва да използвате функция, наречена UNT. "

UNT (& FFEB) = - 21 и & EB + 256 * & FF = 65515

ПРОСТИ РЕГИСТРИ

За да дадем ясна представа за това, бихме могли да кажем, че програмирането на машинен език се състои до голяма степен в манипулирането на различни „кутии“, в които е възможно да се поставят стойности и които може например да се добавят и изваждат. между тях. Всяко от тези полета, наречено регистър, има име. Засега ще се спрем на седем от тези регистри: A, B, C, D, E, H и L.
За информация нека уточним, че регистър А се нарича още акумулатор.
Тези прости регистри, колкото и полезни да са, имат сериозен недостатък: можем да поставим числа само от 0 до 255. Ето защо има и двойни регистри.

ДВОЙНИ РЕГИСТРИ

Всъщност те са прости регистри, поставени две по две. Ще използваме три: BC, DE и HL.
В тези двойни регистри можем да поставим числа до 65535. Тук ще влязат в сила понятията нисък байт и голям байт.
За да поставим например стойността & AB5E (43870 в десетична запетая) в регистъра HL, ще е необходимо да поставим (казваме и зареждане) високия байт на тази стойност в H и ниския байт в L. След като бъде зареден, HL изглеждат така:

cpcrule

Този последен пример носи важна забележка: за да заредите двоен регистър с число, по-малко или равно на 255 (следователно без силен байт), е необходимо да се има предвид, че силният байт струва 0 и да се зареди в съответния регистрирам.

В заключение нека отбележим накрая, че ще трябва да използваме и малко специален двоен регистър, IX регистър. Този регистър се нарича индексен регистър.

За нас стекът няма да бъде нищо повече от това, което подсказва името му: редица данни, подредени една върху друга. Няма значение как се управлява от машината, основното е да знаете как да го използвате.
Традиционно сравнението, използвано да се говори за стека, е сравнението на стека от плочи и трябва да се признае, че е трудно да се намери по-добро.

Кажете, че миете чиниите. Първо измивате червена чиния, която сте оставили някъде, докато чакате изплакването. След това измивате синьо, което сте сложили на червеното, след това жълто, което сте сложили върху синьото. След като измиването приключи, вече можете да започнете да изплаквате. Ако вземете чиниите си така, както се появяват на стека, първият, който се изплаква, ще бъде последният, който ще бъде поставен, в този случай жълтия.