Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 26
Текст из файла (страница 26)
3.23. Команды инкрементирования и декрементирования. а — нвтлядиое представление комвид; б — команды инкремвитироввния; в — комвнды де. кремеитнровиния. 14О Глава 8 гй )ях гр (инкрвмент двойного регистра) (гй)(г! (гИ)(г!)ь! О О я р О О ! ! )Л)Хгр трлаиткоеые боты не измеилюгаси ОСХ гр (декремент двойнозарегастра) (гйнг! (гй)(г!) - ! ос)( гр Втлажковые биты не изменнются Увеличение на)содержимого двоиного регистра (б) <вс)-содержимое регитпра вс; зр- указатель стека; Зтлаитковые баты не устанавливоютсн )ВС)- содержимое регистра Вс; зи- указатель стека; втлажновые биты не устоновлиеаютсл Рнс.
3.24. Команды 114Хгр и 1)СХгр. а — натлндиое предстаалване команд; б — команды )ЫХ) в — команды РСХ. команду 1.Х1 БР в начале программы, то указатель стека начнет работать с нулевого или даже отрицательного адреса, что приведет к ошибке в выполнении программы. В командах 1.Х1 и МИ в поле операндов находится константа в виде фиксированного числа, которая при выполнении программных циклов определяет, сколько раз должен выполняться данный цикл. При описании команд 1ИС и РС)с приводился пример, в котором программный цикл выполнялся 50 раз. Число 50 можно поместить в регистр с помощью команды с непосредственной адресацией еще до начала выполнения цикла, чтобы затем при выполнении соответствующей Пересылка данных из байтов 2 и 3 е я,м или КР МИ г, данные (г) (байт 2) Команда ми, б Батп 2 ООР-регистр-приемник г Флажкоеые биты не изменяются Команда Баит 2 МИМа е ((И, Сд (баилз 2) МУГ М, данные ячейка Зу должна быть указана е н( бзлажковые биты не изменяются ЕК(гр, донные)б (гй) (байт 3) !гд-(байт г) (ХГ гр, данные (Б йзлажкоеые биты не изменяются (б) Пересьико даннык из байта г е я им (А) -содержимое д; йзлажковые биты не изменяются Пересылка даннык из байтов 2 ив е ЯР (В) (ВС)-содержимое ВС; бзложковые бшпы не изменяются Рис.
3.25. Команды непосредственной пересылки МОЧ. а — каскадное представлевве команд; б — комавдм МУ1; е — комавды ЕХ!. $42 Глава 8 подпрограммы на каждом прогоне цикла уменьшать это число (50) на единицу до тех пор, пока в результате не получится О. После этого совершается переход из цикла и продолжается выполнение основной программы. В случае двухбайтовых операндов необходимо помнить, что байт, расположенный сразу после кода команды, является младшим, а следующий байт — старшим.
Такая структура сохраняется для всех команд, в которых используется двухбайтовое представление данных. Однако это правило выполняется не для всех типов МП. В некоторых из них принят другой порядок расположения байтов. 3.10. Команды перехода и ветвления Команды перехода и ветвления приводят к таким изменениям в ходе выполнения программы, в результате которых прекращается выполнение одних ветвей программы и реализуются другие ветви программы (промежуточные подпрограммы). Эти изменения позволяют либо организовывать программные циклы, которые за счет многократного повторения выполняют определенную операцию (обратный переход), либо исключать некоторую часть основной программы (прямой переход), либо переходить к подпрограмме, которая должна выполнить какую-либо определенную операцию, после чего будет совершен возврат в основную программу.
Для осуществления прямых и обратных переходов используются команды как условного, так и безусловного перехода, а при вызове подпрограмм применяются команды СА1Л. и цЕТ13КХ, которые также могут быть как условными, так и безусловными. Под условной подразумевается такая операция, в данном случае операция ветвления, которая будет выполнена, если контрольная переменная, например флажковый бит, примет определенное значение. Программное ветвление встречается и в нашей повседневной жизни. В качестве примера можно указать на программу проведения досуга, которая содержит подпрограмму перекапывания садового участка.
В основной программе «досуг» имеется ветвление «перекапывание садового участка», которое выполняется условно. Как известно, перекапывание садового участка, должно быть выполнено, во-первых, когда в этом есть необходимость, а вовторых, при благоприятной погоде. В подпрограмме «перекапывание садового участка» имеется ряд циклов, которые выполняются за счет многократных повторений. В качестве примера можно назвать операцию, когда нужно воткнуть лопату в землю и отбросить ее. Эта операция повторяется до тех пор, пока не будет достигнута граница отведенного под обработку Набор команд микроЭВМ !43 участка. После этого совершается условный переход (условный, так как фиксируется граница участка) в исходное положение и вскапывание повторяется.
Операция «перекапывание» соответствует программе с одним циклом, однако каждый проход до границы участка образует еще один цикл. Подпрограмма «перекапывание садового участка» заканчивается тогда, когда будет установлено, что вся площадь садового участка действительно перекопана.
Команды перехода МП включают также безусловные переходы, которые выполняются в момент появления соответствующей команды, и условные переходы, выполнение которых зависит от значения определенного флажкового бита. В частности, известны переходы, выполнение которых зависит от наличия переноса, нулевого, отрицательного или положительного результата, четности и т. д. Команды перехода не изменяют значений флажковых битов. На рис. 3.2б — 3.28 приведены команды перехода в том виде, который они имеют в наборе команд МП 8085А.
Значения флажковых битов определяются результатом выполнения предшествующих операций. Так, например, перед командой перехода может быть выполнена команда сравнения, которая фиксирует равенство двух чисел. В случае равенства триггер флажкового бита нуля устанавливается в состояние 1. На основе результата операции сравнения принимается решение о выполнении или невыполнении перехода или ветвления. С контрольными переменными, которые появляются в процессе выполнения программы, мы уже познакомились ранее при описании автоматической стиральной машины.
В этом примере контрольными переменными были ТЕМР80 и НПН, т. е. информация на уровне флажковых битов, которую обеспечивала схема управления автоматом, если вода нагревалась до уровня 80'С или же в барабане достигался требуемый уровень воды соответственно. На основе этих данных в программе стирки выполнялся (или не выполнялся) следующий шаг. Флажковые биты в МП также являются контрольными переменными, которые многократно опрашиваются в ходе выполнения программы, н, после того как опросы этих переменных дают утвердительный ответ (Да), обычно происходит требуемый переход.
Команды САВЕ и ВЕТ()мМ являются командами перехода к подпрограммам и возврата из них (рис. 3.27 и 3.28). Следует отметить, что в команде ВЕТ()мН отсутствует указание адреса в качестве операнда. Этот адрес задает команда СА1.1, а команда ЕЕТ(1к14 только обеспечивает возврат (обратный переход) именно по этому адресу. Адрес возврата (2 байт) временно хранится в стеке. Идентификацию ячейки ЗУ, в ко- Условие ЗМР адрес и восьмеричный кад: ЗОЗ Шестнадцатеричный код; СЗ флажиовые биты не изменяются Переход не связан с каким-либо условием Ау.. А )Б. адший Ста бит Адрес условново перекада и Условный переход: битва ССС определяют условие, при котором выполняется переход 1см. таблицу) флтнновые биты не измемяются Счетчик команд МЛ Команда А7...
А)Б... тпй Стар бит Счетчик команд мя '1 Безусловный; '1 условмыи, зависящий от фломмового бита мв=ыдп=МББ; Мхе=О: З=йт МЗВ=1тв=) <мзв-стертой оазрлд) Рнс. 3.26. Команды перехода (условного и безусловного). а наглпдное представление команд; б — моманды перехода. Рис.
3.21. Команды СА1Е (условные и безус- Стек е ЗУ кодирование ссс проводится созласно рис.з.дв фложкоеые биты не изменяются Команда Сдсд одезуслоеный; зз условный, зависящий от флажковозо бита Стековое ЗУ )стек) юоз 77з 74 в 73 в 72 в 7)в Кодировпние ССС проводится созласно рос.3.2б Фложковне биты не изменяюпюя )'б) Обротньзй перекод)возврат) ')Безусловный) г)условный; з)зтим переходом должно предшествовать команде типа Слаб Рнс.
3.28. Команды КЕТ (команды возврата). в — ваглядвое представлеиие иоыаид; 6 — команды возврата. Набор команд микроЭВМ торой находится адрес возврата, обеспечивает указатель стека, т. е. определенный регистр МП. Следствием такой автоматической регистрации адреса возврата является то обстоятельство, что после команды СА(.г. всегда должна следовать команда КЕТ()КО, и эти возвраты нельзя обеспечить с помощью обычной команды перехода, потому что при этом правильная работа указателя стека будет нарушена'>. С другой стороны, в такой ситуации вполне возможно применить команду РОР, хотя при этом и будет потерян адрес возврата. Однако последнее обстоятельство значения не имеет, так как при возврате произойдет нормальный переход с правильной адресацией.
Команда РОР обеспечивает такое же приращение содержимого указателя стека, как и в случае команды КЕТ()КИ. В результате управление указателем стека этой командой перехода не приведет к нарушению нормального режима работы. При появлении команды САУЛ, адрес, который зафиксирован в счетчике команд, увеличится на единицу и затем будет в два приема передан в стек, причем сначала старший байт, а затем младший (рис. 3.27).