Архитектура микроконтроллеров семейства MCS-51. Бояринов А.Е - 27 стр.

UptoLike

Составители: 

Регистровый способ адресации используется для операндов, хранящихся в одном из регистровых
банков: регистры общего назначения R0 – R7. Например, команда DEC R0 (декремент содержимого ре-
гистра R0). Этот способ адресации также позволяет получать команды минимального формата.
Непосредственный способ адресации служит для использования в качестве операнда непосредст-
венных данных. При этом операнд находится в программной памяти непосредственно за КОП команды.
Данные могут быть одно- или двухбайтовыми. Например, команда MOV A, #d (загрузить байт в акку-
мулятор) имеет двухбайтный формат: первый байт КОП и байт данных #d. Например, команда MOV
DPTR, #d16 (загрузить два байта в регистр-указатель DPTR) имеет трехбайтный формат: первый байт
КОП и два байта данных #d16.
Прямой способ адресации предполагает указание операндов посредством адреса, содержащегося в
команде. Адрес может быть одно- или двухбайтовым. Например, команда ADD A, ad (сложение акку-
мулятора с содержимым памяти по адресу ad) имеет двухбайтный формат: первый байт КОП и байт ад-
реса ad. Например, команда LJMP ad16 (длинный переход по адресу ad16) имеет трехбайтный формат:
первый байт КОП и два байта адреса ad16.
Косвенный способ адресации предполагает указание операндов посредством адреса, содержащегося
в регистре либо в регистровой паре. В команде указывается регистр, который в свою очередь указывает
адрес операнда. Например, команда MOV A, @R0 (загрузить в аккумулятор содержимое ячейки внут-
ренней памяти, восьмиразрядный адрес которой содержится в регистре R0). Например, команда MOV
A, @ DPTR (загрузить в аккумулятор содержимое ячейки внешней памяти, адрес которой содержится в
двухбайтном регистре-указателе DPTR). Этот способ адресации позволяет уменьшить формат команд и
повысить гибкость программирования.
Многие команды для указания операндов комбинируют различные способы адресации. Например,
команда MOV @R0, #d (загрузить байт данных #d в ячейку внутренней памяти, восьмиразрядный адрес
которой содержится в регистре R0). Здесь используются непосредственный (источник операнда) и кос-
венный (приемник операнда) способы адресации.
2.1.4 Флаги результата
Слово состояния программы (регистр PSW) включает в себя четыре флага (см. табл. 2):
СY – перенос,
АС – вспомогательный перенос (полуперенос),
OV – переполнение,
P – паритет.
Флаг CY устанавливается, если в старшем бите результата возникает перенос или заем. При выпол-
нении операций умножения и деления флаг СY сбрасывается.
Флаг АС устанавливается, если при выполнении операции сложения или вычитания между тетра-
дами байта (полубайтами) возник перенос или заем.
Флаг OV устанавливается, если результат операции сложения или вычитания не укладывается в се-
ми битах и старший (восьмой) бит результата не может интерпретироваться как знаковый. При выполне-
нии операции деления флаг OV сбрасывается, а в случае деления на нуль устанавливается. При умноже-
нии флаг OV устанавливается, если результат больше 255.
Флаг паритета напрямую зависит от текущего значения аккумулятора. Если число единичных битов
аккумулятора нечетное, то флаг Р устанавливается, а если четное сбрасывается. При нулевом значе-
нии аккумулятора P = 0. Все попытки изменить флаг Р, присваивая ему новое значение, бесполезны, ес-
ли содержимое аккумулятора при этом останется неизменным.
14 Команды, модифицирующие флаги результата
Команды Флаги Команды Флаги
ADD CY, OV, AC CLR CY CY = 0
ADDC CY, OV, AC CPL CY CY = NOT(CY)
SUBB CY, OV, AC ANL CY, b CY