Вопрос 1.7.6. Система команд МП

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

· команды пересылки данных:

· команды пересылки данных внутри МП (MOV, PUSH, POP, XCHNG и т.д.);

· команда ввода-вывода (IN, OUT);

· операции с флагами;

· операция с адресами (LEA, LDS и т.д.);

· арифметические команды:

· основные (сложение, вычитание, умножение, деление);

· дополнительные (INS, DEC и др.);

· логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание равнозначности и др.);

· команды обработки строковых данных (пересылка, сравнение, сканирование, слияние/разделение и др.);

· команды передачи управления (безусловный переход, условный переход, прерывания, переход с возвратом);

· команды управления ("нет операций", "внешняя синхронизация" и т.д.).

· каждая команда имеет большое число модификаций, чаще всего определяемых режимом адресации данных (операндов).

Команды обращения к памяти

Команда: LOAD REGISTR (загрузка регистра)

Символическая форма: LDR r

Рисунок 1.7.4.

Описание: (М[< B2 > < B3 > ])r

Содержимое ячейки памяти передаётся в общий регистр r.

Старшие 8 разрядов адреса ячейки берутся из второго байта команды, а младше 8 разрядов - из третьёго байта.

Программирование на машинном язык. Программа должна быть представлена в той форме, в которой её воспринимает машина. В частности, команды должны быть представлены в виде последовательностей из нулей и единиц, поскольку это единственная понятная ЭВМ форма. Однако выписывать длинные последовательности из нулей и единиц довольно утомительно. Поэтому при записи команд применяется более удобная шестнадцатеричная система.

Например, трёх битовая команда иллюстрированного процессора, загружается в аккумулятор содержимое ячейки памяти с адресом 0110 1111 1101 имеет вид

в шестнадцатеричных обозначениях эта команда запишется так

6F

DB

Двоичное и шестнадцатеричное представление машинного языка неудобно и ненаглядно для человека. Поэтому, как правило, команды представляются в символической форме - используются легко запоминаемые мнемонические обозначения команд. Например предыдущую программу можно записать в виде

LDR 0

6F

DB

Второй и третий байты по-прежнему записаны шестнадцатеричными цифрами, и аккумулятор задан своим номером среди общих регистров, равным 0. Однако операция обозначена трёхбуквенным мнемоническим именем LDR.

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

Таблица 1. Пример программы: "прибавить константу к числу в памяти и записать результат снова в память"

Рисунок 1.7.5.

Прежде всего, подаётся прежний импульс на линию "сброс" БУ, по которому на программный счётчик устанавливается 0. Затем подаётся импульс на линию "пуск" БУ, и начинается выполнение программы. Выбираются 3 байта, составляющие первую команду, и программный счётчик увеличивается на 1 после выборки каждого байта. Первая команда пересылает содержимое ячейки памяти 000А в аккумулятор. Поскольку программный счётчик подвинулся на 3 единицы, он теперь содержит 0003. Это адрес следующей команды - загрузки регистра с непосредственным адресом. Команда содержит в себе операнд и удобна для задания константы. Её выполнение приводит к засылке значения 3С, содержащегося во втором байте команды, в общий регистр 1. Теперь программный счётчик содержит 0005, т.е. адрес третьей команды. Её выборка и выполнение приводит к прибавлению содержимого регистра 1 к содержимому аккумулятора и занесению суммы в аккумулятор. Следующая команда передаёт содержимое аккумулятора в ячейку памяти 000В. последняя команда останавливает микропроцессор.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: