Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 23
Текст из файла (страница 23)
8.8. Изменение флажковых битов при выполнении различных команд. МП имеет несколько флажковых оитов (признаков условий), которые хранятся в триггерах и изменяются в зависимости от результата выполнения определенных операций. Эти биты представляют собой контрольные переменные, которые могут понадобиться для воздействия на последующие команды, такие, как команды перехода и ветвления. Для адекватного выполнения следующей операции иногда требуются данные, которые обеспечивает предыдущая операция. Например, при выполнении последующей операции сложения следует учитывать перенос.
Большинство МП имеет несколько контрольных переменных, которые используются после выполнения определенных команд н опрашиваются при выполнении ряда других команд, в результате чего изменяется последовательность выполнения команд в программе в целом. У МП 8088А пять флажковых битов, а именно флажковые биты переноса, вспомогательного переноса, знака, нуля и четности. Флажковый бит переноса устанавливается в состояние 1, если произошло переполнение АЛУ, т. е. в случае результата, превышающего 2з (1 байт) или меньшего О. Эти ситуации возникают при сложении в тот момент, когда должен произойти перенос в позицию старшего бита. В ходе операции сравнения в МП 8085А выполняется по крайней мере хотя бы одно вычитание. Если при этом возникает перенос, то число, находящееся в регистре, считается меньше другого числа, например взятого из другого регистра.
В случае вспомогательного переноса (полупереноса) соответствующий флажковый бит равен 1, если возникает перенос из четвертого разряда в пятый разряд в данном байте. Такой Набор команд микроЭВМ флажковый бит используется при преобразовании двоичных чисел в ВСО-код (2 цифры в одном байте) с помощью команды ОАА. Флажковый бит знака устанавливается в состояние 1 в том случае, когда старший бит результата также становится Равным 1.
Флажковый бит нуля является контрольной переменной, которая показывает, что результат обработки данных в АЛУ равен О. Наконец, флажковый бит четности сообщает результат проверки на четность байта, который покидает АЛУ. Если число единиц в результате, полученном в АЛУ, является четным, то бит четности становится равным 1. При нечетном числе единиц бит четности устанавливается равным нулю.
Флажковые биты оказывают влияние на ход выполнения некоторых команд, таких, как команды перехода и ветвления. На рис. 3.8 показано, какие команды влияют на значения контрольных переменных. 3.5. Команды пересылки Как уже отмечалось выше, набор команд каждого МП можно разбить на несколько основных групп. Одной из них является группа команд пересылки (передачи), с помощью которых осуществляется пересылка данных между регистрами, а также между регистрами и ЗУ (рис. 3.9). Эти команды МОЧ в случае пересылки данных между регистрами имеют длину в один байт.
В пределах однобайтовой команды можно указать адреса регистров с помощью 2ХЗ бит, т. е. трех битов для передающих регистров (источников) и трех битов для принимающих регистров (прнемников). При передаче данных в ЗУ для адресации элементов ЗУ требуются два дополнительных байта. Эти адреса выбираются из двойного регистра Н1., куда перед этим необходимо записать нужные адреса. Это требование должно выполняться при передаче данных в обоих направлениях. Возможны также пересылки из регистров в стек с помощью однобайтовых команд Р1)ЯН и РОР; при этом адреса обращения определяют содержимое регистра-указателя стека.
К этим командам мы еще вернемся в следующих разделах. Таблица, приведенная иа рис. 3.9, б, содержит все команды МОЧ МП 8085А. Следует отметить, что все регистры, а именно А, В, С, О, Е, Н и 1, являются 8-разрядными. Регистры В и С, О и Е, Н и Е могут соединяться последовательно, образуя двухбайтовые регистры. Команды пересылки, приведенные в таблице, относятся к однобайтовым передачам данных, которые происходят между регистрами и ЗУ. пв Глава 8 Команды МОЧ не изменяют содержимое регистра флажковых битов.
Особую группу образуют команды пересылки данных между аккумулятором и ЗУ (рис. 3.10). Эти команды обозначаются семантически как ЯТАХ гр и 1.РАХ гр. По команде ЬТАХ В происходит передача из А в М, при этом адрес ячейки в М помещается в регистр ВС. В случае команды ЬТАХ Р происходит такая же передача, только соответствующий адрес помещается в двойной регистр РЕ.
Для спецификации адреса регистры В и Р формируют из соответствующей информации старший адресный байт. Команда ЯТАХгр не влияет на флажковые биты. (а) КОманды лересылки~'МОУ) МОУ ли и !О! 1Ю РРР -регистр-лривмник данныл $$$- ревисьлр-исльонник данных цьложкоеые биты нс игменяюлгсл МОУ кМ !л! !!ин!й РРР -регислгр-лриемник данных М вЂ” ЗУ, адресе НЕ Сояажковьье биты не игменяются и с Косвенная адресация МО~ Мс 1!и, д) -л $$$-регистр-итлолнин данныл М-ЗУ,адрес в не Юлажковьье биты не игменяютсл и ! Косвенная адресация РРР «ли $8 Регистр(2) 1!! Я 000 В 001 О 010 Р ОЛ Е юо и 101 Р Набор команд микроЭВМ Команды лересьслка шеалн естла Восбмевамерич- Восьые нью кео иел йОЗ Мнемоника Олерацил Олерачил Мнемоника а(с весьме и«шел(иЕР«ио Ричн.кед МОУД А МОУА.
В монА с МОУА, О МОС'А, Е МОУА, Н Маб А. С моуд м 7« ж 75 7А 7В 7С 7О 7Е ко 127 Ю( 172 173 (М 176 176 1А! (вг (с! ан А !Е! (и! (ш (м! МОУС, А маус, в маус, с маус. о МОУС, Е МОУС, И монс, с моус, м Ы7 (А! 116 (В! (ы (С( 112 (01 с 113 (Е! 4 ОО 47 46 43 4А 4В 4С 40 4Е 115 (С( 116 (М! (З7 (ЗО (З( (З2 133 134 135 (ЗЕ МОУВ, А моув, в моув, с моув, о МОУВ, Е мор в. и моув, с моув, м 47 4О 41 42 43 44 45 46 107 ко Ю( Юг 103 Ю4 Ю5 Юб (А! (в! (с! (О! (Е! (н! а! ао МОУЕ, А МОУЕ, В МОУЕ. С МОУЕ, О МОУЕ, Е МОУЕ, И МОУЕ, С Моб'Е, М 5« 66 59 ЕА 5В 5С 50 5Е (в! (в! (с! Е (Е! (н! а! (м! (А! (в! (с! (О! (Е! (и! О.! (м! 157 (бе 151 152 153 154 155 156 127 120 ки юг (А! (в! (с! (О! (Е! (и! (ы (м! МО1С,А монс, в маус, с моус, о МОУС. Е мое с, и моб с.
с моус, м 6« 66 бз бА бе ес бо бЕ МОУО, А моуо, в моуо, с моуо, о МОУО, Е моно, и моно, с моро, м 57 бе 51 бг 53 ЮЗ 54, 124 55 ! 125 м (гб (А ! (в! МОУМ. А моум, в ю 75 ю 73 М 75 167 (А! 166 (В! 161 (Ш 162 (О! М 163 (Е! ( 164 ОО ) 155 (Ы 67 бо 147 146 МОНН, А монн, в Рнс. Зкп Команды МОЧ (команды пересылкн). а — сапы пересыласс б — спвсок коыввк пересылке. Для передачи из ЗУ в аккумулятор применяется команда 1РАХгр, для которой адрес также предварительно помещается, например, в регистр ВС или 1)Е. При выполнении команд ЗТАХгр и 117АХгр используется косвенная адресация, так как опрашиваются вспомогательные регистры относительно того, где находятся данные или из какой ячейки ЗУ необходимо выбрать данные.
К командам с косвенной адресацией относятся ЗТА (З(огеА — запомнить содержимое А), 1.17А (1.оас(А — загрузить А), ЯНЬ1) (З(оге Н1 — запомнить содержимое регистров Н и 1.) и 1.НП) (1.оа(1 Н1 — загрузить регистры Н и Е). Как следует из рис. 3.11 и 3.12, эти команды записывают данные в ячейку ЗУ или считывают их из ячейки ЗУ, адрес которой указан в двух байтах, следующих за командой.
(б) 1до Глава 8 лпмх и оглХ Оперативное ЗУ ду команд ьрхх гр 1заерузшпь аккумулятор используя «осеенную адресацию ) Гл) (ьсрр ЕОЛХ ср цьламковьье Вшпи не изменяюпься ОГЛХ ср (запомнить содеомимое акквмилямора, используя косвенную ааресюциюз йсрО' Глд зздх р яр деойнои резисзяр ОО ВС О! ВЕ цзлшнковьье Оияи не шменяются Рис. ЗЛО. Команды 1.1лАХ и ЬТАХ. В случае команд ЗТА и ).ПА происходит передача одного байта данных, в случае команд БН).П и ) Н).П вЂ” передача двух байтов данных. Адрес указывается в команде, и МП автоматически выбирает данные из ячейки со следующим адресом в ЗУ, где хранятся данные, или в оперативном ЗУ.
Оба байта пересылаются в регистры Н и 1., при этом регистр 1. выбирает байт адреса, указанный в команде, а регистр Н— байт этого адреса +1 (см. рис. 3.12). Двумя интересными командами пересылки являются команды обмена ХСНО и ХТН1. (рис. 3.13 и 3.14). По команде ХСНО происходит обмен содержимого двойного регистра НЬ с содержимым двойного регистра 1)Е. По команде ХТН1. верхняя пара ячеек стека обменивается данными с двойным регистром Н1..
При этом регистр 1. обменивается данными с вершиной стека, адрес которой идентифицирует указатель стека, а регистр Н обменивается данными со стеком по адресу на одну позицию выше, чем идентифицировал указатель стека (ЯР+1). Команда ЯРН). загружает содержимое двойного регистра Н1 в стек, т. е. в двухбайтовый адресный регистр М11. Блзл и ВТА ЗУ команд оперативное ЭУ 47, 4 4!5.. 4 47...
40 пьз...лб ьОА абсес Ьэогрузить аккумулятор, испольэуя прямую адресацию7 (4)ь-(~баитб)~байт 2)) 5ОА Бойль 2 стп шоо баии пдресо Баит э Флатковьье биты ке изменяюзпся Рис. 3.11. Команды Ы)А и БТА. Восьмеричное: 072 Шестнадцатеричкоеьбл црямпя адресация ЭТА адрес Тзапомнить содержимое аккумулятора, используя поямую адресацию)(~байт ъ Кбайт 2 )) ч- Я ЭТА Бойль 2 Байтб Восьмеричное: 002 Шестнадцатеричное 22 Цэлаткоеьье биты не измекяюзпся БН((/ а ЗН()) ЗУ номапд Оперативное ЗУ ЮО /О/ Ю2 /ОЗ Ю/ /02 /ОЗ /Ре БН/Р адрес (непосредппвепно загрузить регистры н и /.
) - !' Б! ((бойяд)(байтШ! И! ((Оайтд)(Г йтг)!ь( БН/О адрес (непосредственно запомнить содержомое регистров Ни(! - ! /бейт ЗИбашп 2)) мбб) ( байт З)(байя 2!!+/ь (Н) байя 3 Восьмеричное / ОБ2 Шестнадцатеричное;2А Фпотноеые биты не изменяются Флан/новые биты не изменяю/пся Мд автоматически увеяичиеает адрес на+1 МП аеяомаяичесни увеличивает адрес на Рис. 3.12. Команды /.Н1Л) и ЙН1.0.
АУ... АО АЗ... А/5 АУ... АО А8... Л/5 ьНьд Байт2 Восбмеричное/ 042 Шесптадцатеричное: 22 БНББ/ Байя/2 Баит З «СНС и ьРНЕ Обмен данными ХСНВ (ойменлгпь содергнимое двойник региспров ОЕ и НЕ) (И) (О) (Е) (Е) ЛСНВ Восьмеричное:555 Шестнадцатеричное:ЕВ Флаиновые биты не изменлюпгся анные Н.(ипарший бойпг) Е (младший байт) $РВЕ (передашь годер>пимов нсв 5Р) (ср) (н)(г) ВРНЕ Восьмеричное:55( Местнадцатеричноеглд Флажнобые бопгы не иэменяютсп ВР-уназатЕлв Слгсна Рнс.
3.13. Команды ХСНсз н ЗРН1 ХТН1 Стекоеое зу (стек) шов ТТв Тдг Тдв Врьг О ВР -Вппослевыполненияоперации О- хтнь(поменять годер>кимов еелтапы смена. и регистра нь) (ь)-((ЯР)) (и) '(($Р) +1) х тнь Восьмеричноеьвоз Тдестнадцатеричное;ЕЪ Рлажковые биты не изменяются ВР-указатель стена Рыс. 3.14. Команда ХТН1. Заметьте, что в данном примере первый байт стека ымеет адрес 100 и что, ыачынаа с этого адреса, адреса сяедуюшлк байтов уменьшаются. В действительыости здесь идет речь об отрицательыой вершине стека. Набор команд микроЭВМ 12в РО$Н Свекавое гу(спвн) РО$Н ср (проволкн увь) Ивр)- 1) ео ПСР) — 2) Г1 ($Р) — ($Р) — 2 РОЯ(~р %ламповые бимы не изменпювсн НР )(войной ревисвр ОО ВС 01 ОЕ 10 Нс бр не испольвовавь! Мнемоника $(есвнадцаве- Восьмерипринныи нод ный код РО$н В Ривн о ровн и С5 Об Еб $0$ $2$ 545 вр -$Р после операций ОП вр -.$Р до операции ГЬ вЂ” апарший байв е( - младший байв Рис.