30420-1 (Микроконтроллеры Z86 фирмы ZILOG), страница 6
Описание файла
Документ из архива "Микроконтроллеры Z86 фирмы ZILOG", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "30420-1"
Текст 6 страницы из документа "30420-1"
Рис. 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
Мнемоника | Операнды | Наименование команды | |
Английский язык | Русский язык | ||
КОМАНДЫ ЗАГРУЗКИ | |||
CLR LD LDC LDE POP PUSH | dst dst,src dst,src dst,src dst src | Clear Load Load Constant Load External Data Pop Push | Очистить Загрузить Загрузить константу Загрузить внешние данные Извлечь из стека Загрузить в стек |
АРИФМЕТИЧЕСКИЕ КОМАНДЫ | |||
ADC ADD CP DA DEC DECW INC INCW SBC SUB | dst,src dst,src dst,src dst dst dst dst dst dst,src dst,src | Add with Carry Add Compare Decimal Adjust Decrement Decrement Word Increment Increment Word Subtract with Carry Subtract | Сложить с переносом Сложить Сравнить Десятичная коррекция Декремент Декремент слова Инкремент Инкремент слова Вычесть с заемом Вычесть |
ЛОГИЧЕСКИЕ КОМАНДЫ | |||
AND COM OR XOR | dst,src dst dst,src dst,src | Logical AND Complement Logical OR Logical EXCLUSIVE OR | Логическое И Дополнение ( НЕ ) Логическое ИЛИ Исключающее ИЛИ |
КОМАНДЫ УПРАВЛЕНИЯ ПРОГРАММОЙ | |||
CALL DJNZ IRET JP JR RET | dst r,dst cc,dst cc,dst | Call Procedure Decrement and Jump Non Zero Interrupt Return Jump Jump Relative Return | Вызов подпрограммы Декремент и переход, если не нуль Возврат из прерывания Переход Переход относительный Возврат из подпрограммы |
КОМАНДЫ МАНИПУЛЯЦИИ БИТАМИ | |||
TCM TM AND OR XOR | dst,src dst,src dst,src dst,src dst,src | Test Complement Under Mask Test Under Mask Bit Clear Bit Set Bit Complement | Проверить дополнение с маской Проверить с маской Очистить биты Установить биты Дополнить биты |
КОМАНДЫ ПЕРЕСЫЛКИ БЛОКОВ | |||
LDCI LDEI | dst,src dst,src | Load Constant Autoincrement Load External Data Autoincrement | Загрузить константу с автоинкрементом Загрузить внешние данные с автоинкрементом |
КОМАНДЫ СДВИГОВ | |||
RL RLC RR RRC SRA SWAP | dst dst dst dst dst dst | Rotate Left Rotate Left Through Carry Rotate Right Rotate Right Through Carry Shift Right Arithmetic Swap Nibbles | Циклический влево Циклический влево через перенос Циклический вправо Циклический вправо через перенос Арифметический вправо Свопинг полубайтов |
КОМАНДЫ УПРАВЛЕНИЯ ПРОЦЕССОРОМ | |||
CCF DI EI HALT NOP RCF SCF SRP STOP WDH WDT | src | Complement Carry Flag Disable Interrupts Enable Interrupts Halt No Operation Reset Carry Flag Set Carry Flag Set Register Pointer Stop WDT Enable During HALT WDT Enable or Refresh | Дополнить флаг переноса Запретить прерывания Разрешить прерывания Переход в режим HALT Нет операции Сбросить флаг переноса Установить флаг переноса Установить указатель регистров Переход в режим STOP Разрешение сторожевого таймера в режиме HALT Разрешение или переза- пись сторожевого таймера |
1.3.3.2. Условия ветвления программы
Команды переходов JP и JR обеспечивают ветвление программы по различным условиям. В качестве условий используются состояния флагов C,Z,S и V, а также их логические функции. Набор допустимых для языка ассемблера условий с указанием мнемонического обозначения (cc), значения, соответствующего состояния флагов и шестнадцатеричного кода условия приведен в табл.1.9. Набор условий предусматривает ветвление по состояниям отдельных флагов, а также по всем возможным соотношениям между целыми числами со знаком и между беззнаковыми целыми числами.
Таблица 1.9. Мнемоника условий (cc) и цифра КОП (c)
cc | Значение | Состояние флагов | c |
F | Всегда ложно | — | 0 |
Всегда истинно | — | 8 | |
C | Есть перенос | C=1 | 7 |
NC | Нет переноса | C=0 | F |
Z | Есть нуль | Z=1 | 6 |
NZ | Нет нуля | Z=0 | E |
PL | Положительно | S=0 | D |
MI | Отрицательно | S=1 | 5 |
OV | Переполнение | V=1 | 4 |
NOV | Нет переполнения | V=0 | C |
EQ | Равно | Z=1 | 6 |
NE | Не равно | Z=0 | E |
GE | Больше или равно | (S xor V)=0 | 9 |
LT | Меньше | (S xor V)=1 | 1 |
GT | Больше | (Z or (S xor V))=0 | A |
LE | Меньше или равно | (Z or (S xor V))=1 | 2 |
UGE | Б/з больше или равно | C=0 | F |
ULT | Б/з меньше | C=1 | 7 |
UGT | Б/з больше | (C=0 and Z=0)=1 | B |
ULE | Б/з меньше или равно | (C or Z)=1 | 3 |