Микропроцессор имеет базовую систему команд, в состав которой входят следующие группы:
· команды пересылки данных:
· команды пересылки данных внутри МП (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В. последняя команда останавливает микропроцессор.