Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МвСУ_16.11.2011.doc
Скачиваний:
12
Добавлен:
01.04.2025
Размер:
7 Мб
Скачать
☆

4.2 Способы адресации и система команд микроконтроллеров семейства mcs-51

Система команд семейства MCS-51 ориентирована на организацию гибкого ввода-вывода данных через универсальные порты Р0…Р3 и первичную обработку информации.

Разработчик изделия работает с системой команд при создании программы на языке ассемблера.

Каждая команда сообщает процессору выполняемую операцию и методы доступа к операндам. Командная строка языка ассемблер содержит метку (символический адрес), мнемонику (символическое имя) команды, операнды, комментарий. Имя команды однозначно связано с выполняемой ею операцией (действием). Число операндов в разных командах МК MCS-51 находится в диапазоне от нуля до трех, операнды разделяются запятыми. При двух операндах первым указывается приемник, вторым источник.

Методы адресации представляют собой набор механизмов доступа к операндам.

Регистровая адресация. Операнд находится в одном из регистров общего назначения R0..R7 банка, номер которого определяется разрядами RS0, RS1 регистра PSW. Регистровая адресация позволяет в одном байте указать код операции и адрес операнда. Поскольку операнд находится во внутренней ячейке, не требуется циклов обращения к внешней памяти данных, например, команда пересылки, имеет следующий вид: MOV A, Rn.

Прямая адресация. Операнд находится во внутренней памяти данных, адрес ячейки определяет отдельный байт команды. Таким образом, команды с использованием прямой адресации имеют минимум два байта, доступны только 256 ячеек, обращения за операндом к внешней памяти не требуется.

Косвенно-регистровая адресация. Этот метод адресации использует регистры R0 и R1 в качестве указателей. Регистры берутся из банка, определяемого разрядами RS0, RS1 регистра PSW. Содержимое этих регистров используется как адрес для обращения к ячейке внутренней памяти данных, хранящей операнд. Команда получается однобайтной, номер регистра указывает младший бит. Длина команды при этом соответствует длине команды с использованием регистровой адресации, но косвенная адресация дает доступ ко всему пространству внутренней памяти данных. Формат команды пересылки с использованием косвенно-регистровой адресации: MOV A, @R1.

Непосредственная адресация. Операнд находится в отдельном байте команды, это константа. Таким образом, команды с использованием непосредственной адресации имеют минимум два байта, обращения за операндом к внешней памяти не требуется. Формат команды пересылки имеет следующий вид MOV A, #data.

Всего в системе команд семейства MCS-51 можно выделить 5 групп операций.

Арифметические операции, такие как ADD, ADDC, SUBB, MUL, DIV, INC, DEC обеспечивают выполнение операций сложения и вычитания (в том числе с учетом переноса) над целочисленными 8-разрядными операндами, умножение, деление, инкремент и декремент регистров и ячеек внутренней памяти данных соответственно. Получающийся 16-разрядный результат хранится в регистрах А и В. Результатом выполнения арифметических команд является, кроме нового содержимого аккумулятора, измененное значение регистра PSW.

Логические операции конъюнкции (И), дизъюнкции (ИЛИ), Исключающее ИЛИ реализуются с помощью команд ANL, ORL, XRL, использующих различные способы адресации операндов. Логические операции выполняются побитно над соответствующими парами битов операндов, которые располагаются в регистрах или внутренней памяти. Результат операции размещается в аккумуляторе или прямо - адресуемой ячейке внутренней памяти.

Операция инверсии реализуется только над содержимым аккумулятора и выполняется с помощью команды CPL A. Команда CLR A устанавливает нулевое значение содержимого аккумулятора. Выполнение некоторых логических команд влияет на значение флага С (перенос) регистра PSW.

Операции пересылки данных осуществляют передачу данных между ячейками внутренней памяти данных (команды MOV), внешней памяти данных (команды MOVX) и аккумулятором. Существуют две команды MOVC, позволяющие читать в аккумулятор содержимое памяти программ. К этой группе относятся парные команды PUSH и POP, осуществляющие загрузку и выгрузку содержимого прямо адресуемой ячейки в стек (из стека). Имеются четыре команды взаимного обмена информацией между ячейками внутренней памяти данных (ХСН и XCHD). Команды пересылки данных значения флагов в регистре PSW не изменяют.

Операции работы с битами – эти команды устанавливают в «1» (SETB) или «0» (CLR) прямо адресуемый бит внутренней памяти данных, изменяют его значение на противоположное (CPL), выполняют операции AND и OR над флагом переноса С и прямо адресуемым битом (ANL и ORL), осуществляют пересылку значения между флагом С и прямо адресуемым битом (MOV), осуществляют передачу управления по состоянию флага С или прямо адресуемого бита (JC, JNC, JB, JNB, JBC). Команды этой группы, выполняющие логические операции и осуществляющие пересылку значения бита, изменяют значение флага С регистра PSW. Остальные команды на флаги не действуют.

Передача управления может осуществляться безусловно или по условию, без возврата или с возвратом. В последнем случае для возврата необходимо хранить состояние процессора. Система команд MCS-51 кроме обычных «длинных» переходов с использованием 16-разрядного адреса унаследовала от семейства MCS-48 команды передачи управления с «коротким» 11-разрядным адресом. Группа команд передачи управления включает четыре команды безусловного перехода без возврата («ультракороткая» SJMP, «короткая» AJMP, «длинная» LJMP и переход по значению A+DPTR в команде JMP), две команды безусловного перехода с возвратом («короткая» ACALL и «длинная» LCALL), восемь команд условного перехода без возврата. Имеются две команды возврата: из обычной подпрограммы команда RET и из подпрограммы обработки прерывания команда RETI. Завершает эту группу и всю систему команд NOP - «нет операции». Команды передачи управления значения флагов в регистре PSW не изменяют, кроме команд условного перехода CJNE, влияющих на значение флага С.