Микропроцесори Tokheim - 6.3. СЪСТАВ НА КОМАНДИТЕ ЗА АРИТМЕТИЧНИ ДЕЙСТВИЯ

6.3. СЪСТАВ НА КОМАНДИТЕ ЗА АРИТМЕТИЧНИ ДЕЙСТВИЯ

Нека първо да разгледаме аритметичните команди. Те са обобщени в табл. 6.3 и съдържат команди за добавяне, изваждане, увеличаване, намаляване, сравнение. Забележка според табл. 6.3, че има четири команди за добавяне. Акумулаторът (регистър А) съдържа един от членовете. Всеки екип посочва точно различните източници на другия термин.

Разгледайте първата от командите за добавяне в табл. 6.3. Директната инструкция за добавяне е двубайтова инструкция. Неговият COP формат (в този случай C6H) се съдържа в първия байт на командата, непосредствено след нея във втория

* Вижте § 5.1. — Прибл. изд.

микропроцесори

байт - има данни за добавяне към съдържанието на акумулатора. Командата ADI се изпълнява по схемата, показана на фиг. 6.4, а. Данните непосредствено след CPC в паметта се добавят към съдържанието на акумулатора (0000 11112). Сумата (0001 11112) се поставя в акумулатора.

състав

Втората е командата за добавяне на съдържанието на регистрите L и A (мнемоника ADD L), на фиг. 6.4, b показва неговото изпълнение. Съдържанието на акумулатора (0000 10002) се добавя към съдържанието на регистър L (0000 00012), получената сума (0000 10012), получена в резултат на изпълнението на инструкцията ADD L, се поставя в акумулатора.

Третият отбор в таблицата. 6.3 е еднобайтова команда за добавяне на съдържанието на регистрите H и A (мнемоника ADD H). Това е друга инструкция за добавяне на съдържанието на един регистър към съдържанието на друг (както предишната) и се изпълнява в последователността, показана на фиг. 6.4, c. Съдържанието на регистър A (0010 11002) се добавя към съдържанието на регистър H (0001 00112), сумата (0011 11112) се поставя в акумулатора.

* From Location (английски) - местоположението. — Прибл. пер.

В най-новитедясна колона на таблицата. 6.3 показва списък с индикатори, зададени в резултат на операцията. Пример за събиране на двоични числа 1111 1111 и 0000 0001 е показан на фиг. 6.5. Извършването на такава операция по обичайния начин дава следния резултат:

tokheim

Микропроцесорът изпълнява решението на този проблем в съответствие с фиг. 6.5 (операция ADD M.

Акумулаторът съдържа 1111 11112, докато мястото в паметта, посочено от регистровата двойка HL, съдържа друг член (0000 00012). След извършване на операцията по добавяне, акумулаторът съдържа 8-те най-малко значими бита от сумата,

tokheim

тези. 0000 00002. Индикаторът за пренасяне на регистъра на състоянието е зададен на 1, което показва, че MSB на резултата е пренесен. Индикаторът за нула проверява съдържанието на акумулатора след операцията и намира 0000 00002. Тъй като е нула, индикаторът за нула става 1, което показва, че съдържанието на акумулатора е 0000 00002 след операцията за събиране.

Помислете сега за четирите операции за изваждане, дадени в табл. 6.3, отнасяща се до състава на командите на типичен микропроцесор. Всяка инструкция изважда съдържанието на някакъв регистър или място в паметта от съдържанието на акумулатора. Поради вътрешните характеристики на ALU, той няма възможност за изваждане, той извършва събиране, представяйки субтрахенда под формата на допълнение към две и след това го добавя.

Като пример, разгледайте процеса на изваждане, показан на фиг. 6.6. Двоичното число 0000 0001 се изважда от 0000 1001 (09H - 01H = 08H).

микропроцесори

Извършването на тази операция по обичайния начин дава следния резултат:

Спомнете си, че изваждането на двоични числа се извършва чрез добавяне на първото число към второто, представено под формата на допълнение от две, като пренебрегне преливането. В тази задача второто число ще бъде 0000 0001, коетоще се преобразува в допълнение от две и дава

Кодът за допълване на двата 1111 1111 на другото число след това се добавя към първото число, давайки сумата 1 0000 1000. В най-значимия бит на сумата 1 е препълване и не принадлежи към разликата 0000 10002. Микропроцесорът използва това препълване, за да настрои индикатора за пренасяне. Чрез изваждане MP обръща препълването и резултатът става съдържанието на индикатора за пренасяне CY. Overflow 1 се обръща и нулира индикатора за пренасяне на 0. Когато индикаторът за пренасяне се нулира по време на изваждане, това означава, че не е имало пренасяне и че първото число е по-голямо от второто.

Командата Subtract Immediate Data (mnemonic SUI) се използва в примера на Фиг. 6.6. Данните от втория байт на паметта 0000 00012 непосредствено след COP се изваждат от съдържанието на акумулатора 0000 1001 2, разликата се прехвърля към акумулатора, след което операцията приключва. Индикаторът за пренасяне се нулира на 0. Това означава, че не е имало пренасяне или че числото в акумулатора е било по-голямо от числото в паметта преди операцията. Нулевият индикатор проверява съдържанието на батерията. Операцията за изваждане приключва, съдържанието на 0000 1000 не е нула, индикаторът за нула също се нулира на 0.

Сутрахендът тук е представен в допълнителния код

Помислете за друг пример за изваждане, когато умаляваното е по-малко от изважданото. Нека е необходимо да се извади двоичното число 0000 0110 от двоичното число 0000 0101 (05H - 06H = = FFH = -1u). В такъв случай:

Минимизираният 0000 01012 се добавя към резултата от преобразуването на субтрахенда в допълнителния код 1111 1010, което дава 1111 1111. Както може да се види от таблицата. 2.10, резултатът 1111 1111 е двойно представяне на числото -10. Добавянето не се препълва, когато имаме 0 в регистъра за препълване.

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

състав

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

Нашият типичен микропроцесор има четири инструкции за сравнение (вижте последните четири реда в таблица 6.3). Инструкциите за сравнение изваждат съдържанието на регистър или място в паметта от съдържанието на акумулатора, но не променят съдържанието на нито едно от двете. Индикаторите се влияят от команди за сравнение.

На фиг. 6.8 е показан пример за използване на командата COMPARE регистър L. Еднаквите числа 0001 00002 са съдържанието на акумулатора и регистъра L и се сравняват от микропроцесора. Забележка на фиг. 6.8a, че нито едно от съдържанието не се променя след операцията за сравнение. Индикаторите се влияят от резултата от сравнението.

Според таблицата. 6.3 символно представяне на информация, съдържанието на регистъра L се изважда от съдържанието на акумулатора A при команда CMP L:

състав

Първото число 0001 00002 и допълнението към две на второто число 1111 0000 се добавят, за да се получи 1 0000 0000. След това осемте най-малко значими цифри се проверяват за 0. Индикаторът за нула е настроен на 1. Препълване на 1 се обръща от ALU и в този пример индикаторът за пренасяне е настроен на 0. Нулиране на индикатора за пренасяне CY означава, че съдържанието на акумулатора е по-голямо или равно на съдържанието на регистър L.

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

6.11. Вижте таблицата. 6.3. Мнемониката на командата SUBUBUT е ______, а COP е D6H. Формат на командата _________

6.12. Вижте таблицата. 6.3. Увеличението означава ______

(добавете 1, извадете 1) към/от съдържанието на регистъра.

6.13. Вижте таблицата. 6.3. Коя инструкция за нарастване не влияе на нулевия индикатор?

Вижте фиг. 6.9. След операцията за намаляване, съдържанието на акумулатора ще бъде _______ (двоично).

Вижте таблицата. 6.3. След операция за намаляване

нулев индикатор на фиг. 6.9 _____ (нулиране, инсталирано),

тези. е равно на _____ (0, 1).

6.16. Вижте таблицата. 6.3. Какво е състоянието на индикатора за пренасяне на фиг. 6.9 след операция за намаляване?

tokheim

6.17. Вижте таблицата. 6.3. Какъв е COP на директната команда COMPARE (шестнадесетичен)?

6.18. Вижте таблицата. 6.3. Дайте съдържанието на акумулатора и две програмни клетки от паметта след операцията CPI на фиг. 6.10.

микропроцесори

6.19. Вижте таблицата. 6.3. Какво ще бъде състоянието на нулевия индикатор след изпълнение на командата CPI на фиг. 6.10?

Вижте таблицата. 6.3. Индикатор за пренасяне ________ (настроен, изчистен) след изпълнение на командата CPI.

Вижте таблицата. 6.3. Какво ще бъде съдържанието на двойката регистри HL (шестнадесетичен) след операцията за увеличаване?

Вижте таблицата. 6.3. Какво е състоянието на регистровата двойка HL след увеличаване (Фигура 6.11)?

tokheim

6.23. Индикаторите се влияят от много аритметични операции, но се използват от микропроцесора по време на операциите.________ (разклоняване, логично).

6.11. SUI; 2. 6.12. Добавете 1. 6.13. Според табл. 6.3 е командата INX H (Увеличаване на двойка HL регистри). 6.14. Командата DCR A означава, че трябва да извадите 1 от съдържанието на акумулатора, т.е. 0000 0001 - 1 = 0000 0000, резултатът 0000 0000 е съдържанието на акумулатора след операцията. 6.15. Проверката след декрементиране показва, че съдържанието на акумулатора е 0, следователно нулевият индикатор на регистъра на състоянието е зададен на 1. 6.16. Индикаторът за пренасяне на SN не се влияе от операцията за намаляване, следователно състоянието му е непредвидимо. 6.17. Екипът на CPI, неговият COP е FEH. 6.18. Командата за сравнение не променя съдържанието на регистрите или клетките на паметта, така че съдържанието на акумулатора винаги ще бъде 0000 1111, паметта - 0001 0000, COP на командата CPI - FEH (вижте таблица 6.3). 6.19. На фиг. 6.10 нулевият индикатор се нулира (0) след операцията CPI. Колоната за символика в таблицата. 6.3 показва, че инструкцията за сравнение се изпълнява чрез изваждане и проверка на резултата. Резултатът не е 0, индикаторът не е зададен. 6.20. Задайте на 1. Резултатът от операцията за изваждане показва, че първото число (съдържанието на акумулатора) е по-малко от съдържанието на паметта (второто число). 6.21. Увеличението на HL означава 1111 1111 1111 1111 + 1 = 1 0000 0000 0000 0000. Най-значимият бит от сумата (1) се изключва, следователно съдържанието на двойката регистри HL ще бъде 0000 0000 0000 0000 или 0000H.

6.22. Индикаторите не се влияят от операцията за нарастване на двойката регистри HL (вижте таблица 6.3), следователно резултатът е непредвидим. 6.23. Разклоняване (условно).