Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 25
Текст из файла (страница 25)
234 (А). 235 ~ /Я). гвб ) гц). ззб ~ ( ) 267 260 261 гбг 263 26Н 265 Збб 257 258 25! 252 253 гбн 255 256 356 (41 г = (41: = (4) г= (4) (Я) . = !.41 г = !Я). = (4). = И4) г ! 41О/4) (А)О(в) (АЮ!Ш !А)Ос/О) (4) О (Е) !Я/О(н) (4)О!й (ЯЮ(М) (4Ю(байт 2) !зз Индор команд микроЭВМ 203 ~а — 173~о 1011- Ь 1101- Е 1110 1010 Н +- Р <- — х — х 0000 СУ = 1 1110- Аи. Ь 1 — х Н'-А»- 30, „Заем" 11!О О ~А ) (ч — (~ — кт) Алгоритм этого вычитания имеет ту же структуру, что и алгоритм сложения чисел двойной длины.
В случае логических операций, которые может выполнять МП 8085А, одним из источников данных является аккумулятор, а другим — регистр данных или ячейка ЗУ в зависимости от типа команды данной группы. В частности, команда АНА позволяет определить логическую сумму всех битов двух чисел без учета переноса.
Команда 012А реализует функцию ИЛИ для битов двух чисел, а команда ХКА — функцию ИСКЛЮЧАЮЩЕЕ-ИЛИ для каждых двух битов. Логические команды особенно эффективны при Перед началом операции сложения по команде ХКА необходимо установить в нулевое состояние СУ. Затем Ь загружается, в А, после чего суммируется содержимое А, Е и Сз'. Сумма А* пересылается в регистр Ь. После этого содержимое Н загружается в Ь и суммируется содержимое А, Р и СУ. Сумма А старших тетрад пересылается в регистр Н. На этом суммирование двух чисел длиной по две тетрады заканчивается. Все это применимо и к суммированию байтов. Приведенный выше пример десятичного сложения подтверждает, что соответствующее двоичное сложеьие выполнено корректно.
При выполнении команд вычитания наблюдаются некоторые отличия от описанных выше примеров. Известны команды вычитания, при выполнении которых либо пользуются„либо не пользуются «займом». Если требуется произвести заем из позиции старшего бита, то это обстоятельстно отмечается присвоением значения, равного 1, флажковому биту переноса.
Этот перенос учитывается при выполнении следующей команды БВ (вычитание). Такое вычитание, выполненное с тетрадами, выглядит следующим образом: СБ-тетрада Шаг 2 (БВВ2) Гаева 8 использовании специальных приемов в ходе обработки данных. Так, например, по команде АНА из байта данных можноудалить определенное число битов. Это связано с тем, что если при реализации функции И одна из входных переменных равна О, то на выходе также появится О. С помощью этой команды можно убрать определенные биты данного числа„вводя нули в соответствующие разряды другого числа. В результате фактически выполняется маскирование единиц в указанных битовых разрядах (рис.
3.20). са) к7 ГА) А(г) с Замаакираеаеаые асмы Рве. 3.20. Масквровавве батов с помощью И-комавдм (АХА т). Функция ИЛИ присваивает определенным битам значение 1. Эта операция применяется в приборах и регуляторах, когда с помощью некоторого бита, входящего в состав байта команды, требуется обеспечить сигнал, например, для управления положением клапана горелки.
При выполнении команд сравнения содержимое аккумулятора А сравнивается с содержимым определенного регистра. В действительности в ходе операции сравнения происходит вычитание, и если в результате получается О, то флажковый бит нуля переходит в состояние 1. Если данная величина оказывается больше, чем содержимое аккумулятора А, то в состояние 1 устанавливается флажковый бит переноса СУ (рис. 3,21). Таким образом, эти операции позволяют определить, равно ли содержимое А содержимому регистра г или М-й ячейки ЗУ или же меньше (больше). Функция сравнения соответствует функции принятия решения, с помощью которой можно выяснить, удовлетворяет ли какой-либо результат определенному условию.
На основе этого решения в программе выполняется ветвление с помощью команд условных переходов, которые реагируют на значения Набор команд микроЭВМ флажковых битов, определенные с помощью команды сравнения. Следует отметить, что при выполнении операции сравнения содержимое А не изменяется. Функция ИСКЛЮЧАЮЩЕЕ-ИЛИ позволяет определить равенство двух чисел, однако содержимое аккумулятора А теряется, так как в него зано- СМР г (сравнить с содержимым рвзистра) (А) -(г) СМРг Флажноеый бит 2=1, если (А) =(г) смр м (сравнить с содержимым памяти) (4)-пн.
(В Флаткоеый бит переноса СУ=1, если (А)<(д), сд изменяются Флшнкоеые биты 2,С,Р,СУАС Фложноеый бит 2=1, если (А) (байт 2) Флажковыи" бит переноса Су=), если(Я)<(баит 2) изменяются дтшнковьт боты 2Б,Р,СУАС (а) Рис. 3.21. Команды сривиеиии СМР и СР1. а — наглядное представление команд; б — коканды СМР н СР1.
Адрес Н С Косвенная адресация тлажноаый бит переноса СУ=), если (А) < (г) Нзмвняются Фложновые биты 2„Е,Р,СУ, АС СМР М Флотковый бит 2 1, есло (А)=((н, (В СР1 (сравнить с непосредственным операндом> (и) - (байт г) Глава 8 !36 Сравнить А с г,т или байтом 2 тложкозыи бит 2=), если <А) = <г) <рлпмкозый бит СГ=<,если <А) с<г) Аккумуллтоо А псп<пстся без изменений (б) Рис. 3.2! (продолженне). сится результат выполнения операции ИСКЛЮЧАЮЩЕЕИЛИ. При этом флажковый бит') нуля указывает, чему равно содержимое А — О или 1. 3.7. Команды сдвига Во всех МП применяются команды сдвига, которые производят сдвиг битов в байте либо на один разряд влево, либо на один разряд вправо, как показано на рис.
3.22. Существуют две группы операций сдвига, а именно группа операций, сдвигающих биты через разряд флажкового бита переноса, значение которого может при этом изменяться, и группа операций, которые выполняются без участия флажкового бита переноса. При сдвиге влево с помощью группы операций сдвига, протекающих без участия флажкового бита переноса, старший бит после сдвига нз байта вводится снова в разряд младшего бита этого же байта. В действительности здесь происходит вращение битов влево, т. е. циклический сдвиг.
При сдвиге вправо младший бит выдвигается из байта и затем вводится в старший разряд этого же байта (вращение направо). При выполнении операций сдвига с участием флажкового бита переноса он становится девятым битом, так что при сдвиге вправо младший бит, выдвигаемый из байта, будет заменен флажковым битом переноса. При выполнении операции сдвига влево старший бит сдвигается в разряд флажкового бита пе- и Флажковый бит нуля равен 1 в том случае, когда результат операции содержит нули во всех разрядах; последнее означает, что операнды поразрядно совпадают. — Прим. ред. Глава 3 реноса, значение которого затирается. При этом младший бит заменяет флажковый бит переноса. Операции сдвига применяются при выполнении различных сложных операций, например быстрое умножение на 10, которое необходимо при преобразовании двоичного представления числа в десятичное.
Операция сдвига осуществляется следующим образом: производятся два последовательных сдвига влево, т. е. осуществляется умножение на 4, затем к полученному результату добавляется множитель (умножение на 5), и полученный промежуточный результат вновь сдвигается на один разряд влево, т. е. производится умножение на 10. 8.8. Команды приращений (инкремент и декремент) Эти команды либо увеличивают, либо уменьшают содержимое одного или двойного регистра на 1 (рис. 3.23 и 3.24).
Результаты выполнения этих команд влияют на значения флажковых битов. Кроме того, эти команды используются для управления счетом точно так же, как в двоичных счетчиках при комбинационной логике. По команде 1ХС (инкремент) можно увеличивать определенное число на единицу каждый раз, когда в программе выполняется какой-либо цикл. Если затем требуется остановить какую-либо подпрограмму после 50-го шага, то это можно сделать с помощью индекса, хранящегося в определенном регистре с начальным значением, равным О. Этот индекс увеличивается после каждого выполнения (шага) подпрограммы на 1 и сравнивается с 50. Сравнение производится по команде СМР, которая сравнивает текущий индекс с числом 50.
Результат сравнения определяет значение флажкового бита нуля, который инициирует условный переход из данного программного цикла. 3.9. Команды прямого ввода данных (команды с непосредственной адресацией) Операнд этих команд содержит данные, которые необходимо обработать. В случае команды ЬХ1 операнд состоит из двух байтов, а в случае команды МЧ! — из одного (рис.
3.25). Команды ЬХ1 предназначены для загрузки в двойной регистр двухбайтового числа, команды МЧ! — для загрузки в один регистр однобайтового числа. Команда ЬХ1 3Р загружает указатель стека. Эта команда обычно используется в начале программы, так как до начала выполнения программы указателю стека необходимо сообщить, какая именно часть ЗУ выделена под стек.
Данной командой указывается первый адрес стека. Если не поместить гв/ г-Ц /Ыя г (итрвмвнт) /г)-(г) -! Измвнлюпзся флажноеые биты Дг,РЯС 0 0 О 0 О ! 0 О Ося г(регистр декремента) !г) (г) -! ° зменлются фпожповвв биты 7,$,Р дС 0 0 О О О / 0 / Мв / !м — !) /)/р м (запоминанм инкремевт/р и//,!и ((и,!)) -/ Изменяются флажпоеые ОСЯ М !денремент М) ((и, !)) ((и, !.)) -! изменяются фла!няовые биты 7,$,Р,ДС и вбит Вбтп Двоиной регистр и!. Увеличение на / содержимого регоетра Устанаоливаются флажяовые биты 7,$,р,яс Уеелипение на / содержимого рввистра (д) Устанавливаются флажковые биты 7,$,р,лс Рис.