Общая структура микропроцессорной системы. Развитие фон-Неймовской архитектуры. Микроконтроллеры средней серии Microchip. Программирование микроконтроллеров Microchip средней серии, страница 3

13.) CMP <A, … , M> – команда сравнения

При выполнении команды происходит вычитание из содержимого А второго операнда, меняется содержимое регистров признаков, а разность вычитаний не запоминается.

Циклические сдвиги

1.)  RLC – циклический сдвиг влево

2.)  RAL – сдвиг влево с переносом

3.)  RRC – циклический сдвиг вправо

4.)  RAR – сдвиг вправо с переносом

Все команды имеют варианты с непосредственной адресацией, т. е. когда после кода команды идет операнд в виде константы.

Команды передачи управления

Бывают следующих типов:  переход, переход, вызов подпрограммы и возврат из подпрограммы. Команды бывают условные и безусловные. Безусловная команда выполняется всегда, а условная выполняется только при определенном значении заданного бита в регистре признаков. В противном случае команда игнорируется процессором, и начинает извлекаться и исполняться следующая команда.

Переход

Вызов подпрограммы

Возврат из подпрограммы

Безусловные

JMP

CALL

RET

Условные

Ноль

Не ноль

JZ

JNZ

CZ

CNZ

RZ

RNZ

Перенос

Копирование

JC

JNC

CC

CNC

RC

RNC

Положительное

Отрицательное

JP

JM

CP

CM

RP

RM

Четное

Нечетное

JE

JO

CE

CO

RE

RO

 Команды CALL и RET применяют при обращении к подпрограммам  - многократно повторяющимся частям основной программы. Каждый раз, когда процессор получает для исполнения команду CALL, содержимое счетчика команд заносится в стэк, а управление передается по адресу, указанному в двух- и трехбайтной команде. Команда RET  загружает в счетчик команд данные из стэка. Таким образом, управление передается основной программе.

Управляющие команды

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

DI – запрет прерываний

EI – разрешение прерываний

RST – вызов прерывания

NOP – команда редактирования

HLT – остановка программы

Программирование на языке Ассемблера

Этапы развития программы:

1.  анализ задачи

2.  разработка блок-схемы

3.  разработка программы на Ассемблере

4.  трансляция в машинный код

5.  запуск на решение и отладка

6.  документирование

1 – Формализация технического задания (формулы, схемы вычислений, сети Петри, диаграммы состояний). В зависимости от сложности задачи должна быть выбрана платформа (ПК, кластер, микроконтроллер, центральный процессор, и т. д.).

2 – По алгоритму основная задача разделяется на ряд более простых задач (программа разделяется на подпрограммы). У каждой подпрограммы должна быть только одна точка входа и одна точка выхода. Необходимо принять решение о том, каким образом будут передаваться аргументы, а каким образом будут получаться результаты (через регистры, через таблицы памяти или через стэк). Полученные подпрограммы могут быть также разделены на подпрограммы более низкого уровня. Так делается до тех пор, пока алгоритмы каждой подпрограммы не станут очень простыми и понятными.

Например:

Необходимо сложить два числа из памяти, результат разместить в памяти.

Такая блок-схема не содержит адекватных деталей, которые позволяют перевести ее в сегмент программы на Ассемблере или на машинном языке.

Каждому блоку такого алгоритма соответствует команда на Ассемблере, поэтому его очень просто перевести в программу.

3 – Составляются в виде таблиц, колонки которых имеют следующие значения: