Бродин В. Б., Шагурин И. И. Микроконтроллеры (1999) (1095894), страница 9
Текст из файла (страница 9)
1.10. Признаки, устанавливаемые при выполнении команды 2 Х ЧТ Ет Команда Ч А00, А00В, ЗОВ, БУВВ, СМР, СМРВ, 0ЕС, 0ЕСВ, 1ХС, 1ХСВ, ХЕО, ХЕОВ А00, А00СВ, ЯОВС, БУВСВ М01, М~Л.В, М1ЛЛ1, М~ЛЛ3В 01Ч, 01ЧВ, 01ЧО, 01ЧОВ СМР! АХ0, АХОВ, ЕХТ, ЕХТВ, ХОТ, ХОТВ, ОК, ОКВ, ХОК, ХОЕВ БН1., БН1В, ВНЯЛ БНКА, БНКАВ, ВНКАЕ ЯНК, БНКВ, ЯНК1 О О РОБНГ, РОЗНА О О РОРГ, РОРА Команды АППС, А1)1)СВ, ББВС, 8ПВСВ, использующие ранее установленное значение признака С, служат для сложения и вычитания операндов с учетом переноса из младших слов (байтов) или заема из старших слов (байтов). Операции умножения и деления выполняются над числами со знаком (команды МП1., М()ЕВ, 1)1Ч, 1)1ЧВ) или без знака (команды МУШ, МП1Л)В, 1)1ЧП, 1)1Ч(1В).
При умножении16-разрядных операндов (М1Л., МПШ) получаемый 32-разрядный результат размещается в регистре с номером (!Тей), кратным четырем (длинный регистр емкостью 4 байта). В двухадресных вариантах команд одним из сомножителей служат два младших байта из этого регистра. При умножении 8-разрядных операндов (МШ.В, МУАРОВ) получаемый 16-разрядный результат размещается в регистре с номером (тусей). Младший байт содержимого этого регистра является операндом в двухадресных вариантах команд. В командах деления 01Ч, 1)1Ч() используется 32-разрядное делимое, которое располагается в длинном регистре с номером (!гей). Делителем служит 16-разрядное число ниаор, адрес которого определяется согласно заданному полем (аа) способу адресации.
Полученое 16-разрядное частное размещается в двух младших байтах этого регистра !.!Тей, а 16-разрядный остаток в его двух старших байтах !ь!Тей. В командах 01ЧВ, 01ЧПВ используется Зииким М00 и тиолд Д ссикн жчсии и~срниин жиучсиин иститки лснсиин. 42 мик»оконт»оллк»ы: кнкит~ктт»к п»ог»»мми»о«анна интюакас 16-разрядное делимое из регистра с номером (ткгей), в младшем байте этого же регистра располагается 8-разрядное частное, а в старшем байте 8-разрядный остаток. Установка признака переполнения Ч - 1 происходит при выполнении команд О1Ч или О1ЧВ, если частное выходит из диапазона чисел, соответственно, -32768 (8001Н)..+32767 (7ГГГН) или -128 (81Н)„+127 (7ГН), при выполнении команд П1ЧП или О1ЧПВ, если частное оказывается больше, соответственно, 65535 (ОГГГГН) нли 255 (ОГГН).
Чтобы образовать делимое для команд П1Ч, П1ЧВ из 16- или 8-рэзрядных операндов, перед их выполнением производится расширение операндов с помощью команд ЕХТ или ЕХТВ. При выполнении ЕХТ старшее слово Ь.1ге8 в длинном регистре с номером (! гей) заполняется значениями знака и (старшего бита) из младшего слова в этом регистре: Ь.1гей« вЂ” п...п. При выполнении ЕХТВ старший байт регистра с номером (тчгей) заполняется значением знака из младшего байта. Таким образом из 16- или 8-Оразрядных операндов образуются 32- или 16-разрядные делимые, сохраняющие знак исходных операндов. Отметим, что команды М() !., МП!.В, П1Ч, П1ЧВ отличаются от всех остальных команд микроконтроллера тем, что имеют двухбайтный код операции (см. табл.
1.9). Перед основным байтом кода, определяющим вид команды и способ адресации, вводится дополнительный байт, имеющий фиксированное значение (11111110). Команды ХЕО, ХЕОВ меняют знак 16- или 8-разрядного операнда тчгей или Ъгей, переводя его в дополнительный код. Команды инкремента (1ХС, 1ХСВ) и декремента (ПЕС, ПЕСВ) увеличивают или уменьшают на единицу содержимое регистра с номером (ткгей) или (Ьгей).
Команды сравнения СМР СМРВ, СМРЕ производят вычитание двух операндов без сохранения результата. Выполняется только установка соответствующих признаков (табл. 1.10). Анализ полученных значений признаков позволяет затем определить относительное значение сравниваемых операндов. При этом команда СМРАД позволяет сравнивать значения двух 32-разрядных операндов, размещенных в длинных регистрах с номерами (51гей), (П!гей).
В состав логических операций, выполняемых микроконтроллером, входят конъюнкция «И» (команды АХП, АХОВ), дизъюнкция «ИЛИ» (команды ОВ, ОКВ), «Исключающее ИЛИ» (ХОК,'ХОЕВ), инверсия «НЕ» (ХОТ, ХОТВ). Операции выполняются над 16- или 8-разрядными операндами с установкой соответствующих признаков, как указано в табл. 1.10.
Команды сдвига производятся над 8-, 16- или 32-разрядными операндами, размещенными в регистрах, номера которых (Ьгей), (тчгей) или (1гей) указываются в третьем байте команды (табл. 1.9). Количество разрядов сдвига задается либо непосредственно числом №соипц которое дается во втором байте команды, либо содержимым 8-разрядного регистра, номер которого (Ьгей) указывается во втором байте команды (табл. 1.8).
Чтобы микроконтроллер мог различать эти два способа задания количества сдвигов, число МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСЕ.ЕВ 43 №соцпс должно быть в диапазоне от О до 15 (то есть ООН..ОРН), а номер регистра (Ьгей) — в диапазоне 1ОН..Ог г Н.Так как номера ООН..Ог Н принадлежат регистрам специального назначения, не используемым для определения числа сдвигов, то выполнение данного условия не вызывает каких-либо сложностей для пользователя.
Количество сдвигов, указанное в регистре с номером (Ьгей), должно быть в диапазоне от О до 31. Последний бит, выдвигаемый вправо или влево, заносится в качестве признака С в слово состояния (рис. 1.7). Остальные разряды (РБЖ) устанавливаются как указано в табл. 1.9. Команды БНЬВ, БН1., БНЬЬ выполняют сдвиг бита, слова или длинного слова, хранящегося в регистре, влево на заданное число разрядов с заполнением освобождающихся справа разрядов нулями (рис. 1.7а).
Сдвиги вправо имеют две разновидности: логические и арифметические. Команды логических сдвигов БНКВ, БНК, БНК1. производят сдвиг вправо с заполнением освобождающихся слева разрядов нулями (рис. 1.7б). Команды арифметических сдвигов БНКАВ, БНКА, ЗНКАЬ производят сдвиг вправо с заполнением освобождающихся разрядов значениями старшего (знакового) бита (рис. 1.7в). Таким образом, при арифметических сдвигах сохраняется знак сдвигаемого числа. 1 О (7, 15 или 31) «О» а) ЗНЬВ, ЗНЬ, ЗН1,Ь (7, 15 или 31) 1 О «0» б) ЗНКВ, БНК, БНКЬ (7, 15 или 31) 1 О в) ЗНКАВ, БНКА, БНКА1.
Рис. 1.7. Сдвиги: влево (а) и вправо: логический (б) и арифметический (в) 44 МИКРОКОНТРОЛЛЕРЫ: АРХИТЕКТУРА ЛРОГРАММИРОЕАНИ ИНТЕРФЕЙС Команда нормализации ЫОКМ1. выполняет сдвиг влево 32-разрядного числа, хранящегося в регистре с номером (1гей), до появления «1» в старшем разряде. Количество требуемых для этого сдвигов заносится в 8-разрядный регистр с номером (Ьгей), указанном в команде. Если после 31-го сдвига в старшем разряде не появилась «1», то-есть сдвигаемое число равно «О», то устанавливается признак нуля 2 - 1 в слове состояния (РБ%). 1.3.4. Операции управление программой К этой группе команд (табл.
1.11) относятся команды ветвления (ВВ, ЕВК), безусловных и условных переходов (БДМ Р 1«) МР Е1МР, Т1) МР )сс), организации циклов (Щ)к(2, ЩР)ХВ), обращения к подпрограммм (БСА1.1., 1.СА1.1., ЕСА1.1., КЕТ), прерывания (ТКАР), изменения значений признаков (С).КС, ВЕТС, С).Р«НТ). Команды с расширенной адресацией ЕВК, Е1МР ЕСА1Л. выполняются только в режиме 1М. Команды ветвления используют косвенно-регистровую адресацию и задают номер регистра, содержимое которого загружается в программный счетчик. В режиме 64К используется команда ВВ, которая производит загрузку (РС) из 16-разрядного регистра с номером (игей), обеспечивая переход к любой команде, расположенной на данной странице.
В режиме 1М используется команда ЕВК,,которая производит загрузку нового содержимого в расширенный программный счетчик (ЕРС+РС) из 24-разрядного регистра с номером (ггей). В результате обеспечивается возможность перехода к любой команде из 1 Мбайт адресуемой памяти. При безусловных переходах используется относительная адресация, когда адрес новой команды определяется путем сложения текущего содержимого программного счетчика с указанным в команде смеШением, которое воспринимается как число со знаком. Таким образом обеспечивается переход как к предыдущим, так и к последующим командам программы.
Команда короткого перехода Б,) МР задает 11-разрядное смещение (411), три старших разряда которого указываются в поле (т)от)) кода команды, а восемь младших разрядов — во втором байте (т(8). Команда длинного перехода 1ДМР содержит 16-разрядное смешение (т)16), которое задается вторым и третьим байтами.
Эти команды обеспечивают переходы на текущей странице памяти. 'Команда расширенного перехода Е1МР содержит в трех байтах команды 24- разрядное смещение (т(24), которое суммируется с содержимым расширенного счетчика (ЕРС+РС) без учета переноса. Младшие 20 разрядов результата адресуют полный объем памяти 1 Мбайт. Косвенно-табличный переход Т) МР обеспечивает обращение к командам, адреса которых размещены в таблице адресов, организуемой программно.
Таблица может располагаться в любой нерезервированной позиции памяти на странице ОГРН. Максимальный объем таблицы — 128 16-разрядных МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСЗ-ЕЕ 45 Табл. 1.11. Команды управлении программой Форма (11100011Нтгге8) ! 1100011 сге Операция Мнемокод (РС)с в ТРТЕ8 ЕРС+РС с — сг ВК ЕВК (РС) с- (РС)+(с!11) (РС) с — (РС)+(с!16) (Е С+РС) (Е С+РС)+(624) (РС) с — $($пс(ех) АХЕг (псм)с)$х2+ЕЬаее (00100сЫс)НТ$8) (1!100111Н616) (111001!ОНс$24) (11100010Ншс$ех) свае!с ЕЬеее 8$МР $,)МР Е)МР Т$,!МР (РС) +- (РС)+(с$8), если условие выполняется (см.