Микроконтроллеры семейства Zilog Z86
нды, и до двух адресных полей. Способы трактовки кодов в адресном поле
называются способами адресации операндов.Прежде чем рассматривать набор
команд, необходимо более подробно рассмотреть используемые способы
адресации операндов.
1.3.1. Способы адресации операндов
В МК Z8 использовано шесть основных способов адресации операндов :
— регистровая ( Register );
— косвенная регистровая ( Indirect Register );
— индексная ( Indexed );
— прямая ( Direct );
— относительная ( Relative );
— непосредственная ( Immediate ).
Кроме того, регистровая и косвенная регистровая адресации имеют ряд
модификаций: они могут использовать сокращенный 4-битный адрес рабочего
регистра, полный 8-битный адрес регистра, сокращенный 4-битный адрес
рабочей пары регистров, полный 8-битный адрес регистровой пары. При
адресации пар регистров используется четное выравнивание, т.е. допустимые
адреса —четные числа. Шестнадцатибитные операнды занимают в регистровом
файле пару регистров, причем по четному адресу размещается старший байт.
Все способы адресации операндов в системе команд МК Z8 приведены в
табл.1.7. В таблице указаны условные обозначения способов адресации,
используемые в дальнейшем в таблице команд, наименование способа адресации,
обозначение операнда на языке ассемблера, диапазон значений адреса и номер
рисунка, на котором дана графическая интерпретация способа адресации.
Следует отметить, что адреса типа R, RR, IR, IRR предполагают использование
как полного 8-битного адреса регистра, так и сокращенного 4-битного. В
последнем случае адрес размещается в младшей тетраде адресного байта, а в
старшей тетраде указывается код 1110B (EH) :
|E |Dst/src |
Поэтому обращение к регистрам рабочей группы E СРФ возможно только с
помощью рабочей регистровой адресации (см. п.п.1.2.2.1).
Таблица 1.7. Способы адресации операндов
|Спосо|Наименование |Операн|Диапазон|Ри|
|б | |д | |с.|
|r |Рабочая регистровая(РР) |Rn |n=0,...,|1.|
| | | |15 |35|
|R |Регистровая или РР |Reg |00H —FFH|1.|
| | |Rn | |36|
| | | |n=0,...,| |
| | | |15 |1.|
| | | | |35|
|RR |Регистровая пара или PP пара (четное |Reg |00H —FEH|1.|
| |выравнивание) |RRp | |38|
| | | |p=0,...,| |
| | | |14 |1.|
| | | | |37|
|Ir |Косвенная РР |@Rn |n=0,...,|1.|
| | | |15 |39|
|IR |Косвенная регистровая или косвенная РР |@Reg |00H —FFH|1.|
| | |@Rn | |40|
| | | |n=0,...,| |
| | | |15 |1.|
| | | | |39|
|Irr |Косвенная через РР пару |@RRp |p=0,...,|1.|
| | | |14 |41|
|IRR |Косвенная через регистровую пару или РР пару|@Reg |00H —FEH|1.|
| | |@RRp | |42|
| | | |p=0,...,| |
| | | |14 |1.|
| | | | |41|
|X |Индексная |Reg(Rn|00H —FFH|1.|
| | |) | |43|
|DA |Прямая |Addrs |0H |1.|
| | | |—FFFFH |44|
|RA |Относительная |Addr |-128- |1.|
| | | |+127 |45|
|IM |Непосредственная |#Data |00H —FFH|1.|
| | | | |46|
1.3.2. Флаги процессора
Флаговый регистр FLAGS (FCH) содержит информацию о текущем состоянии
процессора. Флаги и их расположение в регистре приведены на рис.1.47.
Состояние флагового регистра после сброса является неопределенным.
Рис. 1.47. Регистр флагов FLAGS
Флаговый регистр FLAGS содержит 6 флагов состояния, информация в которых
устанавливается в результате работы процессора. Четыре флага (C, V, Z, S)
используются командами условного перехода. Два флага (H и D) используются
командой десятичной коррекции. Оставшиеся два бита могут быть использованы
как флаги пользователя (F1 и F2). Ниже подробно рассмотрено назначение
каждого из основных флагов МК Z8.
1.3.2.1. Флаг переноса C (Carry Flag)
Флаг переноса устанавливается в 1, если в результате арифметической
операции генерируется “перенос из” или “заем в” старший 7-ой бит
результата. В противном случае флаг С очищается в 0.
В процессе выполнения команд циклического или арифметического сдвига флаг
переноса С содержит последний бит, выдвинутый из указанного в команде
регистра.
Команды могут устанавливать, сбрасывать или инвертировать (дополнять) флаг
переноса.
1.3.2.2. Флаг нуля Z (Zero Flag)
Если в результате арифметической или логической операции получается нулевой
результат, то флаг Z устанавливается в 1, в противном случае флаг Z
очищается в 0.
Если результат команды проверки бита в регистре равен 00Н,0то флаг нуля
устанавливается в 1, в противном случае — очищается в 0.
Если результат выполнения команды циклического или арифметического сдвига
равен 00Н, флаг Z устанавливается в 1, иначе —сбрасывается в 0.
1.3.2.3. Флаг знака S (Sign Flag)
Флаг знака хранит значение старшего бита результата текущей арифметической
или логической операции, операции циклического илиарифметического сдвига.
Для производства арифметических операций над числами со знаком в МК
используется представление информации в дополнительном коде. Положительное
число при этом идентифицируется в старшем значащем разряде и,
соответственно, значение флага знака также равно 0. Отрицательное число
идентифицируется 1 в старшем значащем разряде и, соответственно, флаг S
также будет равен 1.
1.3.2.4. Флаг переполнения V (Overflow Flag)
Для знаковых арифметических операций, операций циклического и
арифметического сдвигов флаг переполнения V устанавливается в 1, если
результат больше максимально возможного положительного числа (+127) или
меньше минимально возможного отрицательного числа (-128), представленного 8-
битным дополнительным кодом. Флаг V устанавливается в 0, если переполнение
отсутствует. В результате поразрядных логических операций флаг V всегда
сбрасывается в 0.
1.3.2.5. Флаг десятичной коррекции D (Decimal Adjust Flag)
Флаг десятичной коррекции D используется для двоично-десятичной арифметики
BCD (Binary Coded Decimal). Поскольку алгоритм десятичной коррекции
различен для сложения и вычитания, этот флаг сохраняет информацию о
последней выполненной команде, для последующей команды десятичной коррекции
DA. После выполнения операциивычитания флаг D устанавливается в 1, а после
операции сложения —очищается в 0.
1.3.2.6. Флаг полупереноса H (Half Carry Flag)
Флаг полупереноса H устанавливается в 1, когда при сложениичисел
генерируется перенос из 3-его бита или при вычитании генерируется заем в 3-
ий бит. Флаг H используется командой десятичной коррекции DA.
Значения всех флагов изменяются командой IRET при восстановлении из стека
состояния флагового регистра. Команды WDH и WDT устанавливают флаги Z, S и
V в неопределенное состояние. Команда SWAP устанавливает в неопределенное
состояние флаги C и V.
1.3.3. Набор команд
Команды микроконтроллеров Z8 функционально могут быть разделены на восемь
групп:
— команды загрузки;
— арифметические команды;
— логические команды;
— команды управления программой;
— команды манипуляции битами;
— команды пересылки блоков;
— команды сдвигов;
— команды управления процессором.
1.3.3.1. Описание системы команд
В табл.1.8 приведено краткое описание системы команд микроконтроллеров,
причем для каждой команды дано мнемоническое обозначение, принятое в языке
ассемблера, указан состав операндов и смысл команды на английском языке (
для понимания происхождения мнемоники как аббревиатуры ) и на русском
языке. Аббревиатура “сс” в колонке операндов команд управления программой
означает код условия ( condition ), а аббревиатура “r”— любой регистр из
рабочей группы ( register ).
Таблица 1.8. Краткое описание системы команд микроконтроллера Z8
|Мнемоник|Операнд|Наименование команды | |
|а |ы | | |
| | |Английский язык |Русский язык
| | скачать работу |
Микроконтроллеры семейства Zilog Z86 |