- •4. Программирование микропроцессоров
- •4.1. Запись программ
- •4.2. Методы адресации
- •4.3. Состав команд арифметических действий
- •4.4. Состав команд логических операций
- •4.5. Команды перемещения данных
- •4.6. Команды операций перехода и передачи управления
- •4.7. Команды операций вызова подпрограмм и возврата в основную программу
- •4.8. Команда загрузки в стек и возврата в основную программу
- •4.9. Команды управления
- •Вопросы для самоконтроля
4.5. Команды перемещения данных
Эта группа команд выполняет передачу данных из регистра в регистр, размещение данных в памяти, размещение извлеченных из памяти данных в устройствах ввода - вывода (УBB). Каждая команда перемещения содержит адреса источника и назначения данных. Способы адресации ориентированы на то, где и как осуществляется поиск данных. Команды МОV R1 , R2 обеспечивают передачу операнда из одного регистра РОН в другой, так как адресация регистровая, то команды однобайтовые, их символика (rs)→ (rd). У команд источником или приемником операнда при пересылках может быть ячейка памяти, косвенно адресованная содержимым регистровой пары HL (MOV M, R; MOV R, M с символикой (M) → ( R ) и (R) → M). Всего этих однобайтовых команд 64. Двухбайтные команды пересылки MVI производят загрузку регистра или косвенно адресованной ячейки памяти вторым байтом команды, их символика b2 → R или b2 → M. Пересылку операнда из ячейки памяти в аккумулятор и обратно выполняют трехбайтные команды с прямой адресацией LDА и SТА, имеющие символику ((b2 +b3)) → (А) и (А) → (адрес) и команды с косвенной адресацией LDAX RP и STAX RP с символикой (RP) → А и (А) → (RР). Анализ команд перемещения данных в табл. 4.1 показывает, что команды LXI RP, b3 b2 загружают вторым и третьим байтом регистровые пары В, D, Н и SР; команды PUSH RP и POP RP пересылают данные из регистровой пары В, D, Н и РS в стек и обратно; команды LНLD b3 b2 и SНLD b3 b2 пересылают данные из регистровой пары H в ячейки памяти, адресованные вторым и третьим байтами команд; команды SPHL и РCHL загружают указатель стека и программный счетчик содержимым регистровой пары НL (их символика (HL ) → SP и (HL) → PC); команды ХСНB и XCHL производят обмен данными между парами DЕ и HL стеком и парой HL. Все эти команды не меняют состояния регистра признаков. При выполнении трехбайтовых команд МП воспринимает второй байт как младший, а третий - как старший при определении адреса или порядка пересылки.
Рассмотрим порядок выполнения некоторых команд МП. В команде с регистровой адресацией MОV А, L (рис. 4.7, а) буква A , следующая за мнемоникой МОV, указывает источник данных, а буква L - регистр приемник, после пересылки данные в А остаются.
а
б
в
Рис. 4.7. Порядок выполнения команды МП: а – с регистровой адресацией MOV A,L; б – с непосредственной адресацией LXI H; в – с прямой адресацией STA
4.6. Команды операций перехода и передачи управления
Эти команды имеют еще термин «ветвление» и служат для организации разветвлений и вложения подпрограмм. Команды этой группы бывают безусловными и условными. Команды условных переходов приведены в табл. 4.4, из которой следует, что условные команды обеспечивают переход только при строго определенном значении одного из разрядов регистра признаков F.
В регистр F заносятся и хранятся признаки (см. рис. 4.1) Z, S, АС, Р, СY результата вычисления X7X6X5X4X3X2X1ХО в АЛУ. По значениям признаков выполняются условные переходы в программах, циклическое повторение одной и той же операции, т. е. условие передачи управления. Код указателя условия передачи управления отображается в коде команды трехразрядным указателем ССС в соответствии с табл. 4.5.
Признаки результата вычислений Таблица 4.4
Функция |
Условия перехода Число |
|||||||||
Z =1 |
Z=0 |
СY=1 |
CY=0 |
Р=1 |
Р=0 |
S=1 |
S=0 |
тактов |
байт |
|
Переход |
IZ |
INZ |
JC |
JNC |
JPE |
IPO |
JM |
JP |
11/17 |
3 |
Вызов |
СZ |
CNZ |
CC |
CNC |
СРЕ |
СРО |
СМ |
СР |
11/ 17 |
3 |
Возврат |
RZ |
RNZ |
RС |
RNC |
RРЕ |
RPO |
RM |
RP |
5/11 |
1 |
Признаки условий передачи управления Таблица 4.5
Результат АЛУ |
Условия передачи управления |
Код ССС |
Х7+Х6+….+Х0 не=0
Х7+Х6+….+Х0 =0
Х7=1
Х7=0
|
Если результат не нулевой, то бит Z=0 Если результат нулевой, то бит Z=1 Если не было переноса / заёма, то бит CY=0 Если был перенос / заём, то бит CY=1 Если результат не чётный, то бит P=0 Если результат чётный, то бит Р=1 Если результат положительный, то бит S=0 Если результат отрицательный, то бит S=1 |
000
001
010
011
100
101
110
111 |
Если соответствующее условие не выполнено, то передачи управления не происходит и выполняется следующая по порядку команда. Длительность условных команд зависит от того, выполнены условия перехода или нет, поэтому в графе «число тактов» в числителе указана длительность выполнения команды при отсутствии перехода, а в знаменателе - при выполнении перехода.
Из анализа табл. 4.1 и 4.4 видно:
1. Команды перехода загружают счетчик команд PC вторым и третьим байтом (b3 b2 →PC) и позволяют организовать циклы и разветвления путем перехода к новой последовательности команд. Однако команды перехода не допускают возврата в то место программы, откуда был осуществлен переход. В табл. 4.1 все восемь команд перехода (под номером 64) имеют мнемонику JCON b3 b2.
2. Команды вызова дают возможность заполнить текущее значение адреса в счетчике команд и возвратиться к прерванной последовательности после выполнения подпрограммы. Эти команды при реализации перехода заносят в стек содержимое счетчика команд, который, в свою очередь, заполняется вторым и третьим байтами команды, указывающей начальный адрес подпрограммы. В табл. 4.1 все восемь команд вызова (под номером 66) имеют мнемонику Сcon b3 b2 . Восемь однобайтовых команд возврата в табл. 4.1 имеют мнемонику Rcon. Команды возврата извлекают из стека содержимое двух ячеек и загружают им счетчик команд, при этом заканчивается выполнение подпрограммы. На следующем шаге МП обращается к тому месту программы, из которого произошел переход к подпрограмме. Команды вызова и возврата дают возможность сократить объем разрабатываемых программ за счет неоднократного использования их частей.
Условные команды определяют способность МП анализировать ситуацию и принимать решения. Команды обработки денных формируют признаки, которые проверяются при выполнении условных команд и определяют последующий ход выполнения программы.
Команда безусловного перехода JМP (перейти) является трехбайтовой непосредственной адресацией. Используется она для изменения адреса в счетчике команд МП (ее символика b3 b2 →РС). Пример использования такой команды приведен на рис. 4.8.
Рис. 4.8. Команда безусловного перехода JМP
Здесь адрес 2000 Н загружен в счетчик команд, информация о нем следует непосредственно за КОП, младшая часть адреса находится во 2-й байте памяти, а старшая в 3-м байте. Эта команда будет использована для запуска счетчика команд в момент начала выполнения новой программы, т. е. команду безусловного перехода можно рассматривать как способ загрузки новой информации об адресе в счетчик команд.
Особое место среди команд передачи управления занимают однобайтовые команды повторного старта RST. Они представляют собой команды вызова с фиксированными адресами перехода, причем точка перехода задается кодом команды и используется для обеспечения ввода в подпрограммы обработки прерывания. В этом случае код команды RSТ формируется аппаратными средствами и запрашивается MП с помощью сигнала обслуживания прерывания. Команды RST, как и команды вызова, перегружают содержимое счетчика команд (СК) в стек, но счетчик загружается иначе: в старший байт CК заносится 00, а в младший - вектор прерывания, задающий начальный адрес подпрограммы. Вектор прерывания задает один из восьми ареалов в первых 64 байтах памяти (табл. 4.6).
Объем каждого ареала составляет 8 байт. Если подпрограмма обработки прерывания превышает этот объем, то по адресу вектора прерывания записывается команда JМР, вызывающая переход к остальной части подпрограммы. Отличием команд РSТ от команд вызова является также сброс внутреннего триггера разрешения прерывания (РП =0). Этим обеспечивается запрет на обработку очередных запросов в ходе выполнения данной подпрограммы.
Адреса ареалов прерывания Таблица 4.6
Мнемоника |
Код команды
|
Начальный адрес ареала |
Мнемоника |
Код команды |
Начальный адрес ареала |
|
RST0 |
С7
|
0000 |
RS T4 |
Е7 |
0020 |
|
RSТ1
|
CF |
0008 0010
|
RS Т5 RS Т6 |
EF |
0026 |
|
RST2
|
D7 |
F7 |
0030 |
|||
RST3
|
DF |
0018 |
RS T7 |
FF |
0038 |
|
К командам передачи управления относят команду PCHL, которая осуществляет передачу управления по адресу, содержащемуся в паре регистров HL.
