Микроконтроллеры семейства Zilog Z86
Рефераты >> Программирование и компьютеры >> Микроконтроллеры семейства Zilog Z86

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

Мнемоника

Операнды

Наименование команды

Английский язык

Русский язык

КОМАНДЫ ЗАГРУЗКИ

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 Arithetic 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 Разрешение или переза- пись сторожевого таймера


Страница: