Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Система команд однокристального микропроцессора

Читайте также:
  1. II. Государственная система профессиональной ориентации и психологической поддержки населения в Российской Федерации.
  2. II. Методы социально-педагогической деятельности руководителя временной лидерской команды (вожатого).
  3. III. Выбор как система относительных сравнений
  4. IV. Порядок перевода, прикомандирования военнослужащих и приостановления им военной службы
  5. IX. Комплекс знаний, необходимых руководителю лидерской команды (вожатому).
  6. V. Условия формирования сборных команд и условия допуска
  7. VI. СИСТЕМА ОЦЕНКИ РЕЗУЛЬТАТОВ ОСВОЕНИЯ РАБОЧЕЙ ПРОГРАММЫ

Всякий МП представляет собой программно-управляемое устройство, которое способно выполнять определенный набор действий (операций), задаваемый соответствующим набором команд. При рассмотрении системы команд МП большую помощь может оказать так называемая программная модель, которая содержит все доступные программисту компоненты МП без указания внутренних связей между ними. Функции этих компонентов обеспечиваются соответствующими командами МП. На рисунке 23 изображена программная модель 8-разрядного ОМП КР580ВМ80. На ней представлен 8-разрядный накапливающий регистр (аккумулятор) А, содержимое которого в качестве источника или (и) приемника информации участвует в большинстве команд. Рядом с ним находится регистр признаков F, в соответствующих его разрядах показаны все используемые признаки. Размещение регистров А и F в программной модели рядом вызвано тем, что их содержимое (обозначаемое PSW) записывается в стек одной командой. Регистры общего назначения В, С, D, Е, Н, L могут быть использова-
ны отдельно либо парами, что определяет их расположение в програм-
мной модели. В стек записывается одной командой содержимое пары РОН. Указатель стека SP и счетчик команд PC всегда оперируют 16-разрядными числами. Триггер Tint предназначен для хранения запрета прерываний.

Каждая команда МП имеет определенную структуру (формат), в которой можно выделить часть (поле) кода операции (КОП) и поле операнда, определяющее числа (операнды), участвующие в операции в соответствии с КОП. Способ определения операнда на основе структу­ры команды называется режимом адресации. Использо­вание нескольких режимов адресации расширяет воз­можности при составлении программы. Наиболее широко применяются следующие способы адресации:

- неявная адресация, когда место расположения операнда подразумевается и его адрес отдельно ни в какой части команды не задается;

- прямая адреса­ция, предусматривающая запись в поле операнда адреса ячейки памяти с операндом;

- непосредственная адреса­ция, когда в поле операнда находится сам операнд;

- реги­стровая адресация, когда в поле операнда указывается номер РОН с операндом;

- косвенная адресация, преду­сматривающая запись в отдельных разрядах КОП номе­ров РОН, в которых находится адрес ячейки памяти с операндом.

 

 

Рисунок 23 – Программная модель 8-разрядного МП КР580ВМ80

Именно эти способы адресации применяют­ся в большинстве МП, причем в одной и той же команде может одновременно использоваться несколько способов. Например, в командах для обработки двух чисел один операнд может быть задан регистровой адресацией, а другой – непосредственной. Чаще всего один из опе­рандов подразумевается находящимся в аккумуляторе, туда же помещается и результат выполнения операции.

При обработке информации в МП каждая команда представляет собой двоичный код. Однако при подготов­ке программ пользователю обычно удобнее применять символические обозначения (мнемокоды) команд. Чаще всего в качестве мнемокодов используются сокращения от английских наименований соответствующих операций. Например, LDA – load direct accumulator (прямая за­грузка аккумулятора). Иногда мнемокоды представляют собой слова, определяющие суть выполняемых операций. Например, PUSH – затолкнуть, POP – вытолкнуть. В структуре команд в символическом виде могут приво­диться сведения об операндах и адресах, по которым расположены операнды (это могут быть регистры МП, регистровые пары, ячейки памяти М, 8- или 16-разрядные числа, 8- или 16-разрядные адреса).

В большинстве МП применяются команды длиной в 1…3 байт. Во всех командах раз­ряды КОП располагаются в первом байте.

Система команд микроконтроллера стандарта MCS-51 представлена в таблице 1.

Таблица 1 – Система команд микроконтроллера стандарта MCS-51

Мнемоника Описание Длина, байт Кол-во пери-одов гене-ратора
       
Арифметические команды
ADD A, Rn Прибавляет регистр к Аккумулятору    
ADD A, direct Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в команде, к Аккумулятору  
ADD A, @Ri Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, к Аккумулятору  
ADD A, #data Прибавляет к Аккумулятору число #data  
ADDC A, Rn Прибавляет регистр и флаг переноса к Аккумулятору  
ADDC A, direct Прибавляет содержимое ячейки внутренней памяти данных, ад-рес которой задан в команде, и флаг переноса к Аккумулятору    
ADDC A, @Ri Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, и флаг переноса к Аккумулятору  
ADDC A, #data Прибавляет к Аккумулятору число #data и флаг переноса  

Продолжение таблицы 1

       
SUBB A, Rn Вычитает регистр из Аккумулятора    
SUBB A, direct Вычитает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, из Аккумулятора  
SUBB A, @Ri Вычитает содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, из Аккумулятора    
SUBB A, #data Вычитает число #data из Аккумулятора  
INC A Инкрементирует Аккумулятор  
INC Rn Инкрементирует регистр
INC direct Инкрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в команде  
INC @Ri Инкрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1  
DEC A Декрементирует Аккумулятор    
DEC Rn Декрементирует регистр
DEC direct Декрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в команде  
DEC @Ri Декрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1  
INC DPTR Инкрементирует регистровую пару DPTR  

 

Продолжение таблицы 1

       
MUL AB Перемножает Аккумулятор и регистр В    
DIV AB Делит Аккумулятор на регистр В
DA A Выполняет десятичную коррек-цию Аккумулятора  
Логические команды
ANL A, Rn Выполняет логическое И Аккумулятора и регистра    
ANL A, direct Выполняет логическое И Акку-мулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде  
ANL A, @Ri Выполняет логическое И Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1    
ANL A, #data Выполняет логическое И Аккумулятора и числа #data  
ANL direct, A Выполняет логическое И содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и Аккумулятора    
ANL direct, #data Выполняет логическое И содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и числа #data  
ORL A, Rn Выполняет логическое ИЛИ Аккумулятора и регистра    

Продолжение таблицы 1

       
ORL A, direct Выполняет логическое ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде    
ORL A, @Ri Выполняет логическое ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1  
ORL A, #data Выполняет логическое ИЛИ Аккумулятора и числа #data  
ORL direct, A Выполняет логическое ИЛИ содержимого ячейки внутрен-ней памяти данных, адрес которой задан в команде, и Аккумулятора
ORL direct, #data Выполняет логическое ИЛИ содержимого ячейки внутрен-ней памяти данных, адрес которой задан в команде, и числа #data    
XRL A, Rn Выполняет логическое ИСК-ЛЮЧАЮЩЕЕ ИЛИ Акку-мулятора и регистра    
XRL A, direct Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ Акку-мулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде  

Продолжение таблицы 1

       
XRL A, @Ri Выполняет логическое ИСК-ЛЮЧАЮЩЕЕ ИЛИ Аккуму-лятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1    
XRL A, #data Выполняет логическое ИСК-ЛЮЧАЮЩЕЕ ИЛИ Аккуму-лятора и числа #data  
XRL direct, A Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ содер-жимого ячейки внутренней памяти данных, адрес которой задан в команде, и Аккуму-лятора
XRL direct, #data Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ содер-жимого ячейки внутренней памяти данных, адрес которой задан в команде, и числа #data    
CLR A Обнуляет Аккумулятор    
CPL A Комплементирует Аккумулятор
RL A Ротирует Аккумулятор влево
RLC A Ротирует Аккумулятор влево с использованием флага переноса
RR A Ротирует Аккумулятор вправо
RRC A Ротирует Аккумулятор вправо с использованием флага переноса
SWAP A Обменивает полубайты в Аккумуляторе

Продолжение таблицы 1

       
Команды пересылки
MOV A, Rn Пересылает регистр в Аккумулятор    
MOV A, direct Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, в Акку-мулятор  
MOV A, @Ri Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, в Аккумулятор    
MOV A, #data Пересылает данные #data в Аккумулятор  
MOV Rn, A Пересылает Аккумулятор в регистр  
MOV Rn, direct Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, в регистр    
MOV Rn, #data Пересылает данные #data в регистр  
MOV direct, A Пересылает Аккумулятор в ячейку внутренней памяти данных, адрес которой задан в команде    
MOV direct, Rn Пересылает регистр в ячейку внутренней памяти данных, адрес которой задан в команде    
MOV direct, direct Пересылает ячейку внутренней памяти данных, адрес которой задан в команде, в ячейку внутренней памяти данных, адрес которой задан в команде    

Продолжение таблицы 1

       
MOV direct, @Ri Пересылает ячейку внутрен-ней памяти данных, адрес которой задан в регистре R0 или R1, в ячейку внутренней памяти данных, адрес которой задан в команде    
MOV direct, #data Пересылает данные #data в ячейку внутренней памяти данных, адрес которой задан в команде  
MOV @Ri, A Пересылает Аккумулятор в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1    
MOV @Ri, direct Пересылает ячейку внутренней памяти данных, адрес которой задан в команде в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1    
MOV @Ri, #data Пересылает данные #data в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1  
MOV DPTR, #data16 Загружает регистровую пару DPTR числом #data 16    
MOVC A, @A+DPTR Загружает Аккумулятор со-держимым ячейки памяти программ, адрес которой вычисляется как сумма содержимого регистровой пары DPTR и Аккумулятора    
MOVC A, @A+PC Загружает Аккумулятор содержимым ячейки памяти программ, адрес которой вычисляется как сумма содержимого счётчика команд PC и Аккумулятора

Продолжение таблицы 1

       
MOVX A, @Ri Загружает Аккумулятор содержимым ячейки внеш-ней памяти данных, адрес которой задан в регистре R0 или R1    
MOVX A, @DPTR Загружает Аккумулятор содержимым ячейки внеш-ней памяти данных, адрес которой задан в регис-тровой паре DPTR    
MOVX @Ri, A Загружает ячейку внешней памяти данных, адрес которой задан в регистре R0 или R1, Аккумулятором    
MOVX @DPTR, A Загружает Аккумулятором ячейку внешней памяти данных, адрес которой задан в регистровой паре DPTR
PUSH direct Записывает ячейку внут-ренней памяти данных, адрес которой задан в команде, в стек    
POP direct Считывает в ячейку внутренней памяти данных, адрес которой задан в команде, из стека
XCH A, Rn Обменивает содержимое Аккумулятора и регистра    
XCH A, direct Обменивает содержимое Аккумулятора и ячейки внутренней памяти дан-ных, адрес которой задан в команде  

Продолжение таблицы 1

       
XCH A, direct Обменивает содержимое Аккумулятора и ячейки внутренней памяти дан-ных, адрес которой задан в команде    
XCH A, @Ri Обменивает содержимое Аккумулятора и ячейки внутренней памяти дан-ных, адрес которой задан в регистре R0 или R1    
XCHD A, @Ri Обменивает содержимое 4-х младших бит Аккуму-лятора и ячейки внутрен-ней памяти данных, адрес которой задан в регистре R0 или R1
Команды работы с битами
CLR C Сбрасывает в 0 флаг переноса    
CLR bit Сбрасывает в 0 бит  
SETB C Устанавливает в 1 флаг переноса  
SETB bit Устанавливает в 1 бит  
CPL C Инвертирует флаг переноса  
CPL bit Инвертирует бит  
ANL C, bit Логическое И флага переноса и бита  
ANL C, /bit Логическое И флага переноса и инверсии бита
ORL C, bit Логическое ИЛИ флага переноса и бита
ORL C, /bit Логическое ИЛИ флага переноса и инверсии бита
MOV C, bit Загрузить флаг переноса из бита  

Продолжение таблицы 1

       
MOV bit, C Загрузить бит из флага переноса    
Команды ветвления
JC rel Переход, если флаг переноса равен 1    
JNC rel Переход, если флаг переноса равен 0
JB bit, rel Переход, если бит равен 1    
JNB bit, rel Переход, если бит равен 0
JBC bit, rel Переход, если бит равен 1 и сброс бита в 0    
ACALL addr11 Вызов подпрограммы по абсолютному адресу  
LCALL addr16 Вызов подпрограммы по длинному абсолютному адресу    
RET   Возврат из подпрограммы  
RETI   Возврат из прерывания
AJMP addr11 Безусловный переход по абсолютному адресу  
LJMP addr16 Безусловный переход по длинному абсолютному адресу  
SJMP rel Безусловный переход по относительному адресу  
JMP @A+DPTR Безусловный переход по адресу, равному сумме содержимого DPTR и Аккумулятора  
JZ rel Переход, если Аккуму-лятор равен 0  
JNZ rel Переход, если Аккуму-лятор не равен 0  

 

Продолжение таблицы 1

       
CJNE A, direct, rel Сравнивает Аккумулятор и ячейку внутренней памяти данных, адрес которой задан в команде, и переходит по относительному адресу, если они не равны    
CJNE A, #data, rel Сравнивает Аккумулятор и данные #data и переходит по относительному адресу, если они не равны    
CJNE Rn, #data, rel Сравнивает регистр и дан-ные #data и переходит по относительному адресу, если они не равны
CJNE @Ri, #data, rel Сравнивает ячейку внут-ренней памяти данных, адрес которой задан в регистре R0 или R1, и данные #data и переходит по относительному адресу, если они не равны    
DJNZ Rn, rel Декрементирует регистр и переходит по относитель-ному адресу, если регистр не равен 0  
DJNZ direct, rel Декрементирует ячейку внутренней памяти дан-ных, адрес которой задан в команде, и переходит по относительному адресу, если она не равна 0  
NOP   Нет операции    

 

В системе команд обычно выделяется пять групп команд: пересылка кодов; выполнение арифметических операций; выполнение логических операций; передача управления; команды ввода-вывода и специальные.

Команды пересылки кодов предусматривают передачу 8-разрядного кода из регистра в регистр, из регистра в ячейку памяти и обратно, загрузку содержимого второго байта команды в регистр или ячейку памяти. В ряде команд обеспечивается передача 16-разрядного кода из двух ячеек памяти в регистровую пару и обратно, в том числе с использованием области памяти, отведенной под стек. Предусмотрены загрузка регистровой пары содер­жимым второго и третьего байтов команды и обмен данными между регистровыми парами, а также регистровой парой и ячейками стековой памяти.

Команды выполнения арифметических операций обес­печивают сложение и вычитание 8-разрядных чисел, одно из которых находится в аккумуляторе, с помещением результата в аккумулятор. Второе число, участвующее в этих операциях, может задаваться различными режима­ми адресации (регистровой, косвенной, непосредствен­ной). При выполнении некоторых команд сложения и вычитания предусмотрена возможность учета переноса C, что позволяет организовать обработку многобайтовых чисел отдельными частями. Все команды сложения и вы­читания 8-разрядных чисел формируют полный набор признаков результата.

Имеется возможность выполнения сложения 16-раз­рядных чисел с использованием регистровых пар. В этом случае результат фиксируется в регистровой паре и формируется только признак переноса C. Ряд команд позволяет изменить на единицу в сторону увеличения или уменьшения содержимое регистра, регистровой пары, ячейки памяти М. В результате выполнения этих команд признаков переноса не формируется, а остальные при­знаки формируются только в операциях с 8-разрядными числами. В этой группе команд особое место занимает команда десятичной коррекции, предусматривающая преобразование содержимого аккумулятора. В связи с тем, что это преобразование основано на выполнении арифметических операций над содержимым полубайтов аккумулятора, то команда отнесена к данной группе.

Команды выполнения логических операций преду­сматривают реализацию наиболее распространенных ло­гических операций над двумя 8-разрядными кодами, один из которых расположен в аккумуляторе, другой задается различными режимами адресации с помещением результата в аккумулятор. Среди этих операций – логическое умножение, логическое сложение, сложение по модулю 2. Имеется команда инвертирования содержимого аккумулятора без формирования признаков результата. В эту же группу команд отнесены команды инвертирования признака переноса и запись в качестве этого признака единич-ного значения, а также команды поразрядного сдвига содержимого аккумулятора влево и вправо на один разряд (с двумя вариантами формиро­вания признака переноса C).

Группа команд передачи управления обеспечивает возможность изменения порядка выполнения команд в программе. Среди них команда JMP addr передает управление по адресу, задаваемому вторым и третьим байтами команды. Команда вызова подпрограммы CALL addr также передает управление по адресу, заданному вторым и третьим байтами, но с одновременной записью в стековую память текущего значения PC, что дает воз­можность возвратиться к прерванной программе. Этот возврат может быть произведен с помощью команды RET, восстанавливающей содержимое PC считыванием его из стековой памяти. Имеются команды, которые выполняют передачу управ­ления, вызов подпрограммы или возврат из нее только в случае выполнения условия (cond), задаваемого соот­ветствующим признаком.

В последней группе команд имеются две команды, обеспечивающие ввод-вывод информации через аккуму­лятор. Второй байт этих команд позволяет адресовать до 256 (или более) устройств ввода и столько же устройств вывода. В этой группе имеется также несколько специальных команд. Команды, управляющие состоянием триггера Tint, обеспечивают программное разрешение или запрет режима прерывания. Команда NOP не задает выполнение операции, она позволяет перейти к очередной команде с задержкой на несколько тактов. Данная группа команд также не влияет на признаки.


Дата добавления: 2015-08-10; просмотров: 87 | Нарушение авторских прав


Читайте в этой же книге: Построение блока ЗУ требуемой разрядности | Увеличение числа хранимых слов ЗУ | Аппаратные особенности построения динамических ОЗУ | ССЫЛКИ В ИНТЕРНЕТЕ | Применение ППЗУ в качестве ПЛИС | Программируемая матричная логика | Программируемые логические матрицы | Микропроцессор. Основные термины и определения | Классификация МП | Структура типового МП |
<== предыдущая страница | следующая страница ==>
Арифметико-логические устройства| Периферийные устройства микропроцессорных систем

mybiblioteka.su - 2015-2024 год. (0.009 сек.)