ПредишенСледващото

N-rslstavlenis lvoichno kolirovannyh lesyatichnyh номера.

Binary кодирани знак представяне на английски съкратено като BCD
(Двоичните десетичен). LRA - един от начините за представяне на информацията в десетичен за-
IU.

За да кодира всеки от цифри от 0 до 9 изисква само 4 бита, и 6 допустима
кодове, няма да бъдат използвани в ztom гледка.

Както за кодиране на десетични числа изисква 4 бита във всеки байт може za-
кодира две цифри. LRA се нарича Двоичното десетичната представителство.

Например, 0000 0000 -dvoichno кодирани знак представени
десетични явление 00
1001 1001 -dvoichno кодирани знак представени
явление десетична 99.

Аритметични операции на двоично кодирани
десетични числа

Грях странен нотация да представляват числа могат да доведат до потенциално
проблеми при събиране и изваждане,
опитайте се да добавите следните номера
BCD 1 08 0000 "00
BCD 03 0000 0011

BCD 0000 AND 1011

Ще забележите, че втората операция не е валиден и не е позволено в * представената
lenii Двоичното десетични числа. За да се компенсира тези трудности, е необходимо
използвате специална команда, "DAA", наречен "създаване десетичната аритметика
Действие ", за да коригира резултата от допълнение (т.е., добавяне на 6 ако резултатът от над
9 а).

След трудност илюстрира същия пример ще бъде генериран носене малко от
LSB двоично кодиран десетичен номер (на първата) в най-лявата.
Този "вътрешен трансфер трябва да бъдат взети под внимание и се добавя към втората цифра двоичен kodirovan-
Nogo десетични.

За да се установи това прехвърляне с помощта на "полу-ръчен знаме", "N".

LD и 12Н: натоварване буквален BCD "12"
добавите. 24H: добавете буквален BCD "24"

DAA: D ecimal коригира резултат

LD (ADDR), а: Запазете резултата
LOAD буквален - изтегляне literal- ДОБАВИ буквален - добави буквален; Десетичен ADJUST РЕЗУЛТАТ -
десетични настройка резултат съхраните резултат - съхраняване на резултата.

При програмиране, най-вероятно не е нужно да Binary Coded Decimal
представителство. Но е добре да знаете, че чип Z80 все още поддържа тази гледна точка, и
Екипът DAA улеснява живота на една малка група от потребители на Двоичното десетичната
представителство крака.

Е сигнал за прекъсване се изпраща на микропроцесора, което може да се случи по всяко
време и, най-общо казано, за спиране на изпълнението на настоящата програма (така, че га програма
Аз не знам за него).

Z80 осигурява механизъм доставка три прекъсване: искане автобус (BUSRG), не-
maskable прекъсване (NMI) и нормален прекъсване (INT).

^ ^ От гледна точка на програмиране, ние считаме, само обичайните maskable прекъсват

DI команда (прекъсване заключване) се прилага за нулиране (маскиране) и EI командата
(Премахване на защитата прекъсване) за монтаж (razmaskirovaniya).

Като цяло, нормално прекратяване ще доведе до факта, че настоящата програма ще тезгяха
поставени в стека и управление (оригинал възможно правописна грешка. преводи се дава по смисъла на. (
Забележка. на. ). С екип от RST ще бъдат прехвърлени към ROM нулевата страница. за vozvra-
scheniya прекъсне изисква RETI инструкция (връщане от прекъсване).

При нормална работа, на "Спектър" прекъсват активиран (EI), а от
бизнес програма е прекъсната 50 пъти в секунда. LRA прекъсване позволява ROM програмата, осъществена
fected клавиатура сканиране.

Може да се наложи да деактивирате прекъсвания в програмата си, тъй като той ускорява
ryaet изпълнение. Вие все още ще бъде в състояние да получи информация от клавиатурата, с условия
използвате собствен софтуер за това. Бъдете сигурни, за да се освободи прекъсването
Ния, когато завършите програмата, защото в противен случай системата няма да бъде в състояние да получи инвариант
формация от клавиатурата.

Komanla рестартиране (RST)

LRA - вероятно "наченки" на чип 8080, прилагани за целите на съвместимостта. следователно
е малко вероятно да стане, за да се използва подвижен команден в програмата си.

RST екип предимство е, че обикновено се използват съчетания могат vyz-
ДДС, разходи само един байт. В допълнение, RST екип отнема време menye
от командата CALL.

Недостатъкът на инструкцията RST е, че тя може да се използва само за означаване на едно-
солна осем допустими клетки горе.

Тъй като всички тези клетки се намират в ROM, можете да използвате тази poeimushest-
му в своя собствена програма. Има, обаче, е възможно да се използват съчетания
ROM. ако знаете какво правят, и по този начин да се използва командата RST.

Вие ще може да научите повече за инструкция RST от нашата книга "Доброто разбиране на СПЕКТЪР",
написана от д-р Иън Логан.

програми за писане AAP "Спектър"
Планиране вашата програма в машинен език

Програмиране на машинен език има gibkrrtyo аварийно в смисъл, че
Тя ви позволява да правите нищо. "

Защото на всички езици на по-високо ниво в крайна сметка ще трябва да преминем към ма-
езика автобус, всичко, което можете да програмирате на езика "Fortran" или "Cobol", или
всяка друга, може да се програмира в машинен език.

Допълнително предимство е, че програмата vpolnyaetsya машинния език
по-бързо.

Грехът на абсолютна гъвкавост обаче може да е капан за непредпазливите програмиране
Mista. С такава пълна свобода, можете да направите всичко, което искате. За разлика от оператора
топлоизолационна система "Спектър" за BASIC език ", например, не се изисква проверка на предложенията
по допустимостта.

Докато пишете, всеки брой на отбора ще бъде от определен тип, чипът ще Z80
справят всичко.

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

Ето защо, много важно е самодисциплина в разработването на програми за mashin-
Г-н език. Невъзможно е да се преувеличи значението на понятието подход "отгоре-надолу", за да програмиране
му в общо, но най-вече по отношение на програмирането на машината език Ном.

"Горе-долу" подход принуждава да прекъсне задача на по-малки единици и pozvolya-
проверка на развитието ви логика за дълго време, без да пишете
програмни реда текст.

Да предположим, че е искал да напише програма за кацане на Луната:
е най-добрият начин да си спомните, нещо като това:
Инстр даване на инструкции на екрана

скочи обратно инстр, докато е натиснат клавиша

DRAW да се направи пейзаж. започнат да се движат спускане

устройство с горната част на екрана
Lander движение LAND

ако се наредиха на газ, отидете в катастрофа
се върна на сушата, ако повърхността не е
достигнал
GROUND печат поздрави

се върнете към инстр за следващия план
CRASH печат съболезнования на жалко зало-
клетки

се върнете към инстр за следващия период.

Моля, имайте предвид, че всичко това "програма", написана на руски. На този ztape не
Това отнема всяко решение, независимо дали програмата ще бъде написана на езика на "BASIC" или mashin-
Г-н език. Такова решение, и не е нужно да се вземат - засаждане концепция на програмата до Луната не
Това зависи от метода за запис на текста.

Сега идва ztap логически проверки.

Можете изпълнява ролята на СБУ и да видим дали всички функции, които искате да включите в
програма са на разположение.

Не дали преходът към обектите, които искате да пиша, но забравих? Всичко, което правя? не

Дали излишните програми. Не трябва ли някои от обектите се движат в рутината.

Нека да погледнем отново в програма "- о-о! - Брой забравил някак си довърша
програма!

логиката описано по-горе може да бъде добре за някои приложения, като например
компютърни игри, но в програмата можете да Priit му, че би било хубаво да има възможност
Nost спиране на програмата.

Сега ние се промени последната част от програмата, както следва:
GROUND печат поздрави
продължавам

CRASH печат съболезнования на жалко зало-
клетки

FINISH поиска от играча дали да завърши
ако не, отидете на инстр
Ако е така, спрете

Имайте предвид, че ние използваме етикета, за да опише някои линии на програмиране
ние. Label - много ценен устройство, особено ако решите да ги кратък и съдържаше
поддържащо.

Когато това ниво е завършен, се движите по-дълбоко ниво, да направят същото
най с един от редовете или модули, описани по-горе.
Ето защо този подход се нарича отгоре-надолу.

Например, ние можем да рисувам единица следва "FI- НИШ", имайки предвид vvve:
ФИНЛАНДСКО изчистване на екрана

печат: "Искате ли да довърша?"
Разпитай клавиатурата чака отговор
Ако отговорът = да, покритие
отидете на инстр

Друго предимство на подхода отгоре-надолу е, че можете да пробвате и
извършване на специфични модул автономно, така че ще бъдат отстранени грешки за включване на финала
ТА програма текст.

Да вървим надолу по едно ниво, и погледнете в линия, за да изчистите zkran повече под-
детайл.

На този етап ние трябва да се вземе решение по какъв език ще се напише програма, и нека
Изберете езика на машината "Синклер".

Ако сте били написването на програма в "BASIC", а след това ще бъде достатъчно, за да напишете:
900 CLS,

но езикът на машината е просто изречение "чист екран" може да бъде obmanchivm.
(Sic, отворена скоба не. (Забележка. Trans.))
P oetomu можем да направим -Това неща като:
CLEAR намерите началния екран

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

Може би си спомняте от за лидерство "Спектър", че на екрана се състои от 6,144 клетки и
че има 768 клетки, които описват атрибутите на екрана: цвят на хартията, за цвета на мастилото, и т.н.

Горното кратко описание на програмата, разбира се, ще изчистите екрана, но прави
Това няма да се отрази на атрибутите на файла. Ако не всички позиции на екрана е същия цвят на хартията или
ако позициите на някои букви са включени мигащи или яркост атрибути, ясно
Screen програма за почистване, по-горе ще се окаже съвсем недостатъчни.

Ние също така ще трябва да се справят и файлови атрибути. (Забележете, колко по-трудно
са някои от задачите в машинен език, отколкото "BASIC" език)

Ето защо, ние трябва да разширим програмата за следващия вид
намерите в началото на екрана

Попълнете следното 6144 байта на място
намери началото на атрибутите на файла

попълнете следващите 768 байта изисква хартия атрибути стойности (Ink)
лежеше до по-ниско ниво - това е този, който; където ще трябва най-накрая да пиша

Програма на текст, така че нека да видим как на екрана е изпълнен с подхлъзна:

CLEAR LD HL, на екрана: екран START
LD Sun, 6144: ДЪЛЖИНА след това изчистете
LD D, 0: D = ЗАГОТОВКА

LOOP LD (FTL), D: попълване ЗАГОТОВКА
INC HL: следващата позиция
Декември Sun: Намалете COUNT
LD А, В

Или С: тест, ако бв = 0

JR NZ, LOOP: отново, ако не свършва

Стартов екран старт екран; Байта ясно - изчиства байта: празно - празно; FILL
ЗАГОТОВКА - пълнене пространство: следващата позиция - следващата позиция; НАМАЛЯВАНЕ НА БРОЙ - намаление
брояч; ТЕСТ - проверка; Отново, ако НЕ ENL - повторение, ако не е приключил.

Сега можете съвсем спокойно може да се работи с програми като дължина и по такъв начин,
да се изгради достатъчно голяма програма.

Между другото, сега вие без съмнение се разбере защо програмата в машинен език толкова често
големи по размер и защо хората изобретил програма за езици от високо ниво!

Има няколко "правилните" отговори - единствената проверка дали той ще работи?
С други думи, ако програмата прави това, което ви трябва.

С DJNZ ":
CLEAR LD HL, SCREEN
LD един, 0

В LD 24: SET В = 24
BIGLOOP PUSH Sun: ЗАПАЗЕТЕ СТОЙНОСТ
LD в, а: SET В = 256
LITLOOP LD (FTL), а:

INC HL: попълване заготовки 256
DJNZ LITLOOP

поп Sun: да се върнем СТОЙНОСТ НА B
DJNZ BIGLOOP: DO IT до края

SET - комплект; SAVE СТОЙНОСТ - спомнете си стойност; 256 попълнете заготовки - попълнете 256
пропуски; Се върна в СТОЙНОСТ НА - да се върнем на стойността; DO IT до края - да се извършат
стигнат до края.

№ може да се използва 24 пъти за 256 (= 6,144) за почистване на екрана.

Трябва да се отбележи следното:

Ние можем да настроите в = 0, за да премине DJNZ цикъл 256 пъти. (Защо?) Грях процедура обикновено
Той няма да кандидатстват по програмата, ако само ние няма да се използва, за да се регистрират
Дъг цели.

CLEAR LD HL, SCREEN: SOURCE
PUSH HL
поп DE

INC DE: DEST = HL + 1
LD Sun, 6144: Колко
LD (HL). 0: LAT POS = 0
LDIR: MiVE IT

SOURCE - източник; КАК - хау; LAT - първо; MOVE - peoemetsenie.

Моля, имайте предвид, че получихме DE = HL + 1 пита DE = HL и за даване на нарастване DE.
LRA може да се направи по-лесно чрез зареждане стойност екрана на + 1 в DE директно, но woro
Тя изисква един байт повече!

Причината, поради която LDIR тази работа в екип, е това, което се използва
факт е, че обработването на данни единица се презаписва. Тук идва primene-
с положителен резултат от проблема счита от нас в главата за преместването на блокове.

Ако сумата се нуждае от памет, първият метод изисква 14 байта, с
второ - 16 байта и през последните 13 байта.

Раздел 2 - Как да стартирате програмата в машинен език. Форкс alrssadii в ZX Spectrum.

Раздел 3 - знамена и тяхното използване. Uvelichenine и намаляващият брой. Аритметика парични 8-ра zryalnymi номера.

Раздел 4 - булеви оператори. Работа с номерата на 16-битови.

Раздел 5 - Работа с комин. Аритметика. Цикли и преходи.

Раздел 6 - работа на каса блокове. Повече използва komanly задача о Z80.

Раздел 7 - създаване и възстановяване бита. Смени. Вход и изход.

Раздел 8 - представяне на BCD числа. Прекъсване. Komanla рестартиране (RST).

Раздел 9 - означава "ZX Spectrum".

Раздел 10 - програма EZ монитор се справят.

Секция 11 - изтегляне на текст, софтуерната програма монитор в машинен език в shsstnaldaterichnom Формат HEXLOAP.

Секция 12 - десетична таблица за преобразуване.

Подкрепете проекта - споделете линка, благодаря!