Микропроцессоры (Глава 14 книги "Роботы и автоматизация производства"), страница 10

Любой язык ассемблера или машинный язык включает следующие элементы.

1. Адрес команды, который описывается последовательностью двоичных цифр (на машинном языке) или меньшим количеством шестнадцатеричных (на языке ассемблера); адресом определяется ячейка памяти (ПЗУ или ЗУПВ), соответствующая этой команде. Определенный адрес на языке ассемблера может быть представлен через буквенно-цифровые символы.

2. Код операции, представляющий собой небольшие последовательности двоичных цифр (машинный язык) или две-три буквы латинского алфавита (иногда числа), образующие мнемонический код (язык ассемблера), которым определяется функциональное назначение соответствующей команды; код операции грамматически обычно определяется как глагол. Ниже приведены примеры мнемонических кодов1 на языке ассемблера: SUB — subtract (вычесть); MPY —multiply (умножить); STR —store (сохранить в памяти).

3. Операнд(ы). Число (числа) как адрес(а), представленные в двоичном коде (на машинном языке) или в шестнадцатеричном коде (на языке ассемблера), используемые в дальнейшем, определяют функцию команды; обычно операнд может быть интерпретирован как объект, над которым глагол, представленный в коде операции, должен совершить определенное действие. На языке ассемблера операнды могут быть представлены буквенно-цифровым символом вместо абсолютного адреса или числовой константы.

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

CHKI LDA ROBOT — код операции LDA в мнемоническом виде, входящий в состав команды, означает «Загрузить в регистр Л». В ячейке памяти, обозначенной символическим адресом ROBOT, содержатся данные, предназначенные для загрузки в регистр А. CHKI представляет собой символический адрес команды.

SLA 7 — содержимое регистра Л смещается влево на семь двоичных разрядов. Стираются семь цифр в старших разрядах. Семь старших разрядов справа заполняются двоичными нулями.

JNZ ROUT1 —переход к ROUT1 для исполнения следующей по порядку команды при условии, что содержимое регистра Л не равно нулю.

El — разрешение прерывания; эта команда разрешает прервать работу центрального процессора для исполнения специальной операции. Прерывание может произойти в любой момент, когда возникает такая необходимость, подтверждаемая сигналом, сформированным по условию прерывания.

DI —запрет прерывания; центральный процессор при этой команде будет игнорировать прерывания (до тех пор, пока не будет введена команда EI). При этом центральный процессор обеспечивает исполнение некоторых операций с высоким уровнем приоритета.

JMP IDLE — безусловный переход к ячейке памяти, обозначенной символически IDLE, для исполнения следующей команды.

Как можно видеть из примера 14.2, программирование на языке ассемблера требует детализации и является утомительной процедурой по сравнению с языками Бейсик и Фортран. Однако манипуляция с логическими двоичными разрядами представляет собой связанную детализированную процедуру. Хотя для обработки данных на ЭВМ удобно применять языки компилятора, любой значительный отход от двоичной системы счисления может создать такое же количество проблем, как и при обработке логических переменных в случаях использования промышленных роботов и автоматизированного производственного оборудования. Кроме того, язык ассемблера в ряде случаев может обеспечить некоторую экономию вычислительной мощности ЭВМ вследствие близости к машинному языку.